这家80岁的游戏厂商,给了入行新人一份开发培训教材

2020-06-01
更为普适的一本游戏开发书籍。

编者按:本文来源创业邦专栏游戏葡萄,作者龙之心。

半个月前,虚幻5引擎的亮相在游戏行业引发了广泛讨论,同时也点燃了一部分人的游戏开发热情。

对于初学者而言,学习游戏开发难免会陷入一种无从下手的困局,怎么去建立起一套知识体系来更好地掌握这门技能?从最近出版的一本书中,葡萄君一定程度上找到了这个参考答案。

这本书名为《游戏开发:世嘉新人培训教材》,作者是平山尚,曾在世嘉参与《电脑战机》(PS2)、《超级网球大奖赛3》(AC、PS3)的开发。

世嘉在游戏行业的地位无需赘述,它曾与任天堂、索尼、微软并列四大家用游戏机制造商,是业内知名的游戏开发公司。本书推出后很快受到世嘉内部新人欢迎,并荣获游戏开发者奥斯卡CEDEC AWARDS 2009著作奖,称得上一本经典书。

2012年夏天,本书译者、拥有15年游戏开发经验的资深工程师罗水东在东京的书店里发现此书,并被其吸引,不过因为版权的问题,翻译一事被搁浅。

随着图灵引进该书中文版权,翻译工作正式启动。值得一提的是,为了确保翻译的精准,罗水东将原著反复读了3次。要知道,这本书多达27个章节、676页,能全篇通读下来就已经很不容易了,而在翻译出来的同时,他还将本书的可读性尽可能提高了不少。

这本书写了什么?

《游戏开发:世嘉新人培训教材》一书可分为三部分:2D游戏、3D游戏和通往商业游戏之路,而这种层层铺垫、由浅及深的知识体系也比较适合新人来阅读(文末附目录)。

在2D游戏的开始,作者率先开发了经典的推箱子游戏。在他看来,这款仅200行代码就能运行的游戏,做起来并不是想象中的小菜一碟,需要考虑的东西是相当多的。

拿“移动”来举例,游戏中不存在玩家和箱子分开移动的情况,因此移动处理就是判断玩家朝上下左右哪个方向移动。而在此之前,首先要判断移动位置是否处于允许范围之内;编写代码时,开头第一个if语句检测要移动的位置是否为空,如果为空则移动到该处。

部分代码展示

当然,这个所谓的空可能有“空白”和“目的地”两种情况,所以代码会有些复杂。如果将“是否是目的地”的信息存储在别处,因为该数据固定而且不会被修改,所以代码写起来可能会更简单。

接下来则是对代码的进一步改善,如数据容量、处理速度、代码可读性和可拓展性等等。

完成核心模块后,作者下一步开始引导游戏更好地朝商业化发展,从像素到图片素材,再到动画、文本绘制、声音等角度深入开发,来输出成品。

而在3D游戏部分,你可以学着自制动作游戏《机甲大战》,过程中涵盖计算机运算(3D碰撞处理)、计算机图形学(角色动画)、编程等知识细节。

举一个《机甲大战》自动跟踪的例子。更好的设计应当是玩家可以在导弹即将击中自己的瞬间,通过跳跃或者横向闪避来躲开导弹,而且此时的导弹不允许突然掉头袭击,不然就算作弊了。因此,代码只要让导弹飞行过程中每帧都朝着敌人的方向改变一定角度,让导弹沿着头部的朝向移动,然后逐渐改变它的方向。

角度的调整通过上下角(绕x轴旋转)与方向角(绕y轴旋转)实现。绕z轴旋转意味着导弹沿着其自身的轴心旋转,这只起到一个装饰的作用,所以绘制时再去思考就可以了。每帧计算出当前敌人所处的方位,并设置以上两个角度变量使其接近该值。这种方法虽然不完美,但在具备重力的环境近距离作战时并不会有什么问题。

接下来用角度的补间方法使其绕x轴旋转即可。不过,绕x轴的旋转角的范围要控制在-90°至90°,超过90°意味着导弹的上下两面发生了反转。这一点并不难理解。我们抬起头一直往后仰,最终就会看到地面出现在我们的“上方”。任何朝向都可以通过一个-90°到90°的绕x轴的旋转角与一个-180°到180°的绕y轴的旋转角来表示,所以这种设计是没问题的。就好比我们想欣赏身后的风景时不必仰头反转,只要旋转身体就可以了。

当掌握了3D游戏开发的基础知识,能够独立地开发一款产品后,接下来的考验就集中在商业化之前的这段优化过程上,比如如何缩短加载时间?如何预防和处理bug?

以代码为例,书中提到,在项目中要求统一风格的情况下,如果有程序员不愿意改变自己的风格,可能就会起冲突。但事实上,每个人都应该接受好的代码规范,做到“不复杂、不繁琐、有必要”。

在本书最后笔者坦言,“虽然写了这样厚厚的一本书,但初入游戏公司时连书的十分之一都没未掌握”。在他看来,以前只要有兴趣,一个人也能开发一款游戏,但参考当下游戏规模的技术复杂程度,一己之力很难开发像样的游戏了。因此,这样一本教材或许能体现出它的价值。

更为普适的一本开发书籍

其实,进入游戏行业的新人往往存在对专业书籍的诉求,而市面上多数游戏开发书籍很难兼顾专业性和可读性,又以可读性的缺失最为明显。这便导致读者阅读门槛提高,有可能无法坚持看完一本书。

《游戏开发:世嘉新人培训教材》则针对性地解决了这个问题。它以开发游戏demo、梳理设计知识为轴,尝试穿插了不少私货,让读者知道“怎么做”的同时,明白“为什么”这么做,甚至跟策划扯皮的过程也夹带进来,显得更接地气。

另一方面,虽然书名提到“新人培训教材”,但受众并不限于新人。Unity User Group意见领袖、UVP价值专家宣雨松MOMO评价称:

它远远超过了新人培训,甚至适合工作多年的老手。现在市面上有很多好用的商业游戏引擎,它们将大量原理部分的知识隐藏起来,暴露给程序员的都是简单易用的接口。时间久了很多程序员虽然能开发游戏,但已经浑然不知背后的原理知识了。

如果对原理不了解,就意味着无法更好地和硬件打交道,无法更好地优化自己的游戏。这本书从无到有一点点揭秘游戏开发的原理,由浅入深,很容易理解,确实是一本不可不读的好书。

《游戏开发:世嘉新人培训教材》开头提到了这样一句话,“本书就像一条从山脚蜿蜒而上的山路,虽漫长但不陡峭,让读者一路欣赏风景直至顶峰,不会半途而弃。这也是导致本书页数超级多的原因。这些风景就是当下游戏编程中最常见的内容。”

在众多游戏开发书籍中,这或许就是本书的最大竞争力。

本文为专栏作者授权创业邦发表,版权归原作者所有。文章系作者个人观点,不代表创业邦立场,转载请联系原作者。如有任何疑问,请联系editor@cyzone.cn。