1.立项原因 / 旨在解决什么产品问题:
回合制战棋战术游戏是游戏行业中成熟且拥有稳定受众的品类,但其战斗核心普遍存在状态难治理、规则与表现耦合、迭代易出 bug 的问题。个人或小团队做此类游戏时,往往是"边写边改、改一处崩一片",原因是战斗状态缺少单一权威来源,伤害、移动、Buff、回合、胜负彼此引用交错,导致规则难以测试与扩展。本项目的立项目的是:为网格回合制战术游戏构建一套职责清晰、可测试、可扩展的战斗内核,把领域规则与 Unity 表现层彻底解耦,让战斗规则能独立开发、独立回归、独立演进。
2.行业场景 / 业务背景:
网格回合制战术类游戏在移动端、PC 与独立游戏市场均有成熟商业先例,玩法门槛低、策略深度高,适合作为验证"工程化游戏内核"的载体;同时它包含网格寻路、回合调度、技能效果、Buff 生命周期、敌方 AI、胜负判定等完整且互相依赖的规则域,是检验软件架构与测试质量的典型场景。
ECS 战斗域内核:BattleWorld 为单场战斗唯一权威,BattleTransaction 事务化写入并支持 Undo 回滚,列式组件存储、动态位集、Buff 实例游标。
技能系统:Move / BasicAttack / Overheat 统一走同一条 Skill 执行链,Effects(移动、伤害、行动锁定)与 Buff(灼烧、行动占用)可配置组合;每一步与目标、成本在执行前整体预检。
回合系统:Player / Enemy 阶段切换、按 Initiative 的敌方行动顺序、行动点(AP)与结束玩家阶段。
敌方 AI:EnemyDecisionSystem 依据只读可达格与技能评估,选择移动与攻击目标。
任务系统:消灭全部敌方单位判定胜负,失败优先于胜利,终局不可回退。
表现层:Battle HUD、按技能列表动态生成的技能栏与技能详情、目标选中与合法格/敌方高亮、EntityView 逐格移动插值、头顶血条、受击闪红、胜负结果提示。
UI 框架:UIModule / UIPanel 的 Persistent / Screen / Modal 生命周期、设置与退出确认弹窗、输入阻塞与退场收口。
数据驱动:实体、技能、Buff、关卡、HUD 表现均由 ScriptableObject 配置,经校验后映射为纯 C# 数据进入 Domain。
1."我"负责哪些具体任务:
我负责战斗领域的完整设计与实现:BattleWorld / BattleTransaction 权威状态与事务写入、技能与效果 / Buff 生命周期、回合与敌方 AI、应用层 Command/Query/Event 边界、ScriptableObject 配置映射与校验;同时负责表现层的 Battle HUD、目标选中与高亮、EntityView 移动与受击反馈,以及配套 EditMode 持久测试。
2.项目使用了哪些技术栈、架构,实现上亮点、难点:
技术栈:Unity 2022.3 + URP;C# 以 asmdef 划分程序集;Domain/Application 为纯 C#(noEngineReferences);Command/Query/Event 同步消息机制;ScriptableObject 配置映射;EditMode 自动化测试。
亮点:① 单一权威 BattleWorld,全部可变状态经 BattleTransaction 修改并支持 Undo 回滚,杜绝双写;② 技能全 Step 作为不可中断原子意图,一个事务完成成本、效果、锁定、胜负复核,Commit 后才发布事件;③ 严格依赖方向:Presentation→Application→Domain,Domain 零 Unity 依赖;④ 确定性模拟:稳定 EntityId、显式排序、不使用随机数。
难点:① 在"规则原子性"与"表现可观看"之间划清边界,动画与镜头回写不得影响已提交的领域结果;② 跨程序集靠 internal + 调用点清单约束事务所有者,避免写入口泄漏;③ 让每一份快照、血条、HP/AP 都只消费权威状态、不缓存第二份。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论