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

Should I be using scripting in this circumstance?

本文关键字:脚本 这种情况下 我应该      更新时间:2023-10-16

我正在写一个游戏。它在c++中是一个direct x,我想我正在制作自己的引擎,因为我正在从winproc开始编程。

我已经取得了很大的进步,比如声音、碰撞检测、特定于我游戏设置的人工智能、从瓷砖上创建动态图形。

在对事件编程做了一些研究之后,我被告知要"编写脚本"。我已经对此进行了研究,据我所见,脚本是用来让非程序员添加到项目中的。

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

因此,我想听听经验丰富的程序员的意见,也许还有现实世界中与我的情况有关的例子,为什么我应该或不应该在游戏中使用脚本?

NPC和怪物数据需要能够包含一些简单的逻辑,比如"如果玩家有这个物品"、"如果玩家去过某个地方"、"是否玩家从右边过来"等等。为此,你需要能够定义一些组合的动作和条件。这被称为脚本,最好通过结合一些现有的脚本语言解释器来完成,比如Lua、Python、JavaScript的一些变体等等。

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

  1. 构建时间

    可以快速测试新的数据文件/脚本文件。这个特定的引擎不支持它,但有些引擎允许在游戏运行时重新加载脚本文件。你在构建-部署测试周期中迭代的次数越多,你就越能在推特上发布你的游戏,最终得到一个更好的游戏。

  2. 表达能力

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

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

  • 它给你一种简单的语言
  • 没有受过训练的人更容易接触到它
  • 它可以在运行中编译,热在运行时交换

对于许多大型球队的高端比赛来说,这些项目非常重要。但这实际上取决于你的发动机的目标。如果你不考虑共享你的引擎,只计划自己开发游戏,那么脚本确实会失去一些好处。添加脚本语言也有一些缺点。

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

只要您仍然有数据驱动的设计(将统计数据和类型保存在单独的文件中,这些文件可以在运行时交换),您就可以保留热交换数据以进行快速迭代的能力。

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

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