该系列文章为本人开发战棋游戏的回顾总结。
游戏玩法上会主要参考火焰纹章系列1,待游戏开发到一定进度时会进行自定义的玩法扩展。
下面是游戏开发使用的引擎和框架。
项目源码GitHub
系统整体结构包括: 战棋战斗系统, 战斗编辑器系统, 其他辅助功能模块
战棋战斗系统包括: 战场地图模块, 战斗单位模块, 战斗流程模块
战斗编辑器系统包括: 地图数据编辑器, 战斗数据编辑器
战场地图设置为四边形网格地图, 使用字典保存地图网格单元数据。
战场生成步骤:
战斗单位BattleUnit继承于网格单位GridUnit。把和地图交互的基础功能放在基类中, 后续实现例如地图建筑之类的功能时也可以继承GirdUnit, 可以方便的实现扩展。
构造: 不同的战斗单位通过id读取配置表对应的数据进行构造。
与其他模块交互: 尽量使用事件以降低和其他模块的耦合。
战斗单位自动行动AI初步设计
后续可能会使用行为树来优化自动行动AI
使用有限状态机管理战斗的各个流程, 有限状态机的实现来自于游戏框架GameFramework。
战斗状态初步划分为: 回合切换状态, 战斗单位行动状态, 战斗单位结束行动状态
暂时使用普通的广度优先搜索, 待有性能需求之后改成A*寻路。
寻路时, 将网格单元数据包装成导航节点数据, 导航节点数据实例使用引用池进行管理以降低频繁分配内存的性能消耗。引用池的实现来自于游戏框架GameFramework。
使用UGUI进行UI界面的开发, 使用GameFramework的UI模块进行辅助管理。
UI开发流程大致为:
火焰纹章wiki ↩︎