下载 App

《原胞:进化》开发日志 #02:图鉴、碎片、变大、降难度与排行榜

修改于10 小时前1 浏览综合
生存 Roguelike | 五片海域 | 吞噬 · 进化 · 生存
各位好,这里是西河工作室。
开始正文之前,先说一件小事:游戏正式改名为《原胞:进化》(PROTOCELL: EVOLUTION)。
之前它就叫《原胞》,两个字干净,但有个问题——「原胞」只说清了"你是谁",没说清"你要做什么"。我收到过不少反馈,第一眼看到这个名字,会以为是个安静的细胞观察类游戏,或者偏科普向的东西,很难联想到它其实是个吞噬、进化、活下来的生存 Roguelike。
加上「进化」两个字之后,名字本身就把玩法说清楚了:你会从一个细胞开始,一路吃、一路变强。而且"进化"也是这个游戏最核心的那条线——你吃进去的每一样东西,最后都会变成你身上的变化。
名字换了,游戏没变。存档、进度、排行榜都照旧。
horizontal linehorizontal line
上一期日志聊了五片海域的骨架。这两天的工作集中在四件事上:把图鉴做成真正能"收藏"的东西、重做基因碎片的奖励逻辑、重新梳理"吞噬变大"的成长手感,以及根据试玩反馈软化前两关的难度。
内容有点多,我一件件说。
horizontal linehorizontal line

一、图鉴:让"见过"这件事被记住

TapTap
主菜单多了「图鉴(解锁 xx%)」入口。百分比跨局累积,是账号级的收藏进度——死多少次都不会倒退。
图鉴分四类:细胞与怪物、基因技能、食物与道具、远古低语。

没见过的,不告诉你是谁

TapTap
这是图鉴最核心的设计。未解锁的条目只显示纯黑剪影——名字是 ???,不告诉你它是什么、也不告诉你怎么才能解锁。
为什么不直接摊开写:这类游戏里"第一次遇到某个东西"本身就是体验的一部分。如果图鉴把名字和机制都列出来,等于提前剧透。剪影保留了好奇心——你看到一个轮廓,猜它是什么,然后主动去撞它一次。
解锁条件本身也是内容。 我把它做成"你去做了某件事,它就亮了"的形式,而不是"看攻略点一下就开"。具体怎么解锁,这里就不剧透了——留给你们自己在海里发现。
细节上,剪影是用游戏内的真实绘制函数实时画出来的,不是预先做好的图片。也就是说,图鉴里那个细胞的样子,和你在海里遇到的那个,是同一套代码画的——动效、配色、呼吸节奏完全一致。怪物改外观,图鉴自动跟着变,不会出现"图鉴和实物长得不一样"的尴尬。

有些条目,杀一只不算数

图鉴的进度不是简单的"见过就记"。有些条目要你做出足够分量的行为才会点亮——比如打赢一场硬仗,或者把某样东西完整地拿到手。同一个东西见过一次和真正拿下它,在图鉴里是两回事。

基因图鉴:文案从玩法定义自动生成

TapTap
基因条目的说明不是手写的,而是直接从生产代码里的技能池生成。
这是被坑过之后的决定:以前技能数值改了,图鉴文案经常忘了跟着改,出现"图鉴说 Lv.5 +30%、实际游戏里 +50%"这种事。现在只有一个数据源,改数值时文案自动同步,结构上不可能漂移。

食物与道具:也能收进图鉴

TapTap
不只是敌人。你在海里吃到、捡到的每一样东西,也都会记进图鉴——普通的养分、稀有的高能核心、以及各种特殊道具,各自占一格。

远古低语:藏在海域里的叙事

TapTap
每片海域都藏着可以聆听的东西。找到并聆听之后,图鉴里会记录下那段文字;没听过的地方,显示的是「……尚未听见这片海域的低语。」
这些文字拼起来才是完整的背景故事,但玩家不需要按顺序收集,听到哪段算哪段。这也是为什么后来把相关的升级动画从 2 秒延长到了 6 秒——文本值得读完,不该被白光闪过去。
horizontal linehorizontal line

