在第一模块的基础知识中,我已经讲过开发一款游戏需要的一些背景知识。对于2D游戏和3D游戏的区别、从程序到美术、从2D、伪3D到3D等方面,我都进行了逐一地阐述。除此之外,对于任何类型的游戏开发都非常重要的三个概念:游戏引擎、底层绘图接口、地图编辑器,我也进行了一些我个人的解读。
有了这些背景知识,这一节,我来带你整理一下整个游戏开发流程以及流程中所需要的工具。
我们默认是在Windows环境下进行开发,至于是什么版本的Windows不需要做更多地阐述,你愿意用什么版本就用什么版本,因为几乎所有流行的Windows环境都能进行编程工作。至于我为什么选择Windows环境进行开发,那是因为:
首先,在Windows环境下,拥有比较方便的调试工具。不管是Python脚本语言还是C/C++语言,都可以使用图形界面进行调试;
其次,Windows下的IDE开发环境也比其他平台更多,你拥有更多的工具可供选择。另外,在开发游戏的时候,你可以选择OpenGL、DirectX或者SDL等图形库进行编程。作为游戏开发,DirectX几乎是不可或缺的标准,而我在第四节讲述底层绘图接口的时候说过,它是由微软提供的游戏编程接口,在Windows下提供了更为方便的底层调用。
除了Windows外,Linux平台的图形显卡驱动几乎是不完善的,无法发挥显卡的最大优势。苹果平台又一家独大,开发人员只能为其定制专一的代码,开发难度比之Windows就大了不少。
在开发过程中,我们需要用到Python、Lua或者Ruby等脚本工具。我们可以直接用Python或者Ruby开发简单的游戏模块的Demo。由于脚本语言代码的简单和高可读性,所以由脚本语言入手,进行早期示例的代码剖析,是一个不错的选择。
Python我们可以从python.org下载,Lua我们可以从lua.org下载,相应地,Ruby也可以在ruby-lang.org下载。为了考虑兼容性,Python建议使用2.7.x版本。Lua下载最新的版本即可。Windows下Python的源代码编译并不方便,所以建议下载MSI安装包,直接安装即可。因为之后我要使用Pygame进行示范,所以建议你使用32位的Python版本。
在开发的过程中,一定会用到C/C++语言。
如果你要使用VC++的话,会涉及购买、安装和配置等情况。为了使这个专栏的内容尽量简洁、可用,我建议使用Windows下,移植版本的GCC和G++进行编译(也就是MinGW移植版),GCC版本为4.2.x或者以上版本。有人说这些版本太老了,我认为,初学阶段,版本越新,意味着你需要知道的编译器内容和编译器开关就越多,因此建议你选择较为稳定的4.2.x或以上版本。
对于C++而言,我们也不需要用到最新的C++标准,比如C++11等。对于C语言,我们默认使用C89或者C99都是可以的。简洁、高效、显而易见,是我一向遵从的原则。
关于C/C++,你可以去MinGW官网下载4.2.x版本。当然如果你希望使用其他更新的版本也不是不行,你可以直接下载安装器,来获取编译器的版本。下载地址是这个:https://sourceforge.net/projects/mingw/files/Installer/
你也可以按照你的需求定制下载。如果要成为完整的编译器,必须下载这些内容:
MinGW (C/C++) Compiler
Binutils
Windows32 API
MinGW Runtime Libraries
GNU Debugger (GDB)
GNU Make
一般来讲,使用安装器下载的编译器都是最新版本的,如果你需要下载特定的版本号,你可以在这个网址 https://sourceforge.net/projects/mingw/files 下,找到相应的编译工具目录和对应的版本号。
这样,C/C++编译器就下载完成了。如果你是自己下载特定版本号的话,需要将所有包解压缩在一个指定的目录下,解压缩出来的目录结构一般有这几个常用子目录:bin、include、lib、share、 local、etc、var。
接下来,我们需要一套IDE来帮助我们进行C/C++和Python的开发。
C/C++方面,我选择使用免费的MinGW Studio来完成。MinGW Studio的界面绝大部分模仿了经典的VC6的IDE界面。虽然相对于更时髦的收费编译器来说,MinGW Studio没有特别智能的代码提示,但是可以方便我们完成程序的调试。
我们可以通过搜索引擎搜索到并且顺利地下载MinGW Studio。有一些IDE是自带C/C++编译器的,这种包也没有问题。如果你对C/C++这部分设置比较熟悉,你也可以自由选择其他IDE,比如DevCpp、CodeLite、CodeBlocks等等。
至于Python方面,我们可以使用Wing IDE。这是一个付费项目。也可以使用国内程序员编写的Ulipad,另一个付费软件Komodo,用来做Python、Ruby的IDE都很合适。至于Wing IDE,我们可以在wingware.com下载最新版本。
首先,我们需要先测试编译器是否运作顺利,所以我选择Lua来进行编译。在将来,需要使用Lua的时候,必须将之编译为静态库或者可执行文件。
我们打开MinGW Studio,界面是这样的:
我们可以在Edit->Options->Compiler选项里设置具体的编译器路径,以便让IDE找到编译器来开始工作。
一般编译器的路径都会自带bin目录,所以设置的目录必须在bin目录的上级目录。比如我们设置的MinGW编译器路径为C:\MinGW,那么bin目录就是C:\MinGW\bin,所以在IDE的设置下,只需要设置为C:\MinGW就可以了。
我们将下载到的Lua5.x.x.tar.gz解压缩到某个目录。在我写文章的时候,Lua的最新版本是5.3.4。在这个目录下,并没有我们所需要的MinGW Studio的项目文件,所以我们需要手工建立一个。我们在File->New->Projects选项下,建立一个Win32 Static Library,也就是Windows静态库,将名字设为lua。
然后我们将文件添加到项目里面,在项目虚拟目录里面,点击鼠标右键。
在弹出的选择文件对话框里,选中刚才解压缩出来的Lua目录,选择src目录下的所有或椎为.c的文件,随后,我们将 lua.c 排除在外(选中,右键,选择移除出项目)。因为我们制作静态库的时候,可以不用这个文件。
我们可以点击Build->Build选项来进行编译,编译完成后,如果编译成功的话,我们会在Debug目录下看到一个.a文件。如果你的项目名叫lua,那么制作出来的静态库就是liblua.a,所以个文件就是我们以后要用到Lua静态库。
如果你有一定的编程经验的话,可能已经看到,我们现在编译出来的是Debug,是调试版本,我们暂且不去管它。这个在后面我们会进行详细地探讨,目前我们只需要知道这一系列的使用方式和方法就可以了。
我们已经将Lua编译完毕了,后续的文章中我会教你使用Lua静态库。
接下来,我们尝试使用Python语言。你可以使用任何一个上述推荐的专业IDE来编写Python代码。实际上,Python的IDE不需要过多的配置。因为安装在Windows机器上后,Python的路径会被注册到系统。通常IDE会自动找到Python执行文件,并且,IDE的Shell窗口将会正确地找到Python并看到其互动窗口,就像这张图的内容:
现在,我们尝试在IDE中编写一小段Python测试代码,然后跑一下。程序运行结果就是打印一个 test字符串。
import os, sys
if __name__ == '__main__':
print 'test'
最后,将该文件保存后缀为.py的文件,这就是Python源代码。
在这里,为你介绍一个专门为Python开发的游戏库Pygame。至于为什么选择Pygame,我在第四节讲底层绘图接口的时候已经解释了一些。这里再说一下。
Pygame包装了SDL的实现。在编写2D游戏方面,它的表现可以用三个词来形容:成熟,稳定,简单。它把一些细枝末节隐藏在了Python语法背后,当然也有Ruby语言封装的RubyGame,但是很多人对于这种魔幻的语言并不是特别了解,所以选择简洁的Python语法+SDL库封装是最合适的选择。
今后我们会编写游戏的示例Demo,一些轻量级的、游戏的某一部分的说明和介绍,我会使用Pygame进行简单的阐述。Windows版本我们点击这个网址下载这个版本的源代码。 http://www.pygame.org/ftp/pygame-1.9.1release.zip 如果你不愿意下载源代码,也可以根据自己对应的Python版本号下载对应的二进制包,支持Python 2.4 到3.2的版本。
pygame-1.9.1.win32-py2.7.msi 3.1MB
pygame-1.9.1release.win32-py2.4.exe 3MB
pygame-1.9.1release.win32-py2.5.exe 3MB
pygame-1.9.1.win32-py2.5.msi 3MB
pygame-1.9.1.win32-py2.6.msi 3MB
pygame-1.9.2a0.win32-py2.7.msi 6.4MB
pygame-1.9.1.win32-py3.1.msi 3MB
pygame-1.9.2a0.win32-py3.2.msi 6.4MB
如果你安装的是64位Windows和64位Python,注意Pygame版本和Python都需要是32位的,才能完美兼容和使用。
好了,这节内容差不多了。我来总结一下。在这一节中:
我先从各操作系统下的调试工具、IDE开发环境、显卡驱动等三个方面,分析了为什么选择在Windows环境下进行开发;
然后,我还带你梳理了一遍开发所需要的语言和工具,并且提供了下载的网址和安装的方法;
之后,我还带你测试了Lua脚本语言在编译器中的编译并且生成了静态库文件。
最后给你介绍了Pygame,今后将会用到这个Python下的2D游戏开发引擎。
最后,给你留一个思考题吧。
你可以结合之前几节的内容,思考一下,Pygame绑定SDL绘图接口是如何实现的?
欢迎留言说出你的看法,我在下一节的挑战中等你!
评论