一般游戏(RTS)脚本基础知识

时间:2011-04-13 22:09:03

标签: c++ loops scripting

我已经参与了几个关于如何将脚本集成到游戏中的教程和链接 - 但是大多数这些都没有在我的过程中尽早开始。我试图围绕有效脚本游戏的基本结构。以下是基础知识:

我正在用C ++开始一个基本的2d RTS游戏。游戏和图形的机制非常标准/简单,相比标准RTS,逻辑和数据将非常复杂。显然,我有很多计划要做 - 实际上,重点是学习C ++,脚本,游戏编程基础而不是实际完成我的项目。

我正在试图弄清楚我的项目的哪些元素应该通过脚本来处理,哪些元素应该包含在我的核心“游戏引擎”中。

例如,所有强大的“游戏循环” - 我是用C ++编程的,作为引擎的一部分,还是我的“引擎”只是我用来显示图形的东西(瓷砖,字符等等......) ),处理大量数据和类似的任务 - 这些类被“插入”游戏循环,这是脚本化的吗?

我想使用C#作为一种脚本语言,从我所读到的它提供了良好的速度,同时仍然允许在VS中开发,我喜欢。但实际上,我更关心它是如何设置的,更多的是从伪代码级别而不是实际编码。当我到达这一点时,我可以使用大量资源,我只是在寻找有关如何构建整个事物的建议。

任何教程,资源,建议将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:1)

本书Programming Game AI By Example非常棒,触及游戏循环,使用脚本(如LUA)以及大量与您特别相关的内容示例。

顺便说一句,可能相关的是Unity3D游戏引擎,它允许您使用C#进行脚本编写。还有Garage Games引擎,包括可以帮助你创建RTS类型游戏的game builder kits,我相信你也可以使用C#编写Torque代码。

答案 1 :(得分:1)

icnivad对编程游戏AI by by Example的推荐是一个很好的建议,它充满了实用信息。

就实际引擎而言,Unity完成了这项工作,并允许您使用C#编写脚本,但是对于想要学习基本知识的人,例如您自己,可能会隐藏太多并且做得太多为了你。 Irrlicht是一个非常可靠的C ++引擎,有很多tutorials可以帮助你入门;它还有一个非常清晰的界面和一个非常活跃的社区。就你想用C ++编写的内容以及你想要编写脚本的内容而言,我建议你仔细看看你真正需要编写脚本的内容 - 如果你需要编写任何脚本。你可以用C ++编写整个东西,它具有更容易调试的优点。说到这一点,如果你还是C ++和游戏开发人员的新手,你可能最初只想坚持使用C ++(如果没有,请忽略它)。

“可调试性”是你应该注意的事情之一,因为通常很难同时调试C ++和脚本代码(当你来回穿梭数据和指令时)。也就是说,一旦你的框架启动并运行,实现新功能和调整内容就可以轻而易举。

您可能希望将Lua看作脚本语言,因为它非常适合游戏脚本。 Luabind,一个流行的C ++和Lua绑定库,非常易于使用。 SWIG也可用(最近在GameDev.net的博客上弹出了一个短tutorial)。

无论您选择哪种脚本语言(如果有的话),请确保首先使用它们处理一些单独的玩具程序。习惯了语言并随意使用它。然后尝试使用最小C ++的小程序< - >脚本互操作。一次只做几步,这样你就可以发现错误并注意哪些有效,哪些有效。一旦您准备开始将脚本集成到游戏中,请在执行之前只执行一步并将其测试为死。说到这一点,请确保您还计划首先将脚本连接到纸上游戏的方式和位置 - 这样可以使事情变得更加容易。

通常,你会想把所有繁重的工作放在C ++的肩上(比如游戏循环,图形,寻路等)。我发现脚本通常最适合配置文件,AI字符的行为代码,UI和事件处理等。基本上,如果你要调整/改变一些东西,或者你希望其他人能够改变一些东西,它就是脚本的候选者(没有重新编译获胜!)。请记住,很大程度上取决于您的特定游戏 - 如果脚本太慢(使用您的探查器检查),太麻烦等等,不要害怕在C ++中执行它并从脚本中调用它或只是完全用C ++完成。

希望有所帮助!