来自"玻璃渣"的 Timothy Ford 在 GDC 2017 大会做了一个专题演讲“《守望先锋》架构设计与网络同步(Overwatch Gameplay Architecture and Netcode)”,其中介绍的 ECS 架构一时引起众多关注。在转过年来的 Unity 2018 新版中也支持了 ECS 架构,并且性能有大幅提升!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MMxdhyHJ-1597498726824)(https://neil3d.github.io/assets/img/ecs/overwatch.png)]
ECS - Entity, Component, System 这一系列概念都是非常简单清晰的,那么为什么 ECS 会成为游戏行业的主流设计思想呢?这还要从"面向数据的设计(Data-Oriented Design)"讲起。ECS 是一种面向数据的设计在咱们游戏、引擎行业中的成功应用,要想理解“WHY”,就必须要理解面向数据的设计这一思想!
面向数据的设计
现代的程序设计思想要求我们以计算机的方式去解决问题(而不是以人脑的方式),“面向数据的设计”思想可以说是沿着这个方向又前进了一大步。这种程序设计的思想的出现和流行和计算机硬件的发展是息息相关的。乔布斯曾经引用过 Alan Kay 的一句名言说软件开发者必须关心硬件。下面我就结合计算机硬件的发展现状来说明一下这种设计思路的优势在哪里,也就是说为什么 ECS 之类是更好的设计!
内存与 CPU 的性能差距
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ljtiw6um-1597498726825)(https://neil3d.github