第零章:新手的第一课:正确认知游戏开发

发布时间:2026/6/28 8:25:20

第零章:新手的第一课:正确认知游戏开发 「合抱之木生于毫末九层之台起于累土。」**------《道德经》欢迎来到《酒魂》的开发之旅。在你打开 Godot 之前我想先和你聊几件事------不是技术而是心态。 很多人在学习游戏开发的过程中不是被技术难倒的而是被自己头脑中错误的预设打倒的「我不会数学」、「我没学过编程」、「一个人做不了游戏」。本章的目标是把这些预设一条一条地拆开还原游戏开发的真实面目然后帮你找到属于自己的起点。0.1 游戏开发到底难不难------拆解恐惧的来源如果你问一个做了五年游戏的老手「游戏开发难不难」他可能会耸耸肩说「就那样。」如果你问一个刚入行三个月的新手他可能一脸茫然「太难了不知道从哪下手。」为什么同样的领域感受相差这么大因为他们面对的根本不是同一个问题。老手已经把「大问题」分解成了无数个可以独立解决的「小问题」新手面对的是一个没有被拆解的整体自然感觉无从下手。0.1.1 「太难了」通常意味着什么当你感到「游戏开发太难了」这种感觉背后通常是以下几种情况之一信息量过载一次性接触了太多概念节点、信号、资源、脚本…大脑还没有把它们分类归档。缺少反馈写了一堆代码屏幕上什么都没发生不知道对不对。目标不清晰想做一个「游戏」但「游戏」这两个字太模糊了不知道第一步该干什么。拿别人的成品和自己的起点比较看到精美的 3A游戏再看看自己的代码落差极大。关键认知 游戏开发的「难」绝大多数是认知结构问题不是智力问题。你不是不够聪明你只是还没有找到正确的拆解方式。本书的核心任务之一就是帮你建立这套拆解结构。0.1.2 独立游戏的真实工作量网上流传着很多关于独立游戏开发的「神话」------一个人做了五年做出了《星露谷物语》一个团队三个月做出了爆款。这些故事是真实的但它们不是典型情况而是极端案例。以《酒魂》这样规模的单机游戏为例一个有一定基础的独立开发者不是完全零基础完成一个「够玩」的版本大约需要阶段参考时间业余 / 全职学习 Godot 基础到能独立写功能4-8 周 / 2-3 周完成核心玩法原型酿造 基础战斗2-3 个月 / 1-1.5 个月扩展内容任务、AI、存档3-4 个月 / 2 个月打磨、测试与发布准备1-2 个月 / 3-4 周总计写实估算约 10-18 个月业余这个数字是为了让你有心理准备而不是为了吓退你。游戏开发是一场马拉松节奏比速度更重要。很多人在前三个月做出了很好的原型然后因为「感觉做不完」而放弃------其实他们距离终点已经走过了最难的那段路。0.1.3 三个最常见的认知误区◆ 误区一「我要先把数学学好再做游戏」真实情况《酒魂》这类 2D 游戏的绝大多数功能用到的数学只有加减乘除和偶尔的三角函数。你在初中学过的数学已经够用了。本书所有涉及数学的部分都会用直白的语言解释「为什么这么算」而不只是给你一个公式。◆ 误区二「没有美术基础就做不了游戏」真实情况在学习阶段完全可以使用免费的占位图片placeholder、开源素材和程序化生成的图形。本书配套资源包含所有《酒魂》用到的美术资产你不需要自己画一笔。等你把系统做通了再考虑美术的事。◆ 误区三「一个人做游戏太孤独、太难坚持」真实情况孤独是真的但有解法------社区、打卡群、Game Jam 都是很好的外部驱动力。本书第 1.5 节会专门介绍如何利用社区让自己坚持下去。本节小结 难不难取决于你怎么拆解。本书的结构就是一套经过验证的拆解方式从最小的可运行程序开始一层一层向上搭建每一步都有看得见的成果。0.2 你需要什么基础------诚实的自测清单在开始之前我们来做一次诚实的评估。这不是入学考试没有对错只是帮你了解自己的起点从而选择最合适的阅读路径。0.2.1 必要条件没有这些会很艰难条件说明能流畅操作电脑会创建文件夹、安装软件、使用浏览器搜索。能阅读并理解中文技术文档本书内容清晰但需要你愿意多读几遍。对游戏有真实的热情不需要是硬核玩家但你要真的想做出一款自己满意的游戏。0.2.2 加分项有更好没有也完全可以加分项如果有你可以…有任意语言的编程基础跳过 0.5 节急速入门直接从对照速查表开始玩过 RPG / 经营类游戏对《酒魂》的系统设计有更深的直觉理解有基础美术或音乐能力在打磨阶段可以做出更有个人风格的内容接触过 Unity 或 UEGodot 的概念有所不同但学习曲线会更平缓0.2.3 你不需要的东西✅ 放心清单 以下这些你完全不需要 ✗ 数学专业背景初中数学足够 ✗ 计算机科学学位 ✗ 绘画或设计能力有配套美术资产 ✗英语阅读能力本书全中文Godot 有中文文档 ✗ 昂贵的硬件Godot 对配置要求极低4GB 内存的电脑完全够用0.3 学习路径规划------你的专属学习地图根据你的基础不同本书提供三条建议的阅读路径。找到自己所在的那条按图索骥即可。路径 A 完全零基础建议顺序第 0 章全读→ 第 1-2 章设计理念 → 第 3-4 章Godot 工具→ 第 5章数据驱动 → 之后按本书章节顺序逐步推进 重点不要跳过第 0.5 节每章的代码示例 务必跟着在 Godot 里实际运行一遍。路径 B 有编程基础 不了解 Godot建议顺序0.4环境安装→ 第 1-2 章快速浏览 → 第 3-4章重点学习节点/信号机制 → 第 5 章数据驱动开始搭《酒魂》底层 → 之后按章节顺序正常推进 重点GDScript的信号机制与你熟悉的事件系统思路不同 第 4.2 节要认真看。路径 C有 Unity/UE 等引擎经验建议顺序0.4环境安装→ 第 3-4 章对照阅读 → 第 5 章《酒魂》数据框架感受 Godot 节点哲学 → 之后按章节顺序正常推进 重点Godot 的「一切皆节点」哲学与 Unity的GameObject/ Component 架构有本质区别避免直接套用 Unity 思维。 第 4.1 节的类比说明专门为你准备。⚠️通用建议 无论哪条路径每一章的代码示例都请务必在 Godot里亲手跑一遍。读书和动手是两种截然不同的学习效果。你会发现把代码真正运行起来之后再回头看理论章节清晰度会翻倍。0.4 工具箱安装全流程工欲善其事必先利其器。本节带你把开发环境从零搭建完毕。如果你在安装过程中遇到问题可以先查阅本节末尾的「常见错误速查」。0.4.1 Godot 4.6 下载与安装Godot 是本书的核心工具。它完全免费、开源安装包不到 100MB并且不需要管理员权限。访问官网https://godotengine.org/download选择你的操作系统Windows / macOS /Linux下载「Standard」版本不要选 .NET 版本除非你打算用 C#Windows 用户下载的是一个 .zip 压缩包解压后直接双击 Godot_v4.6_win64.exe即可运行无需安装。建议把它放在一个固定的目录如 D:\Godot\。macOS 用户下载 .dmg 文件拖入 Applications文件夹。首次打开需要在「系统偏好设置 → 安全性」中点击「仍要打开」。Linux 用户下载 .x86_64 文件chmod x 后即可运行。常见问题Windows 上双击无反应右键选「以管理员身份运行」试试。如果提示缺少 DLL通常是缺少 VC运行库在微软官网搜索「Visual C Redistributable」下载安装即可。0.4.2 Git 与 Gitee 配置版本控制强烈建议版本控制是新手最容易忽视、又最后悔没用的工具。它的核心价值是任何时候都可以「反悔」回到过去的任意状态。下载安装 Githttps://git-scm.com/download注册 Gitee 账号国内访问速度快https://gitee.com在终端Windows 用 Git Bash执行初始配置终端命令# 设置你的身份只需执行一次 git config --global user.name 你的名字 git config --global user.email youremail.com # 在你的项目文件夹里初始化仓库 git init git add . git commit -m 初始化《酒魂》项目 养成好习惯 每次完成一个功能就 commit 一次。提交信息写清楚做了什么例如「完成背包拖拽功能」。三个月后你会感谢现在的自己。0.4.3 验证安装------你的第一次「Hello, 酒魂」所有工具装好之后用以下方式验证一切正常打开 Godot新建项目起名「酒魂_测试」在默认的 2D 场景里添加一个 Label 节点点击「」按钮搜索 Label在检查器右侧找到 Text 属性填入「你好酒魂」按 F5 运行如果窗口里出现那行文字安装成功 ✅res://HelloJiuhun.gd# 如果你想用代码实现同样效果给 Label 挂载这个脚本 extends Label func _ready(): text 你好酒魂 print(Godot 运行正常开始我们的旅程吧)0.4.4 安装问题速查表症状解决方法Godot 打开是英文界面编辑器 → Editor Settings → Interface → Editor Language → 简体中文运行项目时窗口闪一下就消失查看底部「输出」面板的红色报错信息通常是脚本语法错误Git commit 报错 ‘user not set’执行 0.4.2 中的 git config 命令设置用户名和邮箱macOS 上 Godot 无法打开系统偏好设置 → 安全性与隐私 → 通用 → 点击「仍要打开」0.5 15分钟 GDScript 急速入门零基础专属 阅读说明 如果你已经有任何编程语言的基础可以跳过本节直接阅读第 5.6 节「GDScript vs Python对照速查」。本节专为完全没有编程经验的读者设计。编程听起来很神秘但它的本质非常简单你用文字告诉电脑要做什么电脑按照你说的去做。GDScript 是 Godot专用的编程语言它的语法接近自然语言对新手非常友好。让我们用 15分钟把最核心的概念过一遍。0.5.1 变量给数据起一个名字变量就是一个「盒子」你往里面放数据然后用名字来找到它。变量基础示例# 用 var 关键字创建变量var player_name李白# 文字字符串var health100# 整数var drunk_level0.0# 小数var is_alivetrue# 布尔值真/假# 修改变量的值就像往盒子里换东西health80# 受了伤血量从100变成80drunk_level0.3# 喝了点酒微醺状态命名规则用小写字母和下划线名字要有意义。health 比 h 好drunk_level 比 dl 好——三个月后你还能看懂自己写的代码。0.5.2 函数把一段指令打包成可复用的工具如果变量是「放东西的盒子」函数就是「做事的工具」。你定义好一个工具之后可以反复调用它。函数基础示例# 用 func 关键字定义函数func heal(amount):healthhealthamountprint(恢复了 str(amount) 点生命值)# 调用函数——让玩家恢复 30 点生命heal(30)# 函数可以返回计算结果func get_health_percent():returnhealth/100.0# 返回血量百分比var hp_pctget_health_percent()# hp_pct 现在等于 0.8 关于缩进 GDScript 用缩进Tab 键或 4个空格来表示代码属于哪个函数或条件块。这是新手最常犯错的地方。每行代码前面的空格数量必须一致Godot会帮你自动缩进尽量不要手动修改。0.5.3 条件判断让代码做选择程序需要根据不同情况做不同的事这就是条件判断的用途。条件判断示例# if / elif / else 结构ifhealth0:print(你已倒下……)is_alivefalseelifhealth30:print(危险生命值告急)else:print(状态良好继续前行。)# 多个条件用 and / or 连接ifdrunk_level0.8andhealth50:print(大醉释放酒魂技)0.5.4 循环重复做一件事当你需要重复执行某段代码时用循环代替复制粘贴。循环示例# for 循环遍历一个列表var ingredients[枸杞,人参,当归]foriteminingredients:print(加入材料item)# while 循环条件满足时一直执行var brew_progress0whilebrew_progress100:brew_progress10print(酿造进度str(brew_progress)%)# range() 生成数字序列常用foriinrange(5):# i 依次等于 0, 1, 2, 3, 4print(第 str(i1) 壶酒)0.5.5 类与节点在 Godot 中组织代码在 Godot 里每个脚本通常附属在一个节点Node上。extends 关键字告诉 Godot 这个脚本是哪种节点类型。完整 Godot 脚本结构# 这是一个完整的 Godot 脚本示例extends Node2D# 说明这个脚本挂在 Node2D 节点上# 变量定义在函数外面整个节点都能访问var player_name李白var health100# _ready() 是特殊函数节点加载完毕时自动调用一次func _ready():print(节点已准备好玩家player_name)# _process(delta) 是特殊函数每一帧都会调用# delta 是上一帧到这一帧经过的时间秒用来保证# 不同帧率的电脑上运动速度一致func _process(delta):pass# pass 表示「这里什么都不做」占位用0.5.6 信号让节点之间「说话」信号是 Godot 最重要的概念之一也是最体现 Godot 特色的地方。它让节点之间可以互相通知而不需要直接「认识」对方。信号的定义与连接# 节点 A定义并发出信号extends Node signal brew_complete(wine_name,quality)# 定义一个信号func finish_brewing():var wine杜康美酒var quality85emit_signal(brew_complete,wine,quality)# 发出信号# 节点 B接收信号并响应extends Node func _ready():# 连接信号当 BrewingVat 酿造完成调用 _on_brew_complete$BrewingVat.brew_complete.connect(_on_brew_complete)func _on_brew_complete(wine_name,quality):print(wine_name 酿造完成品质str(quality)) 信号的妙处 用信号BrewingVat酿酒缸不需要知道谁在监听它。任意数量的节点都可以连接同一个信号——UI更新、成就检测、音效播放同时触发互不干扰。这就是观察者模式的精髓我们会在后面的章节反复用到它。0.5.7 小自测------5 题验证一下以下 5个问题思考一下然后翻到下方查看答案。不要跳过这个步骤主动检索记忆是最有效的学习方式之一。Q1. 如何定义一个名为 current_wine 的变量初始值为字符串「杜康美酒」Q2. _ready() 和 _process() 各在什么时候被调用Q3. 如果你想在玩家死亡时通知所有其他系统UI、音效、存档…用什么机制最合适Q4. 以下代码的输出是什么 var x 10 if x 5: print(“大”) else: print(“小”)Q5. 如何用 for 循环打印「酿造第 1 壶」到「酿造第 5 壶」小自测参考答案# 参考答案# Q1: var current_wine 杜康美酒# Q2: _ready() 在节点首次加载时调用一次# _process(delta) 每帧调用一次通常 60次/秒# Q3: 信号signal——定义信号在死亡时 emit# 各系统分别 connect 处理自己的逻辑# Q4: 输出「大」因为 10 5 为真# Q5:foriinrange(1,6):print(酿造第 str(i) 壶)本章小结你已经完成了出发前最重要的准备工作。让我们整理一下你在本章收获了什么认知校准游戏开发的「难」是结构问题不是能力问题。本书的每一章都是一个经过设计的拆解步骤。自我定位通过自测清单你知道了自己的起点并找到了对应的学习路径A/B/C。工具就绪Godot 4.6、Git已经安装完毕你做出了第一个能运行的 Godot 场景。语言基础掌握了 GDScript的五个核心概念------变量、函数、条件判断、循环、信号。 下一步 现在翻到第 1 章我们来谈谈游戏设计的哲学—— 在动手之前先明白自己要做什么能省去后期大量的「推倒重来」。延伸阅读与资源以下资源不是必须的但如果你在本章某处卡住了或者想深入了解某个主题它们会很有帮助Godot 官方文档中文https://docs.godotengine.org/zh_CN/ 最权威遇到不懂的 API 第一时间查这里《游戏编程模式》Robert Nystrom 著中文版免费在线阅读本书设计模式部分的理论基础强烈推荐Git 官方入门教程中文https://git-scm.com/book/zh 如果你想更系统地学习版本控制Godot 中文社区贴吧 / B站搜索「Godot 教程」遇到本书没有覆盖的问题时这里通常能找到答案------准备好了吗我们继续。

相关新闻