你会用引擎了,为什么还是做不出游戏
你看完了教程。你会拖节点、会写 _process、会加 CharacterBody2D,屏幕上那个小人能跑能跳还能踩死一只史莱姆。然后你关掉编辑器,打开一个空白项目,坐了二十分钟,什么也没写出来。这一章要说清楚那二十分钟里到底缺了什么 —— 不是你笨,也不是教程差,是你学到的东西和你想做的事情之间,隔着一整个学科。
先把这件事说破
你的处境大概是这样的:
你跟着一个「Godot 2D 平台游戏入门」的系列视频,做完了。过程很顺,作者说加个 Area2D 你就加个 Area2D,说信号连到这里你就连到这里。做完那一刻你还挺有成就感 —— 屏幕上确实有个游戏在跑。
然后你想做自己的东西。你新建了一个项目,然后发现你不知道该干什么。
不是不知道怎么写代码。是不知道该写什么代码。
你脑子里可能有个模糊的想法:「我想做一个……有点像空洞骑士那样的?但是加一点肉鸽元素?」你打开编辑器,第一个问题就把你钉死了:那到底先做什么?
于是你去搜更多教程。你学会了怎么做背包系统、怎么做对话框、怎么做存档。每个教程你都做得出来。但你还是做不出一个游戏。
Godot 教程教你的是怎么让引擎做事:这个节点干什么用、这个函数什么时候调用、信号怎么连。这些是工具知识。
做游戏需要的是另一套东西:该让引擎做什么事。跳跃该跳多高?敌人该多久出现一次?玩家死了之后应该退回哪里?为什么这个关卡玩起来无聊?这些是设计知识,而绝大多数引擎教程一个字都不会讲。
你现在的状态是:认识所有的锅碗瓢盆,会开火,会切菜,但没有一道菜谱,也不知道什么味道算好吃。
这不是你的错。这两套知识在网上的密度差了两个数量级 —— 工具知识有明确的正确答案,容易做成视频;设计知识没有,所以它躲在几本书、一些 GDC 演讲、和无数人做废的项目里。
那么,游戏到底是什么
先排除几个常见的错误答案。
游戏不是画面。《我的世界》长得像一坨方块,卖了三亿份。
游戏不是故事。《俄罗斯方块》没有一个字的故事,活了四十年,是史上被玩得最多的游戏之一。
游戏不是内容量。无数 3A 大作有几百小时内容,玩家玩了六小时就再没打开过。
那剩下什么?剩下这个:
游戏是一台反馈机器。
玩家做一个动作 → 系统给出回应 → 玩家从回应里读懂了什么 → 玩家据此做下一个动作 → ……
这个环每秒转几十次,一直转到玩家关掉游戏为止。所有关于「好不好玩」的问题,最后都会落回这个环上。
这句话听起来很抽象。所以我们直接把它拆开看。下面这个东西是真的能玩的 —— 点一下画面让它获得焦点,然后用方向键和空格。
你刚才按下空格的时候,四件事依次发生了:
| 环节 | 发生了什么 | 住在哪 |
|---|---|---|
| ① 读输入 | 程序发现空格被按下了 | 代码里 |
| ② 改状态 | 角色的纵向速度被设成 −340 | 代码里 |
| ③ 画出来 | 那个方块在屏幕上往上移动了 | 代码里 |
| ④ 你读懂了 | 「我跳起来了」 | 你的脑子里 |
看第四行。它没有代码。
但它才是这一切的目的。前三环存在的唯一理由,就是让第四环发生。如果玩家看着屏幕读不出「我跳起来了」—— 比如角色移动得太快看不清、比如上升和下落长得一模一样、比如根本没有落地的动静 —— 那么前面三环写得再对,这个跳跃也是失败的。
而 Godot 教程,从头到尾只教第三环。
再看一层:第一环也没人教
第一环看起来简单得不值一提:Input.is_action_just_pressed("jump"),一行完事。
但真实的第一环长这样:
- 玩家按下跳的那一刻,角色已经跑出平台边缘 3 帧了 —— 该不该让他跳?
- 玩家在落地前 5 帧按了跳 —— 这次输入是丢掉,还是记住、等落地那一帧再执行?
- 玩家按下跳之后立刻松手 —— 是跳满,还是跳一半?
- 玩家同时按了左和右 —— 听谁的?
这四个问题,每一个都没有「正确答案」,只有「好玩的答案」。而它们加起来,就是玩家口中那个玄之又玄的词:手感。
第 9 章会有一台实验台,把这些开关全部做成可以现场开关的按钮,你会亲手感受到差别。这里先记住一件事:那台实验台里,十二个开关全关和全开,跳跃高度都是 37 像素 —— 一模一样。变的东西,一个都不在「跳多高」里面。
「好玩」不是形容词
这是这本书的主线,我现在就说清楚,后面二十三章都是在展开它。
大多数人 —— 包括做了几年游戏的人 —— 把「好玩」当成一种玄学。一个游戏好玩,是因为「有灵气」「有想法」「团队有品味」。这种说法的问题不是它错,是它没法拿来干活。你没法把「有灵气」写进任务列表。
「好玩」是可以拆开的。它由一堆具体的、有名字的、能单独打开和关闭的东西组成 —— 每一样都能被测量、被调试、被抄。
你现在觉得它玄,只是因为没人告诉过你那些零件叫什么名字。而一旦有了名字,它就从「灵感」变成了「工作」—— 而工作是可以学会的。
举三个后面会详细展开的例子,让你先感受一下「拆开」是什么意思:
例一:同一个跳跃,十二个零件
土狼时间、输入缓冲、可变跳跃高度、非对称重力、顶点悬停、挤压拉伸、起落烟尘、落地震屏、落地顿帧、加速度移动、松手滑行、转身制动。
十二个词,十二个零件。每一个都是三五行代码。把它们全部关掉,你的角色会像在推一个纸箱;全部打开,它会像《蔚蓝》。而这十二项没有一个改变了跳跃的高度。(第 9 章)
例二:同一个「30% 暴击」,三种做法
如果你写 if randf() < 0.3,那么在一万次攻击里,会出现连续 20 次不暴击的情况。那个倒霉玩家会去论坛发帖骂你的概率是假的 —— 而从他的体验出发,他没说错。
换成「洗牌袋」,最长连续不出降到 12 次。换成「递增概率」,降到 7 次。三种做法的长期期望完全一样,都是 30%。玩家记住的从来不是期望,是那个最长记录。(第 15 章)
例三:一个点子好不好,有判据
「我想做一个赛博朋克风格的开放世界 RPG」—— 这不是一个游戏点子,这是一个设定。它没告诉任何人玩家的手指在重复做什么。
「玩家能在两面墙上各开一个洞,把空间接起来」—— 这是一个点子。它是一个动词,它能长出关卡,它能被做成原型验证。(第 3、4 章)
顺便:游戏开发到底有几门学科
还有一个让新手迷路的原因:「游戏开发」这个词底下,其实塞了七八个互不相同的领域,而它们需要的能力完全不一样。你搜到的教程随机地属于其中之一,于是你学得七零八落,还以为是自己没天赋。
| 领域 | 在解决什么 | 本书 |
|---|---|---|
| 引擎 / 工具使用 | 怎么让软件按你说的做 | 不讲(你已经会了) |
| 游戏设计 | 该让它做什么才好玩 | 卷 I、II、IV |
| 体感 / 交互设计 | 为什么这个操作让人舒服 | 卷 III(本书重点) |
| 关卡设计 | 怎么用空间编排体验和教学 | 第 16、21 章 |
| 游戏编程 | 怎么让它跑得对、改得动 | 卷 V |
| 项目管理 | 怎么真的做完 | 卷 VI |
| 美术 / 音频 | 怎么让它好看好听 | 不讲(另一整门手艺) |
| 发行 / 市场 | 怎么让人知道它 | 只讲最基本的(第 24 章) |
看这张表你会发现一件事:你之前学的那些教程,几乎全部集中在第一行。而第一行恰恰是唯一一个「学会了也做不出游戏」的领域 —— 它是必要条件,不是充分条件。
中间那五行 —— 设计、体感、关卡、编程、管理 —— 都不需要天赋,都是可以按清单学的。
它们看起来玄,是因为从业者习惯用感性语言描述它们(「这个手感有灵性」「这关设计得很有想法」)。但那些描述背后,全都是具体的、有名字的、能被复制的技术。
真正需要天赋的是美术和音乐 —— 而那两样恰好是你可以买、可以用免费素材、可以先不做的。
这本书怎么带你走
六卷,二十四章,一条路:从一个念头,到一个真的发出去了的游戏。
| 卷 | 回答的问题 | 你会带走什么 |
|---|---|---|
| I · 念 1–3 | 点子从哪来? 怎么判断一个点子行不行? | 一句能说清楚的玩法,和一个诚实的范围 |
| II · 玩 4–8 | 什么是玩法? 规则怎么变成乐趣? | 动词、核心循环、有意义的选择、难度与涌现 |
| III · 感 9–13 | 为什么别人的跳跃那么舒服? | 把「手感」拆成可开关的零件(本书的招牌) |
| IV · 数 14–17 | 数值怎么定? 随机怎么做才不挨骂? | 成长曲线、随机的三种做法、节奏、经济 |
| V · 造 18–21 | 代码该怎么组织? | 原型方法、游戏循环、状态机、数据驱动、关卡教学 |
| VI · 完 22–24 | 为什么我总是做不完? | 范围控制、打磨与 playtest、真的发上去 |
主轴是 2D 平台跳跃—— 不是因为它最好,是因为它是被研究得最透的一种游戏。跳跃这个动作,全世界最聪明的一批设计师折腾了四十年,每一个细节都有名字、有取舍、有公开的实测数据。用它当解剖对象,你能看到最多的东西。
但每一章末尾都会有一个「换个类型」的小节,把这一章的道理翻译到卡牌、肉鸽、塔防、叙事解谜上去 —— 因为这些道理本来就不属于平台游戏,它们属于游戏。
书里的落地代码用 GDScript,因为你已经有基础了,不用再学一套工具。
但这本书不是 Godot 教程。我不会讲节点怎么摆、信号怎么连 —— 那些你已经会了,而且网上讲得比我好。GDScript 在这里的角色是「把设计落到地上的那一步」:当我说「输入缓冲要留 120 毫秒」,我会给你那段真的能跑的代码,但重点永远是为什么是 120。
如果你用 Unity、用 GameMaker、用自己写的引擎,这本书 90% 的内容一字不用改 —— 只有那些 .gd 代码块需要你自己翻译,而它们都短到十几行。
三件老实话
在你投入二十四章的时间之前,我有义务先说清楚三件事。
一、这本书不会让你做出好游戏。它会让你做出一个能做完的游戏,并且让你在它不好玩的时候,知道该去哪里找原因。这是天壤之别 —— 大多数人卡住不是因为不会改,是因为不知道该改什么。
二、你的第一个游戏会很难看。这不是谦虚,是统计规律。重要的是它被做完了、被发出去了、有陌生人玩过。做完一个小的,比做废一个大的,让你学到的东西多一个数量级。
三、这本书里有大量「不要做什么」。游戏开发的知识里,有相当一部分是关于陷阱的 —— 那些看起来很有道理、做下去必死的路。第 22 章整章都在讲这个。你可能会觉得它扫兴,但它大概是全书最值钱的一章。
现在,做一件小事
在翻到下一章之前,花两分钟做这个:
打开你玩得最久的那个游戏,玩五分钟,然后回答一个问题:这五分钟里,你的手指重复做得最多的那个动作是什么?
不是「打怪」「探索」「变强」这种抽象说法 —— 要具体到手指的层面。是「按左键」?是「拖动卡牌」?是「按住右键转视角同时按 W」?
把它写下来。那就是那款游戏的动词,是它全部乐趣的着力点。第 4 章我们从这里开始。
「反馈循环」这个框架在任何类型上都成立,只是四个环的时间尺度差很远:
- 动作 / 平台:一圈 0.1 秒。第 ④ 环靠视觉和音效完成 —— 玩家必须在几帧之内读懂发生了什么。
- 卡牌 / 战棋:一圈 3–10 秒。第 ④ 环靠数字和图标完成 —— 玩家有时间读,所以信息可以更密,但也更不能骗人。
- 模拟经营:一圈可能跨越一个游戏日。第 ④ 环靠报表和趋势完成 —— 这类游戏最容易死在「玩家看不出自己的操作有没有用」。
- 叙事解谜:一圈可能是几分钟。第 ④ 环靠剧情推进和「啊我懂了」的瞬间完成 —— 反馈延迟最长,所以最需要小的即时反馈来填充中间(这就是为什么好的解谜游戏,连按错的音效都很讲究)。
规律:循环越长,中途越需要小反馈垫着。玩家能忍受延迟,但不能忍受「我不知道刚才那下有没有生效」。