人生第一款独立游戏开发复盘
目录
Intro
靠现在不写 Tech Post, 一年可能才一篇文章…
写这篇文章前我顺便花了两周把网站总体升级了, 新的 Server Component 的应用对整体网站体验提升特别大, 虽然从 客户端渲染 逐渐转回到 服务端渲染 有一些回归十多年前 PHP 和 JSP 的感觉, 但是现在设备和网络环境已经完全不同, 因此为了体验新技术, 我把整个网站重构了一次.
是的网站什么变化都没有, 只是所有页面可以 1s 瞬间加载了
Game Starts Here
没错, 我花了一年, 一个人写了一个完整的独立游戏.
这是我这辈子代码量贡献最大的一个项目. 甚至比一些公司的项目还要大.
这是我第一个公开发布的独立游戏. 但并不是我制作的第一个游戏.
我曾在高二使用 RPG Maker 制作过一个游戏, 这个游戏还是还是用我初三时候写的一个小说的世界观, 当初我还发布到了起点中文.
但是小说也没写完, 游戏也烂尾了.
在大一使用 C 写了个很华丽的俄罗斯方块, 现在我还存着源码.
大二用 JAVA 写了个 Android 版 SheepFrenzy, 大概就是羊驼接住掉落的食物的游戏, 借鉴了 Doodle Jump, 速度会越来越快且有各种奇怪道具, 当年发布到了安卓市场, 广告收入都没超过 10 块钱.
工作后尝试使用 Game Maker Studio 制作游戏, 当初有很多的困难, 因此也是半路而废.
然后游戏开发的经历停滞了很多年.
一切的开始
- 2022 年 11 月, 看到行业的一些发展方向, 开始学习 Rust
- 2023 年 1 月, 尝试使用 rustlings 学习 Rust
- 2 月, 研究了一下 2D 渲染库, 花了 30 分钟搓出了一个贪吃蛇并成功使用 wasm 打包到浏览器运行
- 3 月, 写出游戏第一版 POC, 改版了两三次, 最终确定了基本框架
- 4 月, 三次迭代后制作了一个
Stage 0 - 6 月, 自行立项, 为此我特地吃了个自热火锅庆祝, 购买 Steam 坑位, 花了钱了这下会逼着自己做完了
- 7 月, 开始开发, 准备音乐花了大概一个月, 最终选定了前 4 关一共 12 首音乐
- 大约花了一个半月时间完成了
Stage 1 - 10 月, 完成了
Stage 2, 同期确定了后面的关卡设计以及音乐 - 12 月, 完成了
Stage 3, 真的是累人 - 2024 年 2 月, 完成
Stage 4, 4 月 完成Stage 5, 5 月 完成Stage 6 - 5 月, 测试, 修复 bug, 优化, 翻译
- 2024 年 6 月, 正式发布
这些应该从一开始就计划好的
- 大约制作到
Stage 4的时候, 我发觉敌人精灵的战斗逻辑太过复杂, 于是从Stage 1开始重构- 花了半个月, 将移动和子弹逻辑分离
- 然后将不同的子弹逻辑也解耦出来, 方便不同关卡复用
- 同期我发觉音乐时间点的逻辑也有问题, 于是花了十几天重构
- 大约做到
Stage 4的时候, 我发觉需要添加一个难度选项- 于是我就想: “干脆多做几个难度”, 加一个难度系统
- 于是又从
Stage 1开始重构
- 最终 release 前, steam 审核员提醒我说我之前游戏介绍说支持英文, 于是我又花了一周时间翻译了所有的文本
- 无数次推翻初步设计, 从第一关重构
- 如果制作到了第 6 关, 突然发现第 1 关的设计有问题, 那么我就得把所有关卡所有场景代码都改一次
- 虽然都是小修改, 但是次数多了也很麻烦
- 最无奈的是, 这样的需求变更是我自己提出来的, 也没有实习生来帮我改啊
AI 是万能的?
- 图片和音乐有很大一部分由 AI 生成
- 无论我写多么详细的 Prompt, 最终生成的图片大多都不符合预期
- 一千多张图片里面只有三到五张符合我期待的风格
- 最终游戏中所有的图片都有我后期 PS 处理的痕迹, 以前画漫画的时候我就是用 PS 鼠绘, 因为有设计的爱好因此对很多 PS 工具都有所了解
- 特别是对于游戏角色素材, 有一部分我依然需要自己用 PS 修饰出我期待的图
- 音乐使用伪 AI 生成, 实际上是一些固定片段的叠加和排列, 因此有部分乐曲会感觉重复度很高
- 我可以自由调整片段长短层次及顺序, 因此生成的乐曲多数我还满意
- 当然, 同样的, 最终游戏中所有的音乐都有我后期 Au 处理的痕迹
- 因为可以根据需求进行调整, 我按照一些固定的乐曲情绪排列, 比如
12-123,123-23-234或者12-123-1234-234等多数大众乐曲的编排顺序, 组合出了我期待的音乐 - 最终还是搓出了约 24 首音乐, 版权要求我不能二次出售只能用于媒体配乐, 花了我大概 400 元
- 我不得不赞叹一下一些作曲人的才华, 例如它们设计一些
日常场景的音乐是按照12-345-345-345-345 无限循环的流程设计的.- 我很好奇这是如何做到的, 如果是单纯一个音频文件如何做到无限循环
- 如果是
12和345分割开似乎可以, 但是很神奇的是,12-345-345-345-345 无限循环可以在任何时候自然中断并无缝衔接一段新的12-345-345-345-345 无限循环 - 要做到这一点, 还需要考虑到
345的结尾和12的自然过度 - 对此我在游戏素材里面做了一些模仿, 不过是比较生硬的
345循环, 听感上差不多但是其实是不同的方案
- 关于文字翻译
- 1K 多个句子和短语, 就算有 AI 翻译, 光审核也把我累的半死
- AI 完全不懂语境和语气, 有些句子翻译的太生硬了, 我还得手动修改
- 到底是谁在那里吹 AI 会直接代替人类翻译的呢?
AI 素材的反思
- 打死我也不相信画师和作曲会失业, 但是根据现在的情况看, 初级的素材生成确实可以用 AI 代替
- 我相信未来的 AI 会越来越强大, 应该可以生成出更多更好的素材
- 但是如果是下一部作品, 我希望和画师和作曲人合作, 我觉得还是需要专业的人来制作风格统一的素材, 或者说, 我希望可以对更细节的部分进行定制
一个美食家并不是定是个好厨师
- 硬核玩家并不一定是一个好的游戏设计师
- 游戏确实是我生命重要的一部分, 但是当我来设计的时候, 逐渐就陷入了自己特定的思维定式
- 我很惊奇地发现, 我对
Stage 4 Boss Battle里面血条动画的设计和塞尔达传说王国之泪最终 Boss 战斗有一样的地方- Boss 战斗到了某个阶段都突然加血并让血条穿出屏幕
- 但是很无奈, 王国之泪发布在 5 月, 我的游戏发布在 6 月, 玩家会认为我
抄袭了, 但是这真的是灵感碰撞到了同一个地方
- 难度设计的问题
只狼的二周目一定比一周目更简单- 我每一个关卡会调试上千次, 因此我可以记下每一个关卡的每一个敌人的位置
- 退款的 Comments 基本都是说难度太高
- 但是这还是我降低了两个 Level 的难度后的结果
- 简单难度我都准备加上
隔壁奶奶都能玩的提示了
市场的反思
游戏有很多类型, 而我一开始选择的是 STG, 但是逐渐设计成了 轻STG + 重MUG 的结合
混合类型的作品面向的市场和直接面向 STG 或者 MUG 的市场不同, 但是我并没有意识到这一点
而且我不应该和 Steam 官方夏促放到同一天启动, 也许当初推迟半个月或者一个月再发布会更好
推广和预热都很重要, 我深知这部分的重要性, 如果有个帮手可能会好很多
ROI 的反思
- 我花了大概 2000 元的成本 + 无数的业余时间
- 但是我对于这样的 ROI 并不满意, 我觉得应该修改一下投入资源的方式.
- 其他还有很多支出
- 立项开始我使用的是 Windows 电脑, 但是在开发到
Stage 3的时候, 我发现四年前的电脑已经跑不动了, 我又不能用公司的 MBP 2019 来 Push 个人项目, 于是我购买了一台顶配的 Mac Mini M2- 额外 16G 内存花了我 3000, 总价可以买两台 Windows 笔记本了, 我的钱包在滴血…
- 立项开始我使用的是 Windows 电脑, 但是在开发到
- Copilot 每月 10 刀
- 一开始我还在用公共账户, 就那种教育认证的便宜的账户, 期间因为各种认证中断等问题, 我折腾了很久
- 后来公司也开始推行 Copilot, 很无奈 Enterprise 账户需要证书才能登录, 所以不能在个人设备上使用
- 后来我真的觉得麻烦了, TMD 60 块钱都不够我一天的饭钱, 于是我开始按年订阅
- Copilot 大概总计 900 左右的支出
- 我也不知道是否应该把这段支出算到成本里面, 但是这一套软硬件更新给了我四到五倍的效率提升
有些时候我在想, 如果没有这些让我提升效率的加成, 这个游戏真的可以按时完成吗?
项目推进的反思
上半年在亚马逊乱翻行业书籍, 找到一本 《How to make things faster》
我一看 23 美元, 立马 下单购买 下载了盗版
这书并不是一本很好的书, 基本都在说一堆开发的大道理, 也许适合初学者入门阅读? 例子都是十几年二十几年前的.
但是 Chapter 104 里面一句话让我印象深刻:
“You’ll do yourself a favor by killing a bad idea before it kills you. If you solve your worst problem, then find the next one. Iterate. Shorter iterations are better.”
我应该缩短开发时间到 6 个月以验证这个 Experimental Game 的可行性, 而不是花费一年的时间.
我应该提供试玩收集反馈, 而不是推行个人主义的设计风格.
我应该和更多更专业的人合作, 而不是自己一个人做.
我想, 游戏开发之路可能暂停一段时间吧
我花费了一年的时间, 实现了一个毫无意义的梦想.
我唯一觉得满意的是, 这款游戏的开发流程即使到了结尾, 我一直保持着对它的热情.
以前我就有一些项目, 到了结尾阶段开始希望其快速结束, 但是这一部作品从头到尾保持了一致的质量.
即使有人觉得太难, 有人觉得太粗糙.
但是我觉得这是我这一年来最好的作品.
…
但是, 我想…
独立游戏开发之路可能暂停一段时间吧…
…
…
…
…
…
…
…
…
…
…
…
…
呸!!!
我才不会停下来呢!
这年头, 我已经失败惯了, 无所谓
我开始设计下一个游戏了!
拜拜!