You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

152 lines
11 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 第6讲 | 从0开始整理开发流程
在第一模块的基础知识中我已经讲过开发一款游戏需要的一些背景知识。对于2D游戏和3D游戏的区别、从程序到美术、从2D、伪3D到3D等方面我都进行了逐一地阐述。除此之外对于任何类型的游戏开发都非常重要的三个概念游戏引擎、底层绘图接口、地图编辑器我也进行了一些我个人的解读。
有了这些背景知识,这一节,我来带你整理一下整个游戏开发流程以及流程中所需要的工具。
## 1.选择开发环境
我们默认是在Windows环境下进行开发至于是什么版本的Windows不需要做更多地阐述你愿意用什么版本就用什么版本因为几乎所有流行的Windows环境都能进行编程工作。至于我为什么选择Windows环境进行开发那是因为
* 首先在Windows环境下拥有比较方便的**调试工具**。不管是Python脚本语言还是C/C++语言,都可以使用图形界面进行调试;
* 其次Windows下的**IDE开发环境**也比其他平台更多你拥有更多的工具可供选择。另外在开发游戏的时候你可以选择OpenGL、DirectX或者SDL等图形库进行编程。作为游戏开发DirectX几乎是不可或缺的标准而我在第四节讲述底层绘图接口的时候说过它是由微软提供的游戏编程接口在Windows下提供了更为方便的底层调用。
* 除了Windows外Linux平台的**图形显卡驱动**几乎是不完善的无法发挥显卡的最大优势。苹果平台又一家独大开发人员只能为其定制专一的代码开发难度比之Windows就大了不少。
## 2.下载脚本工具
在开发过程中我们需要用到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版本。
## 3.选择编程语言版本
在开发的过程中一定会用到C/C++语言。
如果你要使用VC++的话会涉及购买、安装和配置等情况。为了使这个专栏的内容尽量简洁、可用我建议使用Windows下移植版本的GCC和G++进行编译也就是MinGW移植版GCC版本为4.2.x或者以上版本。有人说这些版本太老了我认为**初学阶段,版本越新,意味着你需要知道的编译器内容和编译器开关就越多,**因此建议你选择较为稳定的4.2.x或以上版本。
对于C++而言我们也不需要用到最新的C++标准比如C++11等。对于C语言我们默认使用C89或者C99都是可以的。简洁、高效、显而易见是我一向遵从的原则。
## 4.下载编译器
关于C/C++你可以去MinGW官网下载4.2.x版本。当然如果你希望使用其他更新的版本也不是不行你可以直接下载安装器来获取编译器的版本。下载地址是这个[https://sourceforge.net/projects/mingw/files/Installer/](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](https://sourceforge.net/projects/mingw/files) 下,找到相应的编译工具目录和对应的版本号。
这样C/C++编译器就下载完成了。如果你是自己下载特定版本号的话需要将所有包解压缩在一个指定的目录下解压缩出来的目录结构一般有这几个常用子目录bin、include、lib、share、 local、etc、var。
## 5.选择C/C++和Python的IDE
接下来我们需要一套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下载最新版本。
## 6.带你一起测试编译器的运作
首先我们需要先测试编译器是否运作顺利所以我选择Lua来进行编译。在将来需要使用Lua的时候必须将之编译为**静态库**或者**可执行文件**。
我们打开MinGW Studio界面是这样的
![](https://static001.geekbang.org/resource/image/e9/13/e9ff8b431d455f4a03cef636dd838e13.jpg)
我们可以在Edit->Options->Compiler选项里设置具体的编译器路径以便让IDE找到编译器来开始工作。
![](https://static001.geekbang.org/resource/image/d8/e0/d8affea68aed61a67f25a8bd04d766e0.jpg)
一般编译器的路径都会自带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。
![](https://static001.geekbang.org/resource/image/01/84/016bd92e192c42b2b53aa076c6277f84.jpg)
然后我们将文件添加到项目里面,在项目虚拟目录里面,点击鼠标右键。
![](https://static001.geekbang.org/resource/image/0b/29/0bf22ba55c20fd93198d335260842629.jpg)
在弹出的选择文件对话框里选中刚才解压缩出来的Lua目录选择src目录下的所有或椎为.c的文件随后我们将 lua.c 排除在外(选中,右键,选择移除出项目)。因为我们制作静态库的时候,可以不用这个文件。
![](https://static001.geekbang.org/resource/image/90/d2/90a6974f6a57c8530f52dda064878ad2.jpg)
我们可以点击Build->Build选项来进行编译编译完成后如果编译成功的话我们会在Debug目录下看到一个.a文件。如果你的项目名叫lua那么制作出来的静态库就是liblua.a所以个文件就是我们以后要用到**Lua静态库**。
如果你有一定的编程经验的话可能已经看到我们现在编译出来的是Debug是调试版本我们暂且不去管它。这个在后面我们会进行详细地探讨目前我们只需要知道这一系列的使用方式和方法就可以了。
我们已经将Lua编译完毕了后续的文章中我会教你使用Lua静态库。
接下来我们尝试使用Python语言。你可以使用任何一个上述推荐的专业IDE来编写Python代码。实际上Python的IDE不需要过多的配置。因为安装在Windows机器上后Python的路径会被注册到系统。通常IDE会自动找到Python执行文件并且IDE的Shell窗口将会正确地找到Python并看到其互动窗口就像这张图的内容
![](https://static001.geekbang.org/resource/image/05/82/057511edf04d2d71904b44f1462c2182.jpg)
现在我们尝试在IDE中编写一小段Python测试代码然后跑一下。程序运行结果就是打印一个 test字符串。
```
import os, sys
if __name__ == '__main__':
print 'test'
```
最后,将该文件保存后缀为.py的文件这就是Python源代码。
## 7.专为Python开发的游戏库Pygame
在这里为你介绍一个专门为Python开发的游戏库Pygame。至于为什么选择Pygame我在第四节讲底层绘图接口的时候已经解释了一些。这里再说一下。
Pygame包装了SDL的实现。在编写2D游戏方面它的表现可以用三个词来形容**成熟,稳定,简单**。它把一些细枝末节隐藏在了Python语法背后当然也有Ruby语言封装的RubyGame但是很多人对于这种魔幻的语言并不是特别了解所以选择简洁的Python语法+SDL库封装是最合适的选择。
今后我们会编写游戏的示例Demo一些轻量级的、游戏的某一部分的说明和介绍我会使用Pygame进行简单的阐述。Windows版本我们点击这个网址下载这个版本的源代码。 [http://www.pygame.org/ftp/pygame-1.9.1release.zip](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绘图接口是如何实现的
欢迎留言说出你的看法,我在下一节的挑战中等你!