大家好,我希望你们都好!我已经花了几个月的时间在开发一个类似于文明(Civ)的大型策略游戏,使用了基于六边形地图的回合制。 我正在使用Monogame进行渲染。 在我逐一检查系统时,我发现游戏架构可以变得非常复杂。 abstraction层次来连接系统变得疯狂。 目前,我希望游戏速度快,所以所有计算都被分解为使用投影的delta。 从每个回合的资源数量到雾霾和其他机制。 这意味着系统中的小变化可以在移动期间维持投影并且没有重大开销,而不需要重新计算整个地图六边形。 首先,我使用管道(pipeline),这样我就可以在不扩展逻辑方法中添加明显步骤。 然后,管道是变异(mutation)入口: 当玩家移动单位时,变异请求发生在管道中。 管道(我尝试)将有单一责任的变化,并且如果其他系统受到影响,它将发布事件来通知该系统。 然后,从发布/订阅(pub/sub)层,事件被处理,并且每个系统都会调用正确的代码(当单位移动时,雾霾处理程序将更新玩家和该单位的雾霾)。 然后还有变异本身: 我添加了脚印(footprints)。 每个处理程序都会发布需要更新投影的变更(例如,添加,删除,总和为零的重算)。 这样我就可以跟踪变更并在投影更新期间验证它们。 例如,在我的游戏中,单位有影响力,所以当单位移动时,之前的六边形会减少影响力,而移动到的六边形会增加影响力。 这些总和为0,所以我可以在管道结束时验证它们。 我没有游戏开发的经验,正在思考策略游戏是否需要那么复杂,或者我是否已经过度工程化了一些部分。 或者,最大的问题是: 我应该期待其他架构块/抽象层级(abstraction)吗? 我知道我有非常雄心勃勃的机制,但仍然。 有没有人能分享他们的经验?