热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

01.GameplayArchitectureECS简介

1.人生如(游)戏,(游)戏如人生在我们生活的大环


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来制作,非常的高效,暴雪游戏的玩家体会估计较深刻

在这里插入图片描述



版权声明:本文为inspironx原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/inspironx/article/details/126135773
推荐阅读
  • 什么是API接口?给大家举例说明
    Api接口也就是所谓的应用程序接口,api接口的全称是ApplicationProgramInterface,通过API接口可以实现计算机软件之间的相互 ... [详细]
  • 事务是通过MULTI命令开始的,在非事务状态下客户端发送的命令会被立刻执行,而在事务状态下,除了EXECWATCHDISCARD这几个命令外,redis会将命令保留在事务队列里。 ... [详细]
  • 系统osx10.11用的是brew下的php56brew下的nginx下了一个项目,在安装过程中提示缺少,intl和apc扩展,就用下面的语句下载了,也装上了,但php还是没有加载 ... [详细]
  • 2022年Python面试题一.Python基础二.企业面试题结束语🥇🥇🥇✅作者简介:大家好我是编程IDὌ ... [详细]
  • C#按值复制数组我有一个类型化的数组MyType[]types;我想制作这个数组的独立副本。我试过这个MyType[]types2newMyType[types.Length];t ... [详细]
  • #includestdafx.h#includeiostream#includesstream#includemap#includestring ... [详细]
  • 22.Container With Most Water(能装最多水的容器)
    thecontainercontainsthemos ... [详细]
  • 3295:[Cqoi2011]动态逆序对Description对于序列A,它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除 ... [详细]
  • PHP GuzzleHttp 无法获取到返回结果 ... [详细]
  • delphi控件大全
    本文章已收录于:delphi控件查询:http:www.torry.nethttp:www.jrsoftware.orgTb97最有名的工具条(ToolBar) ... [详细]
  • 在编写业务代码时,常常会遇到复杂的业务逻辑导致代码冗长混乱的情况。为了解决这个问题,可以利用中间件模式来简化代码逻辑。中间件模式可以帮助我们更好地设计架构和代码,提高代码质量。本文介绍了中间件模式的基本概念和用法。 ... [详细]
  • Unity3D引擎的体系结构和功能详解
    本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
  • BPM是什么软件?1、BPM是BusinessProcessManagement的简称,译为业务流程管理,它是一种以规范化的构造端到端的卓越业务流程为中心以持续的提高组织业务绩效为 ... [详细]
  • Spring MVC 浅谈
    大学时写的的文章,当时文章水平略差,大家见谅。MVC这个词儿,最早的定义应该是作为一种软件架构设计模式出现在软工里面的,即使用model、view、controller来设计及定 ... [详细]
  • 一.元祖类型 (tuple)1.什么是元祖?用途:用于存放多个值,当存放的多个值只有读的需求没有改变的需求时,用元祖最合适.定义方式:在()内用逗号分隔开的多个任意类型的值t(1, ... [详细]
author-avatar
政凯雅惠1663
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有