二、基因碎片:一次关于"值不值"的重新设计

这是这两天改动最大、也是我来回推翻最多次的部分。它的历史比最终方案本身更能说明问题,所以完整讲一遍。

第一版:每局都要重新捡

最初的设计是:有几项强力基因不在一开始的候选池里,玩家要在特定海域跑一趟,找到金色菱形标记的"基因碎片",拾取后本局解锁该基因。
(哪几项、藏在哪片海域,这里就不点名了,留给你们自己找。)
问题很快就暴露了:这根本不像"解锁"。 每局开始都要重跑一趟,和"临时增益"没什么区别。玩家会觉得"我明明拿到过它,为什么下一局又没了?"——跨局的成长感是零。

第二版:改成永久解锁,但白送 Lv.1

于是我把它改成永久解锁:首次拾取后写进存档,此后每局开局,该基因直接进公共候选池。
但这又带出一个新的别扭:既然已经永久解锁了,为什么每次捡到还要白送一个指定的 Lv.1?
对一个已经解锁的玩家来说,捡到碎片看到"获得 XX Lv.1"是很奇怪的——那个基因早就在他的池子里了,这一级送的毫无道理,而且每局重复。它不像奖励,更像一个没清理干净的残留逻辑。

第三版:那就不送了?

我想过干脆取消掉这个奖励。但马上撞上另一个问题:碎片还在原地,捡它却什么都不给,那玩家为什么要跑这一趟?
而且碎片的位置不是孤立的——它牵着别的机制,不能简单地把它删掉。于是又绕回原点。

最终方案:把"送一级"变成"自己选一级"

碎片每局都在原位出现;拾取 = 永久解锁 + 一次免费三选一。
TapTap
  1. 首次拾取,把该基因写进本地存档,永久解锁。此后每一局开局,这个基因都直接进公共候选池。
  2. 每次拾取(包括已解锁后重复拾取),都直接进入和升级完全相同的三选一界面——只是玩家本身不升级,同样可以用"重组基因"重抽。
  3. 选中的基因正常 +1 级,和升级获得的等级完全等价。
关键的一步是:把"送哪一级"的决定权交回给玩家。 不再指定某个基因硬塞一级,而是让玩家自己从三个选项里挑。
这样一来,前三版的每个问题都消失了:
  • 跨局成长感:解锁是永久的,写进存档,每局都在(解决第一版)。
  • 不再"重复送同一个":你选什么都行,可能选的正是你最想要的那条线(解决第二版)。
  • 跑一趟不亏:碎片每局都变成一次免费的"自选强化",永远有收益(解决第三版)。
  • 保留地标:碎片还在原位,它牵着的那套机制不受影响。

补丁一:第一张卡,必须是这块碎片

方案上线之后,我自己连玩了几局,发现一个说不上是 bug、但很膈应的地方。
碎片三选一的三个选项是完全随机的。也就是说,我专程跑了一百多米去捡"夜视碎片",结果翻出来的三张卡里可能根本没有夜视——想升的那条线没出现,白跑一趟。
这不对。玩家是为了某个基因才去捡那块碎片的,三选一却把这件事给忘了。
改法很直接:碎片三选一的第一张卡,永远锁定为该碎片对应的基因。
TapTap
上面这张是已解锁后重复拾取夜视碎片的界面——第一张仍然是夜视感知。剩下两张才从候选池里随机抽(并且会先把夜视从池子里摘掉,避免重复占位)。点"重组基因"重抽时,第一张的保底也不会丢。
于是"值不值"这个问题有了明确答案:捡了,就一定能强化到它。 至于另外两张随机卡是"锦上添花"还是"用不上",那是玩家自己的取舍——但至少这一趟不会空手而归。

补丁二:文案要跟着状态走

