立项背景和目标:旨在从零构建一个轻量级、跨平台的即时战略(RTS)游戏引擎及前端编辑器,验证使用 Avalonia 框架结合 C# 在高性能复杂渲染与游戏底层逻辑开发中的可行性,打破常规 UI 框架的性能瓶颈。
核心功能模块:包含基于底层图形库重构的渲染引擎、基于 ECS(实体组件系统)的架构中枢、流场寻路与动态避让系统、基于精灵图与行为树的实体状态机、以及解耦的前后端命令派发中心。
业务流程/功能路径:玩家通过前端触发交互指令,经由自定义的鼠标/键盘状态机拦截,转化为命令快照;指令通过桥接器被发送至后端的 CommandDispatcherSystem 进行统一批处理与逻辑计算;最终 CollectSystem 收集帧数据,通过双缓冲机制交由前端高效渲染。
整体架构与设计思路:数据驱动
放弃了传统的面向对象(OOP)层级,采用了基于数据驱动的 ECS(Entity-Component-System)架构。通过将数据(Component)与逻辑(System)彻底分离,极大提高了 CPU 缓存命中率,为海量同屏单位的并行计算打下基础。
模块化解耦: 建立了 Client、Core、Engine、Editor四大模块。利用依赖注入与反射机制,实现了核心引擎与表现层的零耦合。
核心模块开发:
渲染引擎重构:针对 Avalonia 原生渲染在动态复杂场景下的性能瓶颈,定制了基于 SkiaSharp 的渲染管线。通过直接操作底层渲染上下文(Context),利用矩阵变换(Matrix Transformation)实现高性能的相机缩放与位移。
双缓冲渲染链路(Double Buffering): 实现了“生产者-消费者”模式的渲染数据链路。CollectSystem 作为生产者在逻辑帧结束时收集所有渲染原语(Primitives),将其压入双缓冲队列,由前端 Renderer 独立进行异步绘制,有效解决了渲染与逻辑争抢 CPU 资源导致的掉帧问题。
资源与状态管理:开发了高效的材质管理器(Texture Manager)与精灵图(Sprite Sheet)动画系统,支持高频状态切换下的动画平滑过渡。
技术难点攻克:
大规模寻路优化:针对 RTS 中常见的 A* 算法在大规模群体移动时的性能开销,实现了流场寻路算法(Flow Field Pathfinding)。通过预计算网格地图的 Cost Map 和 Integration Field,将寻路复杂度从单位数量级降至地图规模级,支撑了成百上千单位的同时移动。
复杂单位行为控制: 采用行为树(Behavior Tree)构建实体的 AI 逻辑),相比传统状态机(FSM)具备更高的可扩展性。
交互指令冲突解决: 针对高频键鼠操作与逻辑帧不同步的问题,引入了桥接模式(Bridge)与命令快照系统。通过鼠标状态机拦截交互事件并转化为原子命令,在 CommandDispatcherSystem 中进行统一的批处理与一致性检查,解决了多单位操作时的逻辑冲突与“幽灵位移”Bug。
工程化实践: 实现了基于 JSON 的配置系统,支持单位属性与游戏设置的热重载,提高调试效率。