(一)ECS:这是什么鬼?

有了解的知道ECS出名是因为《屁股》的火爆,在Unite大会上介绍了他们使用了ECS框架。

不同于传统的OOP编程思想,ECS不强调继承而是强调功能模块的组合。

上个图爽爽眼:

这个最主要还是变成了一种数据驱动的设计。变得更加单纯纯粹。往上面的这种概念上的介绍好多多的。让我们看看官方怎么介绍的——》官方ECS介绍网页。请自行跳转学习。

所以说下来就是:高性能,大场景,大数量,低延迟,多处理?。所以一句话下来就是:轻松并且牛逼着。

事实当然确实如此了 Intel 官网都有专门的说明——》Intel的ECS原理介绍。也有好多中文的博文,再此不赘述了

当然网上说最早的ECS框架写游戏的都可以追溯到上个世纪的事情了?,当时太小都还尿床呢。

当然要清楚ECS并不一定会用在游戏上哦。

这是官方放在Github上的ECS框架代码——》地址

扫描二维码关注公众号,回复: 9536795 查看本文章

现在unity2018.3中添加ECS只需要打开Windows菜单按钮下的Packages然后点击安装就可以了,可能网络要读取需要时间

安装成功之后就可以在项目工程中Packages中看到:

现在添加ECS框架要简单傻瓜多了。

什么是DOD

Unity实际上在做的大计划,是一个在程序届流行了一阵子,最近越来越火的概念DOD (Data Oriented Design) 即 面向数据设计. 他是与我们所熟知的OOD (Object Oriented Design) 即面向对象设计相对的概念. 

ECS

实例组件系统,是编程思想的改变,从基于对象的运作,改变为"流水线式运作"(我自己的比喻).虽然显然破坏了"程序对现实的模拟"这样美好的愿望,但是却大大的增强了解耦性,可测性,扩展性.并且天然是以下要描述的几个组件的好伙伴~

Job System

Job System是Unity对CPU多核编程的应用.通过把工作分散到CPU的各个核心上来大大提升运行效率.而ECS跟他之间的搭配则是由于ECS的System部分天然是以批量处理为核心的,因此只要稍加改动,就可以转变为批量的分Job交到多核去处理.实现性能的提升.

HPC#

HPC#(High Perform C#)是Unity开发的一个C#子集,通过抛弃对象,指针,等高级特性,从语言层面加速性能. 截图里没有直接列出这个,但是NativeContainer是HPC#的一环. 而由于ECS本身的去对象化,可见又是天然的好伙伴.

Burst Compiler

这又是Unity自己开发的,一个全新的快速编译器,最重要的是由于不用考虑通用性,仅仅针对Unity,针对游戏,再配合HPC#, 使得性能有了更大的提升.由于牵扯到编译器层面,这个部分我的理解是最薄弱的,如有错误敬请指正.

ECS入门

我建议首先不要考虑Unity, 而是先单纯对ECS有一个基本的学习,首推这两篇文章:
http://blog.lmorchard.com/2013/11/27/entity-component-system/
他的图很形象,脱离代码,给你一个最基本的认识
然后是https://www.richardlord.net/blog/ecs/what-is-an-entity-framework.html
结合游戏引擎的实际需要,更为详细的介绍.

继续了解ECS的可以看一下提供的几个网址链接,他们都写得不错:

云风的Blog时间有点久只是作为了解,现在还是有一些变动的(其实我也说不上来):网页传送门

unity2016大会的视频介绍 一切罪恶的开始:视频传送门(YouTube)

CSDN文章一:网页传送门

CSDN文章二,不建议看这个的代码部分:网页传送门

知乎各路大声的讨论:网页传送门

等等吧网上有很多的概念介绍,这些概念我也没必要重新说一遍。这个和很多人的面向对象编程思路排斥。面向对象很重要但是不应该是唯一,这样也确实提供能面向对象无法提供的实现的功能,现在只能说各有利弊,并且ECS用在现有的游戏项目中弊要大于利。?

发布了71 篇原创文章 · 获赞 89 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/u012371712/article/details/87475891