当前位置 >>主页 > 1.76特戒小极品传奇 >

实体 - 组件 - 工作者架构及其在大型在线游戏中的使用

当前一代游戏正在推动今天的技术在艺术和游戏玩法方面的可能性。像Unity和Unreal这样的游戏引擎在为玩家渲染游戏世界方面做得非常出色,但他们也在做引擎盖下的所有工作以使游戏本身发生 - mdash;运行物理,AI,寻路和游戏逻辑。

对于单人游戏,引擎将在玩家的设备上完成所有这些工作。自几十年前的发明以来,游戏循环的概念并未发生太大变化。

多人游戏并非如此。游戏循环在客户端和服务器之间分配,客户端处理输入和渲染,服务器执行世界模拟工作。

但是以这种方式构建游戏可以实现的目标是有限的。你只能在一台服务器上安装如此多的物理和人工智能,这不可避免地会导致世界规模,玩家数量或物理或人工智能的复杂性方面的妥协。

这反过来又限制了创造性的愿景。当游戏逻辑,物理和人工智能已经在争夺可用资源的一部分时,没有多少空间可以尝试真正创新的想法。这是一个我们一直在思考的问题。实体 - 组件 - 系统模式

大多数游戏在某种程度上遵循实体 - 组件 - 系统(ECS)模式。每一件事都是“事情”。在游戏世界中由实体代表。这些可以是角色,树木,汽车的一部分或整个宇宙飞船,具体取决于你的游戏。

实体由其组件定义,组件描述其状态的属性。组件可以在不同实体之间共享,这导致模块化设计。例如,字符和树都可以共享定义其位置和旋转的物理组件,而库存组件只能由字符使用。

这些实体和组件由系统实现,通常是处理游戏不同方面的线程。物理系统更新物理组件,AI系统将观察世界并做出决策,游戏逻辑系统将使游戏世界按照其设计者的意图行事,等等。

这种方法的局限性在于所有这些系统都在容量有限的单一服务器上运行;每个系统都在与其他系统竞争循环。

但是,如果每个系统都可以是分布式系统呢?

这与21世纪初谷歌的顿悟相同:开发在商用硬件集群中运行而不是在单片大型机上运行的应用程序更便宜,更简单,更具可扩展性和可靠性。

当然,构建分布式系统很难。非常努力,甚至;您需要调试竞争条件,编写网络代码,考虑并发性和一致性,尝试理解Paxos,放弃和实现Raft,在您的设计中构建容错,制定处理网络延迟和数据包丢失的策略,放置指标和监控系统到位,以及与制作游戏的乐趣和快乐无直接关系的无数其他问题。

这似乎是一种绝望的情况。解决方案存在于理论上,但在实践中,对于游戏开发者来说似乎是不可能复杂的,游戏开发人员已经在构建游戏所涉及的所有内容中达到极限!

一种新方法:引入工人

幸运的是,有可能以优雅的方式表达这个问题,这保留了ECS模式的简单性,但使平台能够抽象出构建分布式系统的所有不愉快。

关键创新是引入工人的概念。我们将每个系统都放在ECS中,并用分布式系统代替它;每个分布式系统都是由许多工作人员构建的,每个工作人员都是一个程序,可以模拟世界上某个实体子集的某些组件。最明显的通用工作示例是游戏引擎,逻辑工作者甚至游戏客户端(桌面,移动甚至VR耳机)。

我们称之为Entity-Component-Worker架构:

工人可以做的最直接的例子是通用游戏逻辑工作者和物理引擎。也许令人惊讶的是,游戏客户端也是在

THE END

上一篇:Xbox 360游戏已经发货


下一篇:Conan GM to Goons-你PvP很好,现在......