第五回:填童年塞元婴巧媳妇把世界越改越厚,拆测试分三营呆码农替她兜底
L 一口气给游戏加了性别、童年、元婴专属事件和转世继承,还花一整个下午连提六次只为调一个突破概率;Y 趁她不注意,把测试拆成三个营,默默把后方整理了一遍。
以下情节纯属虚构,如有雷同纯属巧合。
开场
L 开始嫌游戏太薄了。
不是功能少。功能一直在加。是感觉少。她说不太清楚,但反复用了一个词:"没有前史。"一个修仙者,生下来就开始修炼,没有名字没有性别没有童年,连哭都没哭过一声——这不是修仙,这是流水线。
"人总得先当几年人吧。"她跟 G 老师聊完以后,回过头来就开始动手了。
她给每个角色补了一段前世今生
2 月 12 号上午,L 打开 Kimi,开始一条一条地喂需求。`game-config.js` 里多了一大段 `birthDesc`。
男孩出生:"家门殷望,男儿降世。"女孩出生:"娥眉清秀,母亲大喜。"然后是童年。二十个事件,从一岁写到十岁。"追着蜻蜓跑了一整天。""发了一场高烧,梦里似乎看到了仙人。""被邻居家的鹅追了三条街。"
有些事件只有男号能触发,有些只有女号能触发。男的会遇到南宫婉,女的会遇到韩立。男的捡到秘籍,女的挖出神甲。文案全是 L 自己写的,Kimi 负责把这些内容塞进 config 的正确结构里。L 喂得特别顺,像在填一张她早就想好了的表。
顺手她还把"天灵根"改成了"大聪明"。
Y 那会儿没在旁边。他后来翻提交记录的时候才看到这个改名,愣了一下,然后笑了。
一个下午,六次提交,只为一个突破
同一天下午,L 进入了一种很特别的状态。
她开始调突破。就是修仙者从一个境界升到下一个境界的那个关卡。原来的逻辑很简单,随机数一摇,过了就过了。L 觉得不行。"这跟抽奖有什么区别?得看属性。"
她先跟 G 老师讨论了突破应该是什么感觉——不是纯运气,也不是纯数值碾压,应该两者都要看。聊清楚了就去找 Kimi:"加一个两阶段突破,先看基础成功率,越高境界越难;再看悟性加气运的总和,过线才算。"Kimi 给了她一版。跑了一把。太难了。L 把数字改一下再让 Kimi 刷新。又跑了一把。太简单了。再改。阈值从乘 20 改成乘 15。又跑。还是不对。基础惩罚从每级 5% 改成 3%。属性权重从 2 倍改成 3 倍。阈值又往上调了一轮。
下午两点半到五点半,六次提交。提交信息越来越短:`突破机制修正`、`突破数值修正`、`修正突破概率`。到最后连标点都不带了。
L 每调一次,就重新从头玩一局。那个下午她大概玩了二十局。每局结束她都会盯着死因看一会儿,嘴里嘀咕一句"不对""太快了""这个死得不合理"之类的话,然后回去改数字。
不是她一时兴起在乱调。是她在用最笨的办法测手感。
她顺手还给称号改了名
改着改着,L 开始嫌称号不够好玩。
"体修"太正经了。改成"地主家的傻儿子"。"短命鬼"太直白了。改成"就这?"。"药罐子"改成"凡人修仙"。然后又加了几个新的:
"逆天改命"——三个负面天赋起步,还能撑到筑基。"天妒英才"——三个正面天赋起步,结果没活到筑基。还有一个她特别满意的:"金刚芭比"——女号,体质超过一百。
她加"金刚芭比"的时候停了一下,念了两遍,然后说:"这个好。这个必须留。"
连称号达成的条件也一起动了手。"绝世欧皇"的气运门槛从 30 拉到 150,整整翻了五倍。"万年王八"从看体质改成看年龄——活过三百岁才算。"软饭硬吃"更狠,必须触发过"不可描述的事",还得遇到合欢宗五次以上。L 加事件计数器的时候脸上的表情很微妙,像是在憋一个不太适合说出来的笑话。
元婴事件:她写嗨了
2 月 13 号,L 开始写元婴专属事件。
她先跟 G 老师聊了一下午,讨论到了元婴阶段的修仙者应该是什么状态——已经不是普通人了,见识广了,荒诞的事也多了。L 觉得他们应该遇到一些不一样的事。不一样到什么程度呢——
"神识外放八百里,听了隔壁合欢宗长老的情感纠葛。"
这是第一条。男号看到的后续是:"发现绝色仙子竟是抠脚三万年的糟老头子。"
然后是:"闭关打了个盹,醒来发现自家宗门已换了三茬掌门。"
再然后:"道生一,一生二,原来就是二进制。"
这条 L 自己写完也愣了一下。本来想写悟道,写着写着就歪了。歪得挺好。加十点悟性。
还有一条她自己特别喜欢的:"长得像韭菜的千年灵草炒了鸡蛋,味道有点苦。"女号专属版:"供奉画像过度美化,宗门小辈认不出祖师奶。"
文案全是 L 自己写的,Kimi 负责把它们包成 config 里正确的事件格式、概率、属性影响。写完这些事件,L 觉得影响力不够大,隔天让 Kimi 把所有数值翻了一倍。元婴嘛,排场要大。后面又追加了三条稀有事件,其中一条"分魂夺舍"只有千分之八的概率,触发一次直接加 2500 修为。
"修到元婴的人不容易,"L 说,"得给点好东西。"
转世钩子和分享截图
同一天她还做了两件事。
第一件:转世继承。角色死后,下一世可以继承上辈子最强的那个属性——加一点。不多。但够让人想再来一局。结算页面上会写一行小字:"转世福泽:下一世体质+1。"
不是数值上有多大用。是心理上给一个钩子。让人觉得这次死了没白死。
第二件:分享按钮。L 让 Kimi 加了一个截图功能,用 html2canvas 把结算页面拍下来,手机走 Web Share API,桌面端直接下载。文件名叫 `修仙结算_128岁_地主家的傻儿子.png`。她试了一下,拿着截图说:"这个发群里刚好。"
后来那个截图按钮被搞复杂了一次——加了二维码、加了分享栏——结果又被回滚了。最终留下来的还是最简单的那版。有时候功能就是这样,加三层不如退两步。
Y 趁夜拆了测试
L 忙着填内容的这几天,Y 一直在看。
看什么呢。看提交记录。越看越觉得不对劲。不是 L 改得不好。是改得太快了。事件在加,突破在调,称号在换,天赋冲突在出现——config 越来越胖,逻辑越来越复杂,原来那一坨测试已经快兜不住了。
2 月 15 号晚上十点半,Y 打开 Codex,开始拆。
他让 Codex 把原来一个大测试文件拆成了三个:`config-contract.test.js` 只管结构和类型,`engine-behavior.test.js` 管流程和状态变化,`pinned-values.test.js` 只钉真正稳定的常量。README 里加了一段,解释为什么要这么分。然后又补了几套 smoke 测试:导航流程、转世存档、修为增长,各跑一遍。
这事 L 不知道。她那几天还在继续调元婴事件数值、修死亡后事件触发的 bug、加天赋无限重抽的测试开关。她改完每次都自己跑一遍游戏看看,从来不跑测试。
Y 也没跟她说。测试这种事,说了也没意义。跑得过就行。
最后一个 bug
2 月 16 号下午,L 报了个 bug。
"死因看不到。"
"什么意思?"
"就是人死了,底下那行字被按钮挡住了。"
Y 看了一眼。结算按钮盖在日志区最后一行上面。纯 CSS 问题。让 Codex 加个 `padding-bottom: 60px`。
六十个像素。两分钟修完。但 L 能注意到这个,说明她是真的在一遍一遍地玩。每一遍都玩到死。
从 2 月 12 号到 16 号,这个游戏从一个能跑的原型,变成了一个有性别、有童年、有突破手感、有元婴深度、有转世钩子、有分享截图、有测试护栏的东西。不是多了几个功能。是厚了一层。
L 管这叫"终于有点像个游戏了"。
Y 管这叫"她终于把 config 撑到需要拆文件了"。
说的是同一件事。