进行中
Way Of The Warrior 3D
Unity 2022.3 的 Roguelike 割草 / Horde-Survival。核心是一套纯 C# 的确定性模拟层:30Hz 固定步长、表现层与逻辑层严格分离、所有战斗可重放。
- 起止
- 2025年11月1日· 进行中
- 技术栈
- Unity 2022.3.62f3C#Sim/View 分离确定性模拟事件日志
架构宪法
三条不可协商的规则,写在 Docs/BattleSystem/战斗系统设计:Sim中心化、固定步长与确定性.md 里:
- Sim 层不引用
UnityEngine。 不碰Time、不碰Transform、不碰UnityEngine.Random。由 CI 静态检查强制执行。 - 表现层可以插值,Sim 层绝不可以。 插值引入的误差一旦回流到逻辑,确定性就废了——用
readonly struct从类型层面堵死。 - 随机源只有一个。 自己实现的 xorshift,种子写进事件日志头。
为什么值得这么折腾
割草类游戏的 bug 有一半是时序问题:同屏几百个实体,某个帧序列下某个敌人的位移算错一点点,就卡住抖动。传统调试方式对它无效——你没法“稳定复现”一个概率三十分之一的现象。
确定性模拟把这个问题变成:拿到种子和输入日志,本地重放出完全一样的过程。
当前进度
- M0–M3 已结案:Sim 层、固定步长、事件日志、确定性随机、碰撞与伤害结算
- M4 进行中:波次系统、战斗 HUD、奖励面板
已知的技术债
- 实体销毁时的淡出还没做,目前是硬切
- 配置管线未打通:
Excel/下 18 张表是空模板,CombatCatalog运行时层未实现 - 空间网格在实体超过 500 时查询效率下降,需要换成层次网格