机制改完之后,还有一处遗留问题——提示文案还停留在"解锁"的语境里。
同一个位置,未解锁时说的是"寻找……碎片,拾取后永久解锁";已解锁后改成"……碎片,拾取即可获得一次免费的基因三选一"。
标题也会去掉"寻找"两个字,HUD 上的导航文字同步切换(比如 ◇ ××基因碎片 · 142 米)。因为对一个已经解锁的玩家说"去寻找那个基因"是说不通的——他早就有那个基因了。
但这一层只做到了"海域发现弹窗"和"HUD 导航",真正拾取后弹出的那个三选一界面,文案却还是老样子——不管你是第一次捡还是第五次捡,标题都写着"基因碎片 · 自选强化"。
对一个已经解锁过夜视的玩家来说,这句话是没信息量的:他既没有"解锁"这回事,也不知道自己为什么又拿到了它。他真正需要知道的是一句话——“这个你已经有了,这次是额外送你的。”
所以这版把三选一界面的文案也拆成了两套:
首次拾取已解锁后重复拾取
顶部小字GENE SHARDGENE SHARD · FREE
主标题基因碎片 · 自选强化该碎片已解锁过
副标题碎片已融合,免费选择一项基因强化你已永久解锁过这项基因,这次额外送你一次免费三选一
判断"是不是重复"的时机很讲究:必须在写入解锁存档之前读一次状态。否则本局的首次拾取会被自己刚写的存档判成"已解锁过",第一次就弹出"你已经有了"的文案——这个 bug 我在测试里踩过一次,现在有专门的断言钉着。
这两件事合起来,其实是同一个教训的两面:机制改完了,不代表改动就完整了。 玩家看到的是文案和排序,不是你的数据结构。数值和逻辑对了,"跑一趟值不值"和"这句话读起来对不对"仍然要单独想一遍。

碎片在世界里的样子

TapTap
金色菱形 + 柔光晕,配一条雷达连线。碎片不磁吸、不计经验、不会自动回收——必须真的游过去碰到它。暂停、死亡、弹窗中即便圆心重合也不判定拾取。
horizontal linehorizontal line

三、细胞变大:重做成长算法

这是整个游戏最核心的循环,也是这两天改得最底层的一块——我把"细胞怎么变大"这件事的算法重新设计了一遍。

只有一种"变大"的方式

你的体型完全由"你吃了多少"决定,升级不会让你变大。
这是重做时定下的第一条规则。旧版里,升级和体型是两条独立的成长线:升级会直接加半径,吞噬量也加半径。结果玩家会陷入"我等级很高但身体很小"的错位感——明明升级了,却没感觉变大。
现在我把它们合并成一条:
体积 = (基础体积 + 当前吞噬量 × 0.02) × 膨胀基因加成
半径 = ∛(3 × 体积 / 4π)
  • 初始体积固定为 1.0 立方米(对应半径约 0.62 米,一个刚出生的小细胞)。
  • 每吃进 1 点营养,当前吞噬量 +1,体积随之变大。
  • 半径由体积反推——是一个真正的球,所以体型增长在前期很明显、后期会自然放缓,不会无限膨胀。
  • 半径渲染时夹在 3.6 米以内,避免超大体型撑爆镜头。
换句话说:你在海里看到自己变大,就是你真的吃到了东西,没有任何隐藏的数值加成在骗你。

两种"吞噬量"

这里有个容易混淆的地方,我特意做了区分:
总吞噬量 eaten当前吞噬量 mass
变化只增不减随吃增加、受伤会减少
作用排行榜计分决定细胞体积
HUD右上角显示不显示,从"细胞体积"感知
受伤会让细胞缩小。 规则是:实际掉多少血(占生命上限的比例),当前吞噬量就减少同样比例。比如生命上限 100,被打掉 20 血(20%),当前吞噬量也减少 20%——体型肉眼可见地缩一圈。
这个设计让"受伤"有了双重代价:不只是掉血,还丢掉了辛苦吃出来的体型。而护盾吸收的伤害不计入缩体——这是缓冲胞衣这条技能线的隐性价值:它帮你保住体型。

谁能吃谁

吞噬判定用的是真实半径比较:
  • 你的半径 ≥ 对方半径 × 1.1 时,才能吞下它。
  • 否则接触就会受伤(不可吞噬的怪物除外)。
  • 温和食草胞永远无害——它比你小时被你吃掉,比你大时只是一个推开的障碍,绝不会伤你。
