DEVELOPER'S JOURNAL

NOTE 00 · HOW IT STARTED

开局一张图——P0B 开发随录

先画图后写码;技术栈怎么定的,AI 在流程里占什么位置;四天关掉第一阶段,联机月踩的坑,以及一个月后的真实状态。

这些是我自己写的记录,会提到失败、犹豫和还没做完的事。它描述的是现在,不是最终形态,也不是任何发售承诺。

前言

这个游戏是从一张图开始的。不是比喻——2026 年 7 月 13 日,仓库里连 project.godot 都还没有,先让生成模型出了四张世界风格候选图,挑了一张,取名 Lush Fine,然后才开始写第一行代码。到写这篇的时候刚好三十五天,一个人,一个仓库,一个能从城镇出发、打完一局、再回到城镇的联机 ARPG 雏形。

这篇算是开局的随录:技术栈怎么定的,流程长什么样,第一个月踩了哪些坑。后面几篇再分别聊场景、战斗、角色和验证。

技术栈

客户端 Godot 4.7,GDScript,Forward+。服务端 Nakama 3.39 加 PostgreSQL 16,服务端逻辑跑在 Nakama 的 TypeScript 沙箱里。这个沙箱没有 Node 的 fs 和 crypto,一开始觉得是个坑,后来发现它反而帮了忙:所有需要两边一致的确定性逻辑,都被逼着用最朴素的方式写,因为 GDScript 那边必须能算出一模一样的结果。

至于代码本身,说白了大部分是 AI 写的。Cursor、Claude Code、Codex 轮着用,实现、测试、校验脚本、证据整理,基本都走这条线;三维几何交给 Meshy,概念图和远景贴图走生成模型。这在 2026 年做独立游戏已经算不上什么新闻,就当作技术栈里普通的一环写在这里。真正花时间的不是“让它写”,而是把要什么说清楚、把结果验一遍——生成变快之后,瓶颈很快就挪到了规格、验证和选择上,这条体会贯穿了整个项目。

于是仓库里长出了一套看起来有点官僚的东西:每一次要花钱的生成、每一次改运行时默认值、每一次往远程部署,都要有一条批准记录;每个模块配自己的校验器;每次正式捕获封存成一个证据目录,封存之后不能改。写起来慢,读起来烦,但一个人做项目没有 code review,这套东西就是 code review。

开局一张图

先画图后写码,理由很实际:一个人做游戏最容易失控的不是功能,是方向。功能错了能改,方向漂了不容易察觉,等发现的时候往往已经做了一堆不该做的东西。先把“对”长什么样钉死,后面每一步都有得比。

同一天还有件事,现在看比选图更有教育意义:前两版实机画面,机器那边全过——帧时间达标、二十个敌人同屏、没有节点泄漏——目视没过,推倒重来。从这天起流程里就分了两道门:指标是及格线,画面另算。后面无数次验证都是这个套路:先跑校验,绿了再看画面,反过来的顺序只会被一张好看的截图骗到。

7 月 15 日,从城镇出发、打完一局、回到城镇,第一次完整走通。试玩之后写下的验收原话是「我试玩了觉得没有什么问题」——然后封存的验收清单十六项一项没填,于是它永远停在 0/16。属实汗颜,但规则就是封存的东西不回头改,批准是另外追加的一条记录。三种语言也是从这天起同时在线的,中文原稿、日英完整;补翻译这件事一旦往后拖,就永远不会有那一天。

第二天,剑士和霸主的形象定稿,Phase 0 收尾。四天。

联机月

Phase 1 是联机,权威移动、在线战斗、社交城镇、远程部署,一个包一个包往前推。最难受的一段是在东京的服务器上证明一件事:战斗中途服务器重启,结算必须正确作废,不能给任何人发奖励。这件事本身不复杂,复杂的是每次失败都跟重启无关,离谱程度一次比一次高,细节留到战斗那篇再展开。总之十几次一次性批准之后终于撑不住,给代理留了一句「不要让我批准,我批准wp4的任何行为」,这句话后来还真成了正式的授权记录。规则没错,粒度错了。

同一天顺手发现另一个坑:仓库里有 1,007 个文件从来没被 Git 跟踪过。九天前明明写了允许提交推送的批准,但代理开工前先读的几份文档里还留着旧的“不要动 Git”,于是新规则从来没生效过。文档之间打架,输的永远是后写的那条。

后记

一个月下来的状态,用最不美化的说法:城镇、组队、森林里的一局远征、门后的霸主、结算,这条线在本地和局域网里能完整跑通,一到四人。三百多次提交落在十九天里,最多的一天七十次。吸血鬼能玩,但正式形象还在审;东京的服务器上一次恢复没成功,回滚成功了,两码事。

实机截图:旅人广场的北门前,几名旅人和展示用的哥布林、牛头人站在石造拱门下,阳光从树冠间落下实机截图 · 开发中版本
旅人广场的北门,每局远征从这里出去、从这里回来。实机截图,开发中版本,没有再渲染。

网站上的图分两种:大部分是再渲染的实机截图,为了气氛重新渲染过;少数几张像上面这张,直接从引擎里截出来只缩小没动。前者好看,后者是真的。游戏还在做,且待下篇。