跳到正文
0:00 / 0:00
进行中

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 里:

  1. Sim 层不引用 UnityEngine。 不碰 Time、不碰 Transform、不碰 UnityEngine.Random。由 CI 静态检查强制执行。
  2. 表现层可以插值,Sim 层绝不可以。 插值引入的误差一旦回流到逻辑,确定性就废了——用 readonly struct 从类型层面堵死。
  3. 随机源只有一个。 自己实现的 xorshift,种子写进事件日志头。

为什么值得这么折腾

割草类游戏的 bug 有一半是时序问题:同屏几百个实体,某个帧序列下某个敌人的位移算错一点点,就卡住抖动。传统调试方式对它无效——你没法“稳定复现”一个概率三十分之一的现象。

确定性模拟把这个问题变成:拿到种子和输入日志,本地重放出完全一样的过程。

当前进度

  • M0–M3 已结案:Sim 层、固定步长、事件日志、确定性随机、碰撞与伤害结算
  • M4 进行中:波次系统、战斗 HUD、奖励面板

已知的技术债

  • 实体销毁时的淡出还没做,目前是硬切
  • 配置管线未打通:Excel/ 下 18 张表是空模板,CombatCatalog 运行时层未实现
  • 空间网格在实体超过 500 时查询效率下降,需要换成层次网格

相关:Unity 生命周期、协程与时间系统