跳转到内容

Pyrogenesis 引擎/模拟

来自维基教科书,开放世界中的开放书籍

任何游戏的最重要的方面是其游戏玩法。在 Pyrogenesis 中,模拟可以被认为是执行游戏玩法的地方。模拟是引擎的一部分,它接收来自玩家(包括 AI)的命令,并将它们转换为游戏世界中的动作。

模拟子系统在 simulation2/Simulation2.cpp 中定义。它的核心类 CSimulation2Impl 由 ??? 实例化,并从单位管理器(CUnitManager)和地形(CTerrain)构建。仅从这一点,我们就可以推断出模拟处理单位如何相互作用以及与地图地形的交互方式。

当 CSimulation2Impl 被实例化时,它还会初始化一个组件管理器(CComponentManager?)。组件是在理解模拟工作原理方面最关键的概念之一。从编程角度来看,组件仅仅是通过组件管理器访问的子系统。例如,有一个路径查找组件用于推导出跨越地形的最短路径,一个声音管理器组件用于输出音乐和声音效果,以及一个弹道管理器组件用于驱动诸如箭头和长矛之类的弹道计算。

但是,虽然这些子系统(组件)中的每一个都只被组件管理器实例化一次(我认为),但它们可以与游戏世界中的任何实体关联(我认为),并且每次只能与一个这样的实体相关联(我认为)。因此,作为模拟的用户,将模拟视为由一组实体组成,每个实体“拥有”(与之关联)一个或多个组件,可能更容易理解。例如,一个士兵单位可能有一个路径查找组件,因此它可以在地图上找到自己的路,一个攻击组件,因此它可以攻击它遇到的任何敌人,以及一个装甲组件,因此它可以处理其他单位造成的伤害。


Clipboard

待办事项
所有其他事项。


关于如何为整个会话加载单个组件实例:对于单个组件,您需要将其附加到系统实体,这不幸地需要进行 C++ 更改。位置是:source/simulation2/Simulation2.cpp:128

华夏公益教科书