立即登录

Python集成进新游戏引擎的一些经验和经验分享!

09/11 04:41:54

利用Python进行游戏脚本编程,不愧是最强的脚本语言

使用脚本语言可以更加快速地开发游戏逻辑,而不必担心由于 C++ 程序员的粗心大意所造成的后果。使用已有的脚本语言可以节省开发新型自定义语言的时间和开销,并且这些语言通常要比自己创造的语言更加的强大。

当然小编这里有一份Python学习资料,加群:700341555即可免费领取!

利用Python进行游戏脚本编程,不愧是最强的脚本语言!

Python 对于游戏脚本语言来说是一种不错的选择,它很强大,容易嵌入使用,能够无缝地使用 C/C++ 进行扩展,包含很多脚本语言所具有的高级特性,并且它可以用来实现自动化过程[TR1: automating production]。另外,关于 Python 的书籍、开发工具 和 库 很丰富,使得我们很容易从其他开发者那里受益。

下来就谈一谈我们在 Humongous 娱乐公司将 Python 集成进新游戏引擎的一些经验。说明我们选择 Python 的原因、获得的收益、遇到的问题,以及我们是怎样解决它们的。

为什么要使用脚本语言

C++ 是一种强大的语言,并且是 C 语言的巨大改进,但它并不是完成所有任务的最佳选择。C++ 非常强调运行时性能 [Stroustrup94],譬如,假如一个语言特性使得程序跑起来变慢,那么这个特性便不会加入 C++ 语言中。C++ 程序员也因此背负了很多的限制和烦恼。

这里列出一些限制,C++ 程序员经常遭遇这些事情但很少注意它们的存在:

C++ 是静态的写游戏辅助用什么语言,而脚本语言是动态的。简单地说,C++ 的程序运行地很快,但是脚本语言能让你编码更快。

所以,C++ 应该只用在你希望优化运行时性能的地方。现在计算机的运行速度都足够快辅助卡盟,对于大多数代码来说性能都不是问题。如果你用 C++ 开发那些用脚本语言也能实现的程序,那么你是在错误的事情上进行优化。

SCUMM 的问题

Humongous 公司已经使用 SCUMM (Script Creation Utility for Maniac Mansion) 创造了 50 多个游戏。SCUMM 是一个强大的 冒险游戏 开发语言,但是它有一些局限性。SCUMM 是十多年前写的,它缺少一些现代语言的特性。

辅助写语言游戏用哪个软件_辅助写语言游戏用什么软件_写游戏辅助用什么语言

尽管 SCUMM 有持续的补丁和维护,它也没有办法像其它语言一样健壮和有完备的功能了。

为什么选择 Python

我们有过创造一种新型的、现代的 私有语言的想法,但最终明智地放弃了这种想法。我们的职责是在做游戏,而不语言。

我们在每年花费大量开销维护一套私有工具的情况下,确实希望使用一种已有的脚本语言而不是重新创造一种。使用已有语言更快地投入工作,花费更少的开销,并且通常情况下要比我们创造的好,并且以后会发展地更好,即使我们不用它工作。

一旦我们决定要使用已有的脚本语言,就需要从中选择一种。我们需要一种支持 面向对象编程,并且能嵌入到我们游戏中的语言,而且它不存在任何技术和许可授权上的问题。

我们考虑了 Lua [Lua01] 和 Python [Python02],这两种语言已经被应用在某些游戏中了。

Lua 较小,更加容易嵌入到应用程序中,并且有一些很棒的语言结构。但是,那时我们发觉 Lua 的文档有些粗略,这大概是因为 Lua 是比 Python 更新的语言。

Python 比 Lua 有更多的扩展模块,更多的参考书籍,并且 stackless Python [Tismer01] 很适合为对象 AI 创建微线程[TR3: micro-threads]。最后我们没有选择 Python 的 stackless 版本,但开始用 Python 写自动生成脚本,这给了我们继续使用 Python 的动力。当了解了 Python 后,我们喜欢上了它的语法,最后选择了它。

在我们决定之后,这两种语言都发生了改进:Lua 已经变成 stackless,而 Python 有了生成器,这个能提供一些相似的功能。现在任何一种都是安全的选择。

谁在游戏中使用了 Python

Python 已经被使用在很多游戏中,包括:

还有很多其它的游戏写游戏辅助用什么语言,只是我们很难确认,例如至少有一个 PS2 游戏使用了 Python。

同时 Python 也至少用在两个游戏引擎中:

一个生成脚本示例

下面是一段 Python 代码示例,它是一个递归生成所有 VC++ 工作区的简单生成脚本。它只有以下几行:

源码打印?

最新资讯