多使用组合

如果一味地使用继承,那么当游戏世界里面的对象种类变多,功能变复杂以后,会导致整个继承树“头重脚轻”,严重破坏了良好的面向对象设计原则—我们设计的类层次结构应该是扁平结构的,而不是一个头很大的树。
那么,我们需要使用怎样的架构来处理游戏里面的对象呢?答案就是使用组合。

ECS

ECS由三个基本部分组成:实体、组件和系统。实体是与对象关联的唯一id,组件是表示实体信息的数据,系统在实体上运行逻辑,以利用或更改来自组件的数据。

一个简单的例子:玩家,怪或者物体entity。技能component。逻辑集中在system里。

e-c里gameobject是entity,只是个类似容器的抽象概念,entity里包含的component决定了对象是什么
component可以给不同的gameobject重用,通过组合多种component而不是继承来构造不同的对象。
e-c-s三者都有其意义,e-c是组合优于继承,主要用以改善oo的继承耦合过重以及多继承菱形问题。

冗余的OOP层次结构
v2-481d8c44ab799ea842b3e5b1e6bd0d27_720w

实体组件系统(ECS)
v2-5ba6b2aec06fc6eebbb5baeaf343a586_720w

Hexo博客支持很多主题风格,其中Next主题是Github上Star最多的主题。关于主题的界面美化手法有以下这么多种。

阅读全文 »

这里一定要注意,Next是不是更新到最新的版本。有可能下面的问题是版本老旧造成的。

阅读全文 »

Jenkins是一款由Java开发的开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能。

阅读全文 »

分析一个程序的源代码,前期除了研究该程序的历史外,还可以细分下各文件所表达的功能。

阅读全文 »

监控系统能帮助我们分析节点的服务存在的问题,例如:服务死循环、服务内存溢出、cpu耗时过长等问题。

阅读全文 »

你有一件事情,做这件事情的过程包含了许多职责单一的子函数。当这些子函数有如下特点时,我们应该考虑设计一种合适的框架,让框架来完成一些业务无关的事情,从而使得各个子过程的开发可以专注于自己的业务。降低程度耦合程度。

阅读全文 »