<audio id="audio" title="开篇词 | 跟我学，你也可以开发一款游戏！" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/28/99/28928a31b296bf30658023fc5866d599.mp3"></audio>

你好，我是蔡能。从96年编写第一行代码开始，我在IT行业从业已经有22年的时间。

从程序员到管理者，我参与过各式各样的项目，也主导过很多项目。当然，我经历的大部分项目都是游戏。20多年里，我目睹了从最初的像素游戏，到如今高清贴图的3D游戏的发展过程。游戏行业，乃至整个IT行业都发生了翻天覆地的变化。

当然，我本人也非常喜欢玩游戏。我喜欢自由自在的游戏和需要脑力的游戏。比如，“GTA系列”“老滚系列”和“三国志系列”。在玩游戏的过程中，我体会到各种各样的乐趣，同时，作为开发者，我也会从专业的角度出发，思考这款游戏究竟是如何制作出来的。

我发现，喜欢玩游戏的人，都很有兴趣自己做一款游戏。哪怕自己不懂编程，但是自己做做策划，懂美术的话自己做做图，能让自己的游戏跑起来，就是一件幸福的事情。

还有一部分人，可能对游戏并不感兴趣，但是对赚钱感兴趣，那么我的专栏也可以让你知道游戏开发的基础流程和知识，避免走弯路，不花冤枉钱，不掉技术坑。

我看过网上各式各样的“傻瓜式”游戏开发工具，比如RPG MAKER。任何不懂编程的人，只需要导入规定的模板，就能方便地开发出一款游戏。然而，这种方法只能开发某一类非常简单的游戏。**如果想要开发出一款真正意义上的游戏，还是要借助编程基础和系统的开发知识。**

我举几个简单的例子，你就明白了。

<li>
在《守望先锋》里，我们看到的子弹射击，对方被击伤，这些都是经过怎样不断地网络优化实现的呢？还有各种网络预判模型，你是否都了解呢？
</li>
<li>
我们玩的《星际争霸》，究竟是每个线程控制一个兵种，还是一个线程刷新全部兵种画面？
</li>
<li>
《魔兽世界》如此庞大，它是如何将海量逻辑写在游戏客户端里？将逻辑编写成硬代码显然不理性，写成配置文件又缺乏机动性，那它是怎么做到的呢？
</li>
<li>
另外，我发现，很多公司在开发游戏的时候，选择引擎也是一个尴尬事。是自己研发一款引擎还是购买别家成熟的引擎呢？引擎的好坏，对开发的游戏来讲有什么影响？很多人也是不知道的。
</li>

这些问题，我都会在专栏文章中一一解答。但前提是你最好具备一定的编程知识和基础。

<li>
**我将会尽量选择简洁的Python语言来编写。**我会从最上层的脚本语言Python的使用开始，剖析为什么游戏开发要从这里开始。在用到C/C++代码的地方，我将会尽可能地使用简单易懂的语法来示范，所以，其实你只需要懂点儿英文就可以了（笑）。
</li>
<li>
**我会尽量选择简单的开发工具，而不是动辄几个G的开发工具。**比如“VS系列”，比如各种复杂的IDE。简单的开发工具足够简单明了地让你了解开发的具体流程，快速进入状态，而不是在设置工具上浪费大量的时间和精力。
</li>
<li>
**我会尽量避免特别复杂的底层知识，但是也不会一带而过。**我会帮你一步步梳理开发的流程，并仔细剖析，在C/C++中如何控制计算机的各种设备，操作计算机的各种硬件。或许你还会在编译中遇到问题，我也会一步一步，由浅入深，教你如何解决编译问题。
</li>
<li>
**我将用制作“打飞机”游戏demo的过程，来完成游戏开发内容的分解步骤讲解。**之所以选择“打飞机”作为游戏demo，是因为它的开发过程几乎涵盖了我要讲述的所有开发流程，包括操作、画面的前后遮挡、图像的碰撞和切换、资源包、脚本语言等等。
</li>

对于专栏的具体内容，我将分以下几个方面来阐述。

1. 我会先带你熟悉游戏开发的基础概念。包括开发游戏需要涉及的基础知识和需要准备的工具：游戏引擎、底层图形接口和地图编辑器。
1. 然后从0开始搭建一个游戏窗体，往窗体里添加图形、界面和操作。
1. 我还会讲解如何嵌入脚本语言。毕竟使用硬代码编写游戏逻辑并不是一个很好的选择，而脚本语言的嵌入，可以让我们很方便地完成游戏的逻辑开发。我们只需要将底层图形图像的显示、函数等捆绑好，接下来交给脚本语言就好了。
1. 除此之外，我还会阐述各种平台上的游戏开发和实现，带你学习一些最近热点的游戏开发知识。比如HTML5游戏和手机移动平台游戏。我们已经有了游戏开发的基本知识，也掌握了游戏开发的流程，再来看这些游戏的开发，就会变得很轻松了。
1. 最后，我会与你谈谈，我对游戏行业未来发展的看法。游戏将会如何发展，往哪个方向走？开开脑洞，我们大胆畅想游戏领域的未来。

我希望，学习完这个专栏，**能让你对游戏开发有个实质性的掌握，让你对游戏的开发和理念有一个完整并且系统的了解，并且能很快地着手进行游戏的开发**。万变不离其宗，希望我的分享不会辜负你为此投入的金钱和时间。

让我们一起踏上游戏开发的旅程吧！

<img src="https://static001.geekbang.org/resource/image/56/24/566a01f6857d4a0e42c5f2fb8db59624.jpg" alt="" />
