###最近遇到了几个复杂系统的设计,包括:程序员
粒子系统性能优化
技能系统异步
剧情系统编辑器
AI系统性能
UI系统优化
场景系统命令行
###发现这些复杂系统最终都采用了树状结构配置:设计
例如经典的 ogre 火炬之光的粒子系统;协程
rpg游戏的 技能系统,火炬之光,暗黑破坏神;游戏
剧情系统,魔兽争霸3编辑器中的剧情;
AI行为树, 例如 Halo 光晕;
UI树状结构;
场景树,四叉树,八叉树,kdtree;
###树状结构系统的好处是:
业务逻辑互相之间解耦合;
系统容易扩展和修改;
系统模块之间互相访问的方式也是很是规范化;
这样设计的系统,很是优雅,欢迎你们和我多多交流关于 树状结构在游戏设计中的应用。
###而协程是 很是优雅的用于将异步业务逻辑线性化的机制, 经过结合协程和树状结构能够设计很是优雅的系统。
例如AI行为树:
行为树有重要的Action 节点用于执行必定的命令行为,而Action是须要必定时间来执行的,传统的作法是经过Tick 机制,即每帧率更新,可是 存在严重问题是每帧更新会致使 上下文丢失,每次执行都必须从新根据状态来跳转代码;
而协程序好处,即免去写状态机的麻烦,由编译器生成状态机,而程序员只须要设计,业务流程,以及执行等待便可。
虽然忙等待可能会有性能损失,可是带来的开发巨大便捷是很是有优点的, 同时即使须要热点性能优化,只须要手动将 协程改写为 状态机便可。