最后一条是我修掉的一个 BUG:以前判定"无害"靠的是某个内部标记,只覆盖了教学关那批特意做大的食草胞;其他海域里自然长大、偶然超过玩家的普通食草胞会漏进伤害分支,莫名其妙地伤到玩家。现在统一按细胞类型判定,这类细胞永不造成伤害。
horizontal linehorizontal line

四、根据试玩反馈软化前两关

有玩家反馈前两关太难——开局没多久就被猎食胞和病毒胞围死,还没来得及体验进化系统。
我复盘后认为问题在于:第 1 关本该是"教学关",但生成逻辑和其他海域用的是同一套难度曲线,一上来压力就偏大。于是给前两关做了针对性的友好化。

第 1 关:30 米教学保护圈

玩家周围 30 米内不生成猎食胞 / 病毒胞 / 顶级掠食胞。 如果有敌人恰好落在圈内,会被推到 30 米外。
这条规则只作用于主动攻击型的敌人。温和食草胞不受限制——它是教学关的主要营养来源,必须保证玩家随时有东西吃。毒胞群和吞噬者走独立的生成路径,也不受这个圈限制(它们本来就不会在开局出现)。
效果是:你出生后身边永远有一圈"安全区",可以先安心吃几口、熟悉操作,再决定什么时候主动游向危险区。

第 1 关:全程不出顶级掠食胞

顶级掠食胞是体型 2.5 米以上、接触伤害极高的庞然大物。第 1 关全程不生成它,即使时间已经越过了其他海域的解锁门槛。教学关不该出现这种级别的威胁。

第 1 关:食草胞占比更高,且猎食胞始终多于病毒胞

普通细胞的生成比例也重排了:
时间食草胞猎食胞病毒胞
0 秒80%12%8%
60 秒80%12%8%
180 秒70%18%12%
300 秒60%24%16%
  • 第一分钟食草胞占到 80%,压力非常温和,让玩家专心成长。
  • 食草胞比例平滑下降,压力逐步交给猎食胞。
  • 猎食胞始终多于病毒胞——因为病毒胞速度更快、带预判追击,是更难受的对手。把它们排在后面,给玩家一个渐进的适应过程。

第 2 关:入区 20 米保护圈 + 出生点不刷毒食

毒雾之海的主题是"毒",但刚进海域就被迫中毒就太不讲道理了。做了两层保护:
  • 入区 20 米保护圈:进入海域后的出生保护期内,玩家周围 20 米不生成任何敌人(包括初始铺场和毒胞群)。
  • 出生点 15 米内不出现毒食:如果一颗毒食恰好落在出生点附近,会被降级成普通营养。
效果是:你刚落地的那几秒是干净的,有时间看清环境、决定往哪走,而不是一睁眼就在中毒。
horizontal linehorizontal line

五、排行榜:改排序,也改怎么看

TapTap
排行榜这次动了两个地方:排序规则和展示方式。

排序不再只看"活多久"

旧版排行榜主要按生存时间排。问题是:这个游戏里"活得久"和"玩得好"不是一回事——你可以一直躲在角落苟着,时间很长,但一个细胞都没吃掉。
所以我把排序优先级换成了:
抵达关卡 → 等级 → 总吞噬量 → 细胞体积
  • 抵达关卡排第一。能走到越深的海域,说明你越强,这是最硬的门槛。
  • 关卡相同,比等级——进化了多少次。
  • 再相同,比总吞噬量——这一局总共吃进去多少。
  • 最后比细胞体积——你最后长到了多大。
生存时间只展示,不参与排序。 它仍然会显示在榜上,但不再决定名次。你可以看到别人活了多久,但决定你排第几的是"你走到了哪、变强了多少"。

关卡后面,补上海域名

以前榜上只显示「抵达第 3 关」,但玩家其实记不住"第 3 关"是哪片海。现在会写成:
「抵达第 3 关 · 离子之海」
一眼就知道别人打到了哪里,而不是对着一个数字猜。

三个榜,随时切

