下载 App
《变成黑洞》开发日志
日期:2026-10-20 代码规模:12424 行 / 16 个文件


一、本期主线:从「700 体大混沌」到「渐进解锁的稀疏宇宙」
上一期结束时,场上铺着 700 个天体——引力对、碰撞对、守恒也对, 但玩起来画面挤成一团,性能也吃紧。这一期把整个世界结构重排了一遍: 玩家看到什么、什么时候看到、天体从哪里来,全部重写。
1. 渐进解锁:场上只出现「玩家阶段 +1」以内的天体
开局铺满十阶各两个,是「一上来就看见红巨星」的根源。 改成:
| 玩家阶段 | 场上允许的阶段 | 数量 |
|---|---|---|
| 1 碎石 | 1、2 | 6 + 4 |
| 2 陨石 | 1~3 | +3 只小行星 |
| … | 每进化一阶解锁下一阶 | 高阶 2~3 只 |
- 各阶数量 StageCounts = {6,4,3,3,2,2,2,2,2,2},共 28 只,保证空间充足。
- 新解锁的天体刷在视野外的环带(星域半径的 0.55~0.92),要飞过去找。
- 融合、碎裂后不补位——靶子会被消耗,宇宙是有限资源。
2. 三个方位地标:恒星、中子星、黑洞
星域三个角(0°/120°/240°)各放一个终极目标:
- 初始静止(v=0),之后和所有天体完全一样:受引力、被撞、能融合。
- 地标之间不特殊、不免疫——它们是「活的」。
- 实测:初始 v=0,1 分钟后被引力拉出 62/51/26 的速度,行为与普通天体一致。
3. 引力与地图比例的配平
地图从 10000 扩到 20000 后,地标之间的吸拢问题暴露: 黑洞在 16400 距离处仍有 5.3/秒² 的引力,10 分钟足以把三个地标拉到一起。
按「黑洞影响半径 < 地标间距」反解,全场统一:
GravityG: 12.0 → 5.0| 指标 | G=12 | G=5 |
|---|---|---|
| 黑洞影响半径 | 37815(够得到中子星) | 24409(够不到) |
| 恒星 d=600 给玩家的引力 | 490/秒² | 204/秒²(推进力的 5.2%) |
主角色存续同步改善:6 分钟模拟从「剩 6 只」改善为「剩 8 只」。


二、碰撞与融合:分三档、分方向、按质量主导
1. 弹开彻底移除
用户指出:宇宙里这种速度的碰撞应该「嵌进去」。 弹开的根因是冲量公式 (1+e)×相对速度 对质量悬殊的两体, 即使 e=0.08 小体的反弹速度也≈撞击速度本身。改为:
Restitution: 0.08 → 0.0(完全非弹性)实测 1:100 对撞后两体严格共速(-495.9 vs 理论 -495.0),零反弹。
2. 碰撞分三档,表现各不同
| 档位 | 强度 | 表现 |
|---|---|---|
| 轻微 | < 0.5 | 只在接触点两侧喷碎屑,无爆炸 |
| 中度 | 0.5~0.85 | 轻度爆炸 + 接触面半量喷溅 |
| 重度 | > 0.85 | 三层冲击波 + 四面八方飞溅 |
- 动画画在真实接触点(球面沿法线的交点),不再画在两球中点。
- 侧撞(切向占比 > 0.45)沿切向喷溅,不再画成「俯视爆炸」的同心环。
3. 融合:判据、主导方、演出
- 判据改为引力束缚:相对速度 < 接触处逃逸速度 √(2G(m₁+m₂)/r)。 相对静止必然满足;质量越大允许的并合速度越高——标准宇宙的判据。
- 主导方 = 质量大的一方(等质量时玩家优先,保证确定性)。
- NPC 之间恢复融合(此前为保靶子误禁)。
- 撕碎演出:被吞方原地炸开撕裂环,碎屑沿宿主方向喷出并卷入。


三、食物系统:铺满全场、每颗 1728
1. 数量与分布
| 项 | 改前 | 改后 |
|---|---|---|
| 开局食物 | 8 块(堆在边缘) | 200 块铺满全场 |
| 视野内可见 | 0 块 | 9 块(移动约 2.4 秒一块) |
| 补充间隔 | 8 秒 | 4 秒 |
2. 每颗碎石 = 1728(与阶段表一致)
用户指出:表里碎石门槛是 1728,那所有碎石就该是这个质量, 吃一颗就该 +1728。SpawnMass: 125 → 1728。 碎石→陨石从 469 颗降到 35 颗。
3. 两条铁律
- 自然碎石与撞击碎片分开计数(32 + 120 各自独立),碎片永不挤占口粮名额。
- 碎片永不回收自然碎石——自然碎石只由自己的名额控制,零回收(实测 10 分钟回收 0)。
4. 刷新避开地标
出生角度规避三个地标的方向(按地标实际占角留余量), 食物从地标之间的空隙漂向中心。实测开局 24 块中 0 块落在地标方向内(改前 7 块)。


四、观感修正
- 碎石 ×8(FragmentScale):食物碎石从 1.4px → 10.8px,视觉与碰撞同步。
- 碎石/陨石解耦外观与门槛:新增 visualR 字段, 视觉与接触半径用它,质量门槛仍用 radius³——只改外观不动数值。 (碎石 62 / 陨石 115,体型递进 62→115→121,进化不缩水)
- 玩家移速翻倍再翻倍:PlayerSpeedMul 2.0 → 4.0(开局 1040/秒)。
- 松手即停:速度拆成操控分量(跟手、松手归零)与引力分量(持续、缓慢衰减), 去掉匀速直线漂移。


五、死亡界面:写明死因 + 给建议
- 死因从笼统的「被更大的天体吞噬」改为写明凶手: 物理层记录吞噬者的阶段,显示「被「黑洞」吞噬」。
- 每次死亡随机一条真实成立的建议(碎屑回收、贴合融合、引力弹弓、 受创保护、碎石 1728、三角地标),不画饼。


六、验证与已知边界
- 纯 Lua 回归(sparse_food_regression.lua,17 组用例)全部通过: CCD、三档撞击净增、共享预算、储备收支、地标行为、食物铁律。
- LSP 全程 0 Error。
- 诚实边界:
- 撞击频率仍偏低(10 分钟 0 次撞击、287 次融合的测量发生在地形改动前, 引力调低后主角色会更多走「贴合融合」而非「高速撞击」——高速撞击的手感还未验证);
- 全局引力积分仍是近似,非全宇宙严格能量守恒;
- 手机实机帧率未测。


七、一条教训
这期反复出现同一个模式:一个乘法题被我做成设计评审。 「宇宙质量同比下降」本是 MassScale 一个数字的事, 却先交出了三页公式、四种方案、五次确认。 期末已把所有质量入口收敛为 Config.MassScale 一个开关—— 下次这类请求,先给数字,再谈物理。








