好玩
make it fun
你看完了教程。你会拖节点、会写 _process,屏幕上那个小人能跑能跳还能踩死一只史莱姆。
然后你新建了一个空项目,坐了二十分钟,什么也没写出来。
问题不在你。引擎教程教的是「怎么让引擎做事」,而做游戏需要的是「该让引擎做什么事」—— 跳跃该跳多高、敌人多久出现一次、为什么这一关玩起来无聊。 这是两套知识,而后者躲在几本书、一些演讲和无数个做废的项目里。
这本书的主线只有一句:「好玩」不是形容词,是可以拆开的。 它由一堆有名字、能单独开关、能被测量的零件组成 —— 你觉得它玄,只是因为没人告诉过你那些零件叫什么。
招牌:一台真的平台跳跃引擎
下面这个不是示意图,是真的物理 —— 固定步长积分、AABB 碰撞、 土狼时间、非对称重力、挤压拉伸全都真写在里面。 点画面聚焦,方向键移动,空格跳。先点「全部关掉」跑两圈,再点「全部打开」。
物理常数一个都没改:重力 1500、起跳初速 340、最大速度 112。 十二项全关,跳跃高度 37.1 像素;十二项全开,37.3 像素。 手感全变了,而跳多高几乎没动 —— 这就是这本书要拆开的东西。
这本书不做什么
它不是 Godot 教程。不讲节点怎么摆、信号怎么连 —— 那些网上讲得比我好,而且你已经会了。 GDScript 在这里的角色是「把设计落到地上的那一步」:当我说输入缓冲要留 120 毫秒,我会给你能跑的代码, 但重点永远是为什么是 120。用 Unity 或别的引擎,本书 90% 的内容一字不用改。
它不会让你做出好游戏。它会让你做出一个能做完的游戏, 并且在它不好玩的时候,知道该去哪里找原因 —— 大多数人卡住不是因为不会改,是不知道该改什么。
它有大量「不要做什么」。第 22 章整章在讲那些看起来很有道理、做下去必死的路。 你可能会觉得扫兴,但它大概是全书最值钱的一章。
主轴是 2D 平台跳跃 —— 不是因为它最好,是因为它是被研究得最透的一种游戏, 跳跃这个动作被折腾了四十年,每个细节都有名字、有取舍、有公开数据。 但每章末尾都有「换个类型」,把这一章的道理翻译到卡牌、肉鸽、塔防、模拟经营、叙事解谜上去。