1. 人生如(游)戏,(游)戏如人生

在我们生活的大环境中,到处都可以看似一个舞台,一些演员,各自扮演着自己的角色,
顺着时间轴继续着进行中;在此当中,各自都有自己的思考,对事物的了解,对生活的理解
不同人的思想造就了制作的游戏给玩家的体验不一样
游戏是什么:游戏不是量产的,而是一个思想的结合体,是一种娱乐的虚拟产品
游戏架构的是辅助游戏不至于烂到玩家玩不下去,比较好的架构当属ECS,
ECS架构全称Entity Component System
使用到的游戏非常少,在暴雪发布了守望先锋之后,名声慢慢的被放大
不同的人对ECS有不同的理解,
包括了对游戏喜爱程度的影响,对游戏理解的影响,甚至不同编码能力的影响

ECS编码本身来说具有挑战性,据我了解Epic公司(一个做视角效果的游戏公司)认为,
ECS是用在群聚的时候好用,
Epic公司就用ECS做了群聚AI功能,在Niagara粒子上使用了此技术;
ECS用来处理群聚能力是业界公认的ECS的架构本身的优势,我认为ECS是游戏的顶级架构设计,
在Gameplay设计上有绝对的优势,是因为它拥有独特的设计模式

+------------------+
|     Context      |
|------------------|
|    e       e     |      +-----------+
|        e     e---|----> |  Entity   |
|  e        e      |      |-----------|
|     e  e       e |      | Component |
| e            e   |      |           |      +-----------+
|    e     e       |      | Component-|----> | Component |
|  e    e     e    |      |           |      |-----------|
|    e      e    e |      | Component |      |   Data    |
+------------------+      +-----------+      +-----------+|||     +-------------+  Groups:|     |      e      |  Subsets of entities in the context|     |   e     e   |  for blazing fast querying+---> |        +------------+|     e  |    |       ||  e     | e  |  e    |+--------|----+    e  ||     e      ||  e     e   |+------------+

Context:是Entity的聚合体,可以管理所有的Entity,而Entity可以被分组,被筛选
Entity:可以是游戏的中任意有意义的元素,以组件的形式存在
Component:组件是游戏中游戏交互的载体


2.Unity Entitas-ECS简介

德国柏林的一个有为青年已经为我们封装好了How Unity ECS,零零散散写了很多年,在2019年的时候定版了
https://github.com/sschmid/Entitas-CSharp
在此向大神敬礼!感谢为Unity带来了如此一大革新技术,而且是C#语言编写

Unity ECS有2个版本,一个是Unity Pure ECS,是Unity官方出的

An Entity Component System (ECS) architecture separates identity (entities), data (components), and behaviour (systems). The architecture focuses on the data. Systems transform the data from an input state to an output state by reading streams of component data, which are indexed by entities.

另外一个版本是Mix ECS,也是就Entitas-ECS,Unity的ECS就算了吧,没怎么了解到

Entitas is a super fast Entity Component System (ECS) Framework specifically made for C# and Unity
Entitas是一个超快的实体组件系统框架,针对C#和Unity而生

Entitas is a super fast and lightweight C# Entity-Component-System (ECS) framework, specifically designed for use with the Unity engine. Internal caching and blazing fast component access makes it second to none. It’s also been carefully designed to work optimally in a garbage collected environment.

Mix ECS相关了解入门文档,作者也是非常用心,写了很多示例和实例
https://github.com/sschmid/Entitas-CSharp/wiki


3.Entitias 编程思想

ECS拥有高门槛,主要是在编程思想上,不同的人拥有不同的生活体验,对事物的理解,
对游戏的理解,那么编写的程序的思想是不一样的;ECS将以为粘合在一起的内容将会被细分出来,
比如Unity中的Transform,在ECS的编程将不会被推荐使用Transform作为一个类型,
因为Transform包含了太多被ECS认为冗余的内容,比如我们只需要一个位置(Vector3),
那么Rotation和Scale是多余的,甚至Transform里面封装的各类方法都是多余的,
多余的=不在我的设计范围内的内容,这样编程还有一个好处是CPU Cache,
因为现在技术的突飞发展,移动端的CPU也有高的CPU Cache Memory,
可以高效的执行烂代码,如果是早年的移动端CPU,CPU Cache Memory不高,
就对程序员的编码能力有一定的要求具体可以查找CPU缓存命中相关技术

ECS如此细分带来了对程序员编码量的剧增,而好处是执行效率高,游戏通用性逻辑能力强,
游戏性指数级增加比如我们设计的游戏,拥有很强的状态标识,并且这些状态是可以被程序化的
这样的游戏可以使用ECS来制作,非常的高效,暴雪游戏的玩家体会估计较深刻


