英文原文: https://github.com/mzaks/EntitasCookBook
Hi,
我的名字是 Maxim,我是一名软件开发人员。 2012 年底,我在柏林的休闲游戏工作室 Wooga 工作时偶然发现了 ECS(实体组件系统)和 Entitas(ECS 的实现)。从那以后,我帮助改进了 Entitas 并将其移植到不同的语言,并自己用它构建了几个游戏和应用程序。
老实说,写这本书不是我的主意。 Entitas-CSharp 社区的优秀人士将我推向了这个方向,并承诺在此过程中提供帮助。由于这是我写的第一章,我仍然希望能得到一些帮助。
本书将涵盖 ECS 概念。这些概念是如何在 Entitas 中实现的。我们构建了哪些工具来使使用 Entitas 进行开发获得更好的体验。最后但同样重要的是,使用 Entitas 构建游戏和应用程序的秘诀。
如果您是 ECS 新手并想了解它是什么?这本书是给你的。
如果您了解 ECS,但更想了解如何使用 Entitas 构建软件?这本书是给你的。
如果您了解 Entitas 并想浏览有关如何将其应用于不同用例的想法?这本书是给你的。
如果您已经对 Entitas 有经验,并且想为其构建一些工具以使您的生活更轻松?这本书是给你的。
如果您想将 Entitas 移植到另一种语言?这本书是给你的。
如果你认为 Entitas 很垃圾,你想实现自己的 ECS 框架?即使在这种情况下,这本书也是给你的!
本书将有 3 个主要部分:
本节将包含 ECS 概念及其在 Entitas-CSharp 中的实现。由于本书的想法起源于 Entitas-CSharp 社区,因此代码示例将使用 C#。但我可能会添加一些关于如何在 Entitas 家族的其他成员中实施相同概念的旁注。
厨具是我们为使用原料而实施的工具。我将介绍已经建立的工具,但也会透露一些可能很酷但仍处于早期开发阶段或只是我在过去 5 年多的时间里听到或听到的想法的想法。也许其中一些会激发您实施它们或有另一个更酷的想法。
本节将介绍现实世界的问题以及如何使用 Entitas 解决这些问题。在这里,您将学习如何使用原料和厨具制作美味佳肴。这部分可能会有最多的章节,并且将是一个持续进行中的工作。我们还将对食谱进行评分并定义该食谱的创意有多好。
实体组件系统是一个简单的模式,它有一个核心原则:状态和行为分离。这个核心原则通常是人们所谓的面向数据设计的前奏。这导致了您需要具备的机械同理心的想法,以执行硬核性能优化。
然而,这并不是五年前吸引我加入 ECS 的原因。我发现令人着迷的是组合事物的能力。在 ECS 中,您正在编写状态并且正在编写行为。您的应用程序设计变成了一组可以粘在一起的乐高积木。如果缺少某些东西,您可以轻松地创建一个专门的部分来缩小差距。这种方法可以帮助您即兴发挥。它使您能够以“Yes and……”的方式实施软件。是的,这东西是一辆汽车,如果我们收集一个特殊的电源,它就可以飞。是的,此应用程序将其所有数据存储在磁盘上,并且还可以与服务器同步,实时显示 UI 的变化,而无需用户点击按钮。
有句话说:“没有什么是确定的,只有死亡和税收”。我很大胆地说——改变就像死亡和税收一样确定。特别是在软件和游戏开发方面。我们需要能够即兴发挥和尝试,以获得最佳的用户体验。这正是我发现 ECS 如此有用的原因。它帮助我构建生产质量的快速原型并在生产过程中保持原型。我还发现它很有趣,系统思维如何帮助我以最简单的方式建模和解决难题,并将它们集成到现有解决方案之上。