可视化组件,获取信息还是收集信息?

Visual component, get fed information or gather information?

我有两个组件,核心组件和视觉组件。核心组件执行所有游戏逻辑并执行所有 client/server 计算。该组件始终在对象上,包括客户端和服务器端。

然后我有可视化组件,它只是客户端。

我的问题是,核心组件应该告诉可视化组件它需要的信息而可视化组件完全不知道核心组件的存在,还是可视化组件应该始终从核心组件更新和获取信息并拥有核心组件完全不知道视觉组件的存在?

我认为最直接的方法是核心组件不应该知道视觉组件。可视化组件应该了解核心组件,以便查询、监听事件、更新等。这样可以在不影响核心组件的情况下更换可视化组件,而且系统可以支持许多不同的可视化组件,如果你去一个多平台游戏,只要核心组件也是多平台的。此外,保持组件松散耦合也很重要。为了轻松更换组件,从一开始就以松散耦合的方式设计系统。

如需灵感,请查看这些对 id 的一些开源游戏的精彩评论 http://fabiensanglard.net/quake3/。我相信评论中提到了每款游戏的架构。