下载 App
涌现,开发日志2,全面转型钓鱼
修改于2 小时前3 浏览综合
《鱼王纪》开发日志
一开始不是这个游戏
这项目是我和一个 AI 一起做的。我不会写代码,代码都是它写的,我负责说方向、看效果、拍板。
最早做的是虫子。想法很朴素:我想做一个能自己进化的生态,虫子在里面吃、繁殖、变异,看着它自己运转。第一个版本做成了塔防——家园、钱包、战斗、战役模式,该有的都有,能玩。但我做完就发现不对,它变成了一款塔防,跟"进化"没什么关系了。后来又转向虫子毁灭工程,做体素破坏和虫群。也不对,还是偏。
这两个版本现在都删了。但有两样东西留下了。一个是 AI 当时坚持的"模式即插件"结构,每个玩法能整体摘掉不留残渣——当时我不太懂为什么要这么费劲,后来反复推翻重做的时候才知道这个有多重要。另一个是它的一套工作方法:每做一个机制,先写个探针跑数据,而不是写完就说"应该没问题"。后面我一直在用这个办法。
## 换成鱼
推翻重做的原因很直接。在这之前我们还做过两个生态方向,一个池塘一个农场,全都卡在同一个地方——生态很美,但玩家没事可做。看着一池东西自己运转,看五分钟就腻了。
我想到的解法是让玩家去钓鱼。这个想法一出来我自己就知道对了:钓鱼天然就是选择压力。现实里商业捕捞专挑大鱼,几十年下来鱼群平均体型能缩水两三成。玩家把大鱼钓走,剩下的鱼就繁衍得越来越小。玩家不是在收集鱼,是在改变这片水。
这个设定后来成了整个游戏的地基,所有新内容都得拿它来裁:这东西有没有改变选择压力?水下状态能不能从水面读出来?有没有进生态闭环?三条都过不了就不做。这话是我说的,但也是 AI 帮我落成具体规则的。
换皮的时候 AI 帮了大忙。旧虫子的生态是确定性规则——战力比、能量阈值,不是掷骰子。这正好就是我要的"有逻辑,不是按概率",所以三种虫子直接换成了三种鱼:绿虫变草鱼,黄虫变鲶鱼,红虫变黑鱼,鱼苗对应原来的胚虫,靠"吃了什么"单向蜕变成上面三种。立绘都没怎么改。
## 我拍板的那几件事
有几件事是我定的,后来证明挺关键。
**商店不许卖纯数值。** 我要求每件商品都得回答"它怎么改变这片水"。大钩只钓偏大的一半,等于留种;细钩只钓偏小的一半,等于养巨物。这两个阈值后来 AI 提醒我不能写死,得按池里的体重中位数动态算——早期池子中位数才1.6公斤,写死3公斤的话大钩一条都钓不到。这个我没想到,它想到的。
**图鉴进度挂在放生上。** 不是挂在"钓到"上。因为放生才是我希望玩家做的事,进度得和这个方向一致。
**钱必须有出口。** 做到一半 AI 审计发现金币没有出口,一次性商品买完钱就废了。我加了岸边之家,房子五级,合计两万三,再加宠物。宠物我明确要求不产钱、不影响池塘——一旦宠物能赚钱,玩家就会为了效率去养宠物,治愈感立刻没了。
**不做鱼王竞赛。** 鱼王得是生态里竞争出来的,玩家钓到它才有意义。做成排行榜就变成又一个数值目标了。
**岸边种植物不能产钱。** 产钱的话就会和钓鱼分裂成两个游戏。所以产出的是饵料强化材料,直接接上现有的饵料机制。
**别什么都问我。** 这个是做到中间我跟它说的。它老是停下来等我拍板,我让它自己去查同类游戏的资料,自己推进。后来它查了七款游戏,做了份内容扩展方案,结论是我们现在4个生态位加10个变种是偏少的,但更危险的是那10个变种行为完全一样——数量不是问题,同质化才是。这个结论我认。
## 被我自己截图骂的那些天
中间有一段时间改得很密,几乎全是我截图挑毛病推着走的。
我截了图说鱼长大了外貌没变化。查出来是那个半径值是个鱼种常量,构造时设一次就再没更新过,所以0.3公斤的幼鱼和50公斤的巨物画出来一样大。这个 bug 挺离谱的,等于体型系统做了半天,玩家一点都看不出来。
我说房子和池塘看着像两个世界。查出来是池塘俯视、岸边侧视,还能看到墙面和朝上的三角屋顶,拼一起当然别扭。改成俯视之后我说上帝视角也不好,又改成斜俯视2.5D,地面压扁产生纵深,鱼加了水下投影。这次改完感觉对了。
我说上下留白太多、水像一堵平墙。根因是水面占了86%的高度,岸带只剩14%,没有前后层次。把岸带比例调到0.62就好了。
船是删掉的。单指拖动既想划船又想平移,抢手势,加了斜视之后更别扭。我换成打窝——撒饵聚鱼,持续40秒,范围限制在玩家附近14格。然后让镜头拉近到2.6倍,像《饥荒》那样,玩家站在岸上,鱼竿从手里连到浮漂。之前鱼竿是凭空出现在水面的,这个我一直觉得别扭,这次一起修了。
图鉴解锁不了也是我发现的。根因是变种编号被存成了浮点数,2.194 这种,而它是当数组下标用的,永远对不上。
还有一次是我批评"玩法简陋",然后 AI 加了三样东西:视口系统、观赏缸、音效。前两个成了,音效没做成——账户没积分,接口直接返回余额不足。这个到现在还挂着。
## 它犯的错
它有个毛病,我纠正了三次:它老说自己看不到画面,不能截图。但它明明能。我每次都得跟它说"你百分百具备这个能力,之前见过你用很多次"。它后来才承认是自己没去查工具就凭印象下了结论,还试过一个错误的方法(用某个截图接口,得到全黑图)就认定不行了。正确方法一直是有的,就在它自己的技能目录里。
还有几次是代码层面的。最典型的是黑鱼,顶级捕食者,灭绝过三次,每次根因都不一样:第一次是求偶判断排在追猎后面,黑鱼纯肉食一直在追猎,永远走不到求偶;第二次是捕猎给固定能量,但黑鱼代谢快,一次捕猎只够撑28秒,永远攒不到繁殖线;第三次是地图上就五条黑鱼,找不到配偶。现在稳定在8到12条了。它自己总结说顶级捕食者是生态健康度的试纸,它灭绝就说明物质流断了。这话说得挺对。
还有个 Lua 的坑它踩了三次:`local a, b = cond and obj:Method()` 会丢掉第二个返回值,`and` 会把多返回值截断成第一个。每次都炸成空指针报错。第三次之后它才写进规则里。
生态那边的坑更隐蔽,都是"看起来对,跑起来是死的"。比如逃跑函数注释写着"远离威胁",代码其实是随机乱跑;比如有个死亡计数器永远不会增加,所以鱼永远不会老死,代际更替根本没转起来;比如冬季繁殖系数设成0,种群400秒内团灭,因为繁殖停了但老死照常。这些肉眼根本看不出来,全是跑探针跑出来的。
## 现在
游戏本体是完整的了。钓鱼三个阶段——抛竿等待、扬竿判定、收线博弈——都做了,手感参数是实测标定的。生态闭环成立,跑3000秒跨三个冬天,四种鱼共存,养分稳定。图鉴、商店、岸边之家、观赏缸、岸边植物都有。47种器官,9种皮肤变种。存档能往返,同一个存档读两次各跑500步,结果完全一致。
前几天它做了一次大重构。`Main.lua` 涨到两千多行,UI 面板全挤在一起,`World.lua` 到1789行,把生态模拟和钓鱼交互混在一个文件里,加功能越来越难下手。拆完之后 `Main.lua` 973行,`World.lua` 737行。这批改动还没提交,主代码有两百多条类型报错,是重构中间态——方法挂到类上之后类型推导跟不上,不是语法错误,最新的构建是过的。
接下来按路线图走内容深度。生态位从3个扩到8个,先做鲢鱼和鲫鱼。鲢鱼直接从水里吸养分,等于给"养分过剩"开了个新出口,玩家乱投饵不再是纯坏事,会养出一群鲢鱼。鲫鱼两种食物都能吃,生态崩了也不会死绝,是保底鱼。然后做钓点系统、天气昼夜、池塘日记,最后是养出鱼王。
明确不做的是战斗、塔防、关卡,通用数值成长,抽卡盲盒。
有一个技术债记着:鱼的蜕变换算表是硬编码的,加新生态位必须同步改,不然鱼苗没法蜕变成新鱼种。#聚光灯gamejam开发者日志











![[choose emotion?!]第三期:海洋,水,以及情绪截图](https://img2-tc.tapimg.com/moment/etag/Foqh5DJvxqVi2oW1KNZIMLJsQ0vD_20261016204730.png/_tap_ugc_m.jpg)



