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

本文探讨了为何使用脚本语言而非C++进行游戏开发,特别是选择了Python作为游戏脚本语言的原因,如其强大的功能、丰富的库支持、易嵌入性和面向对象特性。文章详细介绍了Python在游戏开发中的应用,包括游戏引擎的集成、脚本的编写,以及Python与C++的结合使用。此外,还讨论了Python在游戏脚本中的优势,如内存管理、性能和代码可读性,以及如何解决与多语言开发相关的挑战。
摘要由CSDN通过智能技术生成

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

对Python感兴趣或者是正在学习的小伙伴,可以加入我们的Python学习扣qun:784758214,从0基础的python脚本到web开发、爬虫、django、数据挖掘数据分析等,0基础到项目实战的资料都有整理。送给每一位python的小伙伴!每晚分享一些学习的方法和需要注意的小细节,学习路线规划,利用编程赚外快。点击加入我们的 python学习圈

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

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

为什么要使用脚本语言

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

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

  • 手工管理内存:C++ 程序员的大量时间都花在考虑调用 delete 的适当时机。
  • 链接过程:C++ 模块(在编译时或加载时)链接在一起,因此在运行时,无需进行的函数地址的解析。这提高了运行时的性能,但是却使 编辑/测试 周期变长了。
  • 缺乏自省能力 [TR2: introspection]: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 已经被使用在很多游戏中,包括:

  • ToonTown - http://www.toontown.com/
  • EveOnline - http://www.eve-on
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值