01.Gameplay Architecture ECS简介相关推荐

  1. 矩阵分析与多元统计12 0-1矩阵 交换矩阵简介

    矩阵分析与多元统计12 0-1矩阵 交换矩阵简介 选择矩阵 交换矩阵 顾名思义,0-1矩阵就是所有元素取值均为0和1的矩阵,这类矩阵在矩阵分析.多元统计乃至组合学和图论中都有很重要的应用.在这个主题中 ...

  2. 01 数据库和MySQL简介

    01 数据库和MySQL简介 文章目录 01 数据库和MySQL简介 什么是数据库(database) 为什么要有数据库? 没有数据库时的烦恼 管理方式 产生的问题 数据库 常见的关系型数据库 什么是 ...

  3. 第01节 Go语言简介

    第01节 Go语言简介 本节内容: Go简介. Go语言应用. Go成功的项目. 为什么选择Go语言. Go语言特点总结. 1.1 Go简介 **Go (或 Golang )**是 Google 20 ...

  4. 【Redis6快速深入学习01】NoSQL数据库简介

    文章目录 1 NoSQL数据库简介 1.1 技术发展 1.2 NoSQL数据库 1.3 行式存储数据库(大数据时代) 1.4 图关系型数据库 1 NoSQL数据库简介 1.1 技术发展 技术的分类 解 ...

  5. Neo4j【环境部署 01】图形数据库(简介+下载地址+安装+配置+demo源码+学习教程地址)

    1.简介 Neo4j是一个高性能的.NOSQL图形数据库,它将结构化数据存储在网络上而不是表中.它是一个嵌入式的.基于磁盘的.具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数 ...

  6. unity ECS简介

    什么是Unity ECS Unity ECS是Unity引擎中的一种高性能游戏开发架构,它采用了基于数据的设计思路,与传统的面向对象编程不同.它的目标是提高游戏的性能和可伸缩性. Unity ECS通 ...

  7. Unity ECS 简介

    什么是ECS ? 随着目前游戏对CPU性能要求的不断提升,单核高频的CPU对我们的帮助越来越有限.所以ECS(一种面向数据编程)多核心工作的方式也是大势所趋. Entity 传统组件的集合,代替了Ga ...

  8. 【标准】Oracle Optimal Flexible Architecture(OFA)简介

    关于OFA(Optimal Flexible Architecture)标准的介绍 本文来源于Oracle官网关于OFA的解读,地址如下: http://docs.oracle.com/cd/E118 ...

  9. QUECTEL上海移远4G通讯CAT4模组EC20CEFAG模块串口调试指南之01物联网模组简介

    本系列博文将系统性讲解物联网模组系列的实际使用和调试指南,以移远4G模组EC20为例(其他厂家模组的调试方法大同小异),加快嵌入式软硬件工程师对物联网模组调试和使用的上手速度,让你们的项目进度尽可能快 ...

最新文章

  1. Paddle广播 (broadcasting)
  2. Django web : CSRF verification failed. Request aborted.
  3. 全球首家!B站上线“杜比视界”给UP主用,“观众眼睛要被养刁了”
  4. [置顶] 我的程序员之路(4)---C语言课程设计
  5. 发送广播_DHCP服务器什么时候发送?为什么request要广播发送?那还不看?
  6. 补习系列(14)-springboot redis 整合-数据读写
  7. 自动化测试与DevOps以及持续集成的关系。
  8. 炫酷canvas网页背景动画效果
  9. Ardupilot固定翼无人机L1制导律原理及代码解读
  10. 事件2 有源码 可以随意进行练习哈 太棒了 一起加油 一起成长
  11. log4j日志文件的使用及log4j日志文件失效原因分析
  12. typeAliasesPackage的作用
  13. 【量化笔记】配对交易
  14. Shell脚本实现sshd黑名单
  15. 原生JDK网络编程之NIO篇
  16. delphi中的public和published
  17. win7+GTX1060配置及运行TensorFlow
  18. 微课录制软件哪个好用?微课制作方法分享
  19. java日期时间库-常用案例-不保留全分享
  20. in与exist的区别

热门文章

  1. 一款数据库合并工具的中文版更新
  2. android+iphone+共用字体,【报Bug】苹果和安卓手机 字体大小颜色字重都一样 效果却不同...
  3. ChatGPT和文心一言分别推荐的CNV分析工具
  4. 基因调控网络及其模型
  5. iOS中gif图片的分解与显示
  6. 2003-2021年高铁线路信息数据
  7. 基于matlab的医学图像Radon变换仿真
  8. 鼎捷软件携手华为助力产业数智化,荣获两大“优秀伙伴”殊荣
  9. 《MFC编程》:MFC程序的分类
  10. 登录时设置验证码的作用及实现