榜分周榜 / 月榜 / 总榜三种,顶部一键切换:
  • 周榜:自然周(周一 00:00 起)重置,每周都是新的起跑线。
  • 月榜:自然月重置。
  • 总榜:永久累积,见证最老的玩家。
切换榜单只换读取的数据,不重新计算排名,所以点起来是瞬时的。
技术上的一个小设计:云端接口只支持"单个整数主键降序",没法按四个字段依次排。所以我把「关卡 / 等级 / 吞噬量 / 体积」四个值按位段打包成了一个整数——比较这一个整数,就等于按四个优先级依次比较。周/月的周期标识也拼在键里,所以跨周时旧榜自然作废,不需要清理服务器数据。
horizontal linehorizontal line

六、平衡调整

毒素脉冲重做:从"削减敌人体积"改成"减缓敌人速度"。削减体积会让敌人变得更好吞,太接近直接击杀了;减速保留了走位博弈的空间。每 2.5 秒释放,Lv.1 减速 10% → Lv.5 减速 30%。
病毒胞:吞下它立刻受到一次 25 点毒属性伤害(不持续掉血、不减速)。给"能吞但会痛"这个决策加一点重量。
若干技能改成"档位制":以前有几条技能线是"每级 +X%“的线性叠加,升到最后只是数字变大。这次把其中几条改成了三档递进——前两档是数值减免,最后一档给一个质变效果。我希望每条技能线的终点都值得期待,而不只是"再强一点”。
黑暗之海的隐匿者数量翻倍。有玩家反馈这片海域太轻松了,我把数量调上去,让专门为黑暗环境准备的技能真正体现价值。

七、反馈:让每一次操作都被"看见"

数值调完之后,还有一件事同样重要——玩家能不能立刻知道自己做对了什么。这两天补了一批反馈:
受伤缩体时,体积数字闪红。 掉血会让细胞缩小,但缩小的过程比较平滑,玩家不一定注意到。现在只要因为受伤而缩体,右上角的「细胞体积」数字就会短暂闪一下红色——把"我刚才被打了"和"我变小了"这两件事明确连起来。
命中 BOSS 弱点:金光 + 屏幕微抖。 终焉之海的 BOSS 平时装甲护体,只有在核心暴露的窗口才能造成伤害。这个窗口很短,值得给足正反馈:命中弱点时会在核心上爆出一圈金光和粒子,同时屏幕轻微抖动 0.5 秒。装甲命中不触发——抖和不抖的区别,本身就是"这一下打对了"的信号。
中毒状态会主动消失。 以前毒素抗性升到满级、完全免疫毒素之后,屏幕上残留的中毒提示还挂着,看起来像还在中毒。现在会立刻清掉,状态和实际一致。
碎片必须真的碰到才算。 基因碎片不磁吸、不计经验、不会自动回收——必须把细胞游过去碰到它。这条规则我坚持了很久:奖励应该是"我找到了",而不是"我路过了"。
horizontal linehorizontal line

八、修掉的问题

  • 已解锁的基因,图鉴却不点亮。这是上面那轮碎片改造的直接后遗症:以前图鉴点亮的时机挂在"白送 Lv.1"那一步上,取消白送之后,这个时机就一起被删掉了,导致碎片捡了、基因解锁了,图鉴条目却还是黑的。修复后:拾取碎片即点亮图鉴条目——因为碎片是那个基因唯一的解锁入口,解锁时机就是拾取时,和三选一里选什么无关。
  • 温和食草胞会误伤玩家。某些海域里草食胞长大后会被判定为威胁,对玩家造成伤害。现在这类细胞统一按类型判定,永远无害。
  • 某个技能的满级效果没生效。排查出是三个叠加的子问题,逐个修掉了。
  • 拾取后的升级动画太短,玩家来不及读完出现的文本。延长到 6 秒。
horizontal linehorizontal line

下一步

接下来会继续打磨五片海域的节奏差异,以及终焉之海 BOSS 战的演出。如果你们在试玩中遇到任何问题,欢迎在评论区告诉我——尤其是前两关的难度现在是否合适,这是我最想听反馈的部分。
感谢阅读。
西河工作室 / WESTRIVER STUDIO