游戏夜读 | 游戏代码之道

文/良宵听雨。授权“游戏夜读”发表。

游戏代码的材料是一些中英文字符,真正运行的是那些英文字符。任何一种编程语言都可以写游戏,所以懂了游戏代码之道,选择什么语言的问题也会少一大半的迷茫。

电子游戏的本质是动画片,所以游戏代码的首要目标就是让画面动起来。学会让画面动起来,就已经搞定了游戏开发一大半的难题。好在现在分享精神盛行,想找到一段让画面动起来,甚至是一个完整的游戏程序,都不是难事。但拿到这些游戏代码之后呢?抄是有前途的,但有灵魂的抄更有意思。所以,看得懂,找得出共性,是个值得一试的活儿。

游戏编程是有标准的。一方面,游戏的运行框架有范式。另一方面,游戏代码的制作分工也有范式。游戏代码可以组织的很有个性,这是游戏编程的特点、乐趣之一,也给大家留下了游戏代码标准不一的印象,其实不然。

以Python这个语言为例,它有一个集成库是专注游戏开发的,叫Pygame。这个库是基于SDL的一个极具个性和便利性的封装。其中,SDL是一套开放源代码的跨平台多媒体开发库,使用C语言写成,是“Simple DirectMedia Layer”的简称,也可以翻译成“简单直流多媒体层”。Pygame的设计就是基于一个标准化的游戏运行框架。

while True:

events() # 人的行为

loop() # 游戏世界的变化

render() # 在屏幕上播放动画

这个游戏运行框架非常简单:首先是一个无限的循环,也叫死循环,主要的目的就是在屏幕上播放动画。其次是动画的内容,即游戏世界的变化。但这里有一个“人机交互”的概念,这也是游戏区别于其他艺术或媒体形式的一点:人的行为。人的行为一般是作为“动画”的触发和输入。这就是一个标准化的游戏运行框架,简洁的游戏代码之道。

直到现在,大部分的灵魂代码都是人为敲入的。因此,游戏代码内部的这种标准化拆分,可以看作是一个个模块,也可以看作是一种分工。尤其是到了2000年前后,游戏代码除了运行框架的标准化之外,又有了游戏代码标准化制作的分工趋势。具体表现为“游戏引擎”的盛行:游戏引擎负责速度,高级语言写的脚本代码负责个性化的游戏机制、图像处理。

也是这一时期,游戏开发和游戏设计开始被有意的区别对待,前者专注代码逻辑的自洽,后者专注游戏机制的创新。

null

打开APP阅读更多精彩内容