翻译:实体系统是MMOG开发的未来:第一部分

发表于2017-08-28
评论0 1.2k浏览

extra

http://t-machine.org/index.php/2007/09/03/entity-systems-are-the-future-of-mmog-development-part-1/
看到ECS的一张老贴,顺手翻译了下。— 译者:zzh1234567

几年前,实体系统(或者组件系统)是个热门话题。特别是 Scott Bilas 在GDC上,做了一个很牛的演讲,是关于在地牢围攻的游戏开发中使用实体系统的。实体系统的主要优势是:

  • 设计师不需要依靠程序员来修改游戏逻辑
  • 规避掉了“不可能”的问题:就是在项目一开始的时候就要硬编码所有实体关系。
  • 允许方便地实现一些会导致传统OOP对象被切割的游戏设计理念。
  • 更快地编译、测试和调试周期
  • 更敏捷地编写代码

    我第一次愤然使用实体系统要回溯到2001-2003年,当时,我从事MMOG服务器中间件的工作。我们面对MMOG开发中的几个最折磨人的问题,其中之一是在发布之后难以持续修改游戏逻辑。这些问题最终把我们引向了实体系统。之后,我认识到实体系统几乎是完美方案,它可以为大多数MMOG的开发节省大量时间,并且可以在发布之后,付出减少代价,便可几乎无限制地重写基础游戏功能。

最后的这个问题对于一款MMOG的成功了说,至关重要。一旦一款MMOG成功发行,它的长期成败相比其他因素,将更多依赖于开发团队能否把这款游戏月复一月地进化成更好的游戏。

从首次遭遇实体系统中,我受益匪浅,学到的更多是关于一些出错的事上和是什么让实体系统的开发特别困难,而不是什么东西我们撸对了。我们还发现性能很容易变成主要问题-虽然他们非常灵活和动态,但是没有预编译查找和优化会导致运行时性能令人失望地(不可接受地)差。为什么?主要是因为运行哪怕是一个单一方法的调用,所需要的引用和检查数量(不过稍后,我会细说这个问题并告诉你如何修正这个问题)。

我继续前行,并没有再次琢磨它们,直到去年。在2006年,我加入到Op Flashpoint 2的团队,作为网络主程。我们尝试制作一款MMO-FPS游戏,其规模史无前例。而我发现编程团队在考虑一个实体系统去驱动整个游戏。实体系统对OFP2团队来说,吸引力(相比之前)有所不同-主要是从实体系统中,团队能得到内存管理上的提升,还有面向-流的编码(对于PS3开发来说,这是基本的)的好处 - 但是实体系统最终转变成了MMOFPS中的“MM”和”O”的一个银弹。作为网络程序员,发现实体系统成为所有其他子系统的一个互连,这是一个解脱:实体系统意味着我可能实现复杂的延迟隐藏(latency hiding)和预测技术,同时避免了干涉到游戏系统的其他部分的编码。当你的团队有20 个程序员的时候,你可不想为了他们所有人,被迫重写设计代码,而只是为了“网络友好”。

虽然我工作在OFP2,我也联系了Scott,并且就实体系统可能的未来,包括对它们的一些额外用途,以及如何更广泛地分享知识交换了理念。他鼓励我开博(而且,实际上,这也是我一年后开博 T=Machine 的主要原因),因此我想通了,现在正好是开始(最终)谈谈这些实体的时候了 :)。

并且因为这个博客的存在而抱怨Scott…

之后,我断断续续地深入思考了实体系统和在MMOG开发中使用它的适用性(再次!)。只是在这次-幸亏OFP2和它抛出的一些问题- 我更好地理解了如何适用实体系统去提高而不是损害性能,并且明白了实体系统适宜解决的一些其他重要问题。最显而易见地是,它们在PS3开发中,表现非常好。知道PS3的基础架构如何工作,我不能秒懂你怎么用别的而不用一个完整的实体系统去开发游戏。这头野兽有太多洪荒之力了,所以你肯定可以有很多不同方式来编写游戏,但是它特别适合实体系统这个方法。

居然如此,我开始认为下一代MMOG几乎不可能开发成功,除非极大地基于一个核心实体系统。“几乎”是关键词-除非你想耗资¥1亿来开发…

“凡事皆有可能”,当然,所以有许多例外-但是,想想任何不按此路线前行的团队,将因此痛苦不堪。

我认为大多数人将认同。但是…最近关于游戏工业邮件列表上的讨论-和我在游戏公司中遇到的那些曾经比我编程好的多的程序员-使得我意识到对于实体系统有太多的无视了,而且很多人并没有接近发挥实体系统的全部潜能的地步。因此,如果你感兴趣,读下去…

我将整一个系列帖子(这会花段时间去全写完!),但是我将整写差不多这样的东西…

附录
Android手机上的实体系统 - 使用Java一个具体的例子

编辑,2007年12月-你可能也想看下 Mick West’s introduction to entity systems for game development,它帖子更短,但范围更窄。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引