为游戏引擎制作API或脚本语言?

时间:2016-06-12 06:01:03

标签: java customization game-engine

我目前正在java和游戏中编写一个非常简单的2.5D游戏引擎。这基本上只是我正在进行的一个有趣的项目,所以实现功能所需的时间是没有问题的,因为我可以随时把它放在一边并随时处理它。话虽如此,我计划实现一种自定义脚本系统。基本上,引擎将是2.5D游戏的外壳,可以通过简单的脚本进行修改和扩展。到目前为止,我对如何解决这个问题有如下看法,但我不确定什么是实用的。

  1. 编写一个非常简单的脚本语言和一个简单的解析器,它检查脚本的文件夹并运行它们。
  2. 创建一个java库/ API,允许您通过普通的旧java来修改客户端和服务器上的部分游戏
  3. 使用已经创建的非常简单的语言,例如lua,用于游戏的可扩展部分
  4. 我真的认为选项1是我想做的事情,但我从来没有真正做过这样的事情,我想知道是否有人可以推荐我应该做的事情。如果我选择编写一种简单的语言,我只是在寻找关于这些主题的一些材料或文档,我只想看看人们如何编写基本的编译器/解释器?

1 个答案:

答案 0 :(得分:1)

简短的回答是2,请使用API​​。这是向游戏引擎添加或更改功能的最简单方法。

创建自己的脚本语言和解析器对每个开发人员都很有吸引力。这是一次很棒的学习经历,但这也是一个缺点。当您开始编写脚本并且结果不是您所期望的时,您不知道该错误是在您的脚本中还是在解析器中。您将需要来自解析器的一些调试信息,可能是一些堆栈跟踪,即使是非常简单的脚本语言也可能开始接管您的项目。当您开始编写脚本时,您可能会感到受到缺少的功能的限制,您习惯于编写Java代码并且可能开始扩展脚本语言。

创建自己语言的一些缺点也适用于所有现有语言。如果你真的需要一种非常自由的方式来扩展你的游戏引擎,你可以选择那条路,但我不推荐它。您仍然有可能将重点从游戏引擎转移到脚本实现。

考虑它的一种方式也来自mods观点的作者。他们想要用新的脚本语言,现有的脚本语言还是用java编写?答案很可能是java,可能不是一种新语言。