我应该在这种情况下使用脚本吗?

时间:2011-05-23 10:43:33

标签: c++ scripting

我正在写一个游戏。它在c ++中是一个直接的x,我想我正在创建自己的引擎,因为我是从winproc编程的。

我已经取得了很多进步,例如声音,碰撞检测,特定于我的游戏设置的AI,从平铺表创建动态图形。

在对事件编程进行一些研究后,我被告知要“编写脚本”。我已经研究了这个,并且据我所知使用脚本编写,所以非程序员可以添加到项目中。

我是一名优秀的程序员,除了图形或地图设计等外部事物外,我无意让其他人参与游戏。我已经有了一个函数,我可以从csv文件中读取地图。这些不仅包含瓷砖布局,还包含npc数据,入口/出口。其他相同性质的文件控制怪物和项目数据,这样我就可以在不重新编译的情况下更新内容。

所以我要求有经验的程序员的观点,以及可能与我的情况有关的现实世界的例子,为什么我应该或不应该在我的游戏中使用脚本?

4 个答案:

答案 0 :(得分:1)

NPC和怪物数据需要能够包含一些简单的逻辑,例如“如果玩家有这个项目”,“如果玩家已去过某个地方”,“如果玩家是从右边进来”等等。为此,您需要能够定义一些组合的动作和条件。这称为脚本,最好通过合并一些现有的脚本语言解释器,如LuaPython,JavaScript的某些变体,等等。

答案 1 :(得分:1)

在游戏中使用脚本系统有几个原因,不仅如您所指出的那样,允许非程序员添加游戏内容。我在专业上工作的第一个游戏是使用脚本系统,而编写脚本的唯一人是创建脚本系统的程序员。他们使用它有两个原因:

  1. 构建时间

    可以快速测试新数据文件/脚本文件。这个特定的引擎不支持它,但有些允许在游戏运行时重新加载脚本文件。您可以越多地遍历构建 - 部署 - 测试周期,您就能越多地调整游戏并最终获得更好的游戏。

  2. 表达力

    一个custimized脚本系统可以让您轻松表达/编码传统编程中繁琐的概念。例如,我正在使用的游戏引擎现在允许我轻松控制脚本中的并发动画。

答案 2 :(得分:0)

明确添加脚本。它是一个重新编译整个游戏的皮塔饼,只是因为你的玩家造成的伤害为0.8而不是1.0。此外,如果你想在某些情况下打开一扇门,你需要它definitfly。我会用脚本语言完成大部分游戏,它更灵活。

大牌正在使用脚本语言。例如,Eve Online是用无堆栈python编写的。其他示例可在此处找到:http://wiki.python.org/moin/PythonGames

答案 3 :(得分:0)

我不认为在您的情况下编写脚本是完全必要的。添加脚本支持引擎的好处已在此页面上下列出。

  • 它为您提供了一个简单的语言来处理
  • 没有经过培训的人更容易接触
  • 它可以即时编译,热门 在运行时交换

对于大型团队的大量高端游戏而言,这些项目非常重要。但它真的归结为你的引擎的目标。如果您不考虑共享您的引擎并计划仅仅自己处理游戏,那么脚本确实会失去一些好处。添加脚本语言也有一些缺点。

  • 为引擎添加复杂性和创建时间
  • 增加调试时间,即使脚本语言有一个很棒的调试器,在两种语言之间切换也不会顺利。

只要您仍然拥有数据驱动设计(将统计信息和类型保存在可在运行时换出的单独文件中),您就可以热插拔数据以进行快速迭代。