KBEngine源码:Entity

KBEngine是一款开源的MMOG游戏服务端引擎,使用C++编写,用Python脚本即可简单高效的完成任何游戏逻辑(支持热更新)。

KBEngine底层架构被设计为多进程分布式动态负载均衡方案,理论上只需要不断扩展硬件就能够不断增加承载上限,单台机器的承载上限取决于游戏逻辑本身的复杂度。

基于实体entity的开发。

Entity实体被定义为服务端最基本的对象,类似Python的基础对象object。我们的通讯(远程访问)是通过Entity上的方法申明;我们的数据存储(数据库持久化存储)也是通过Entity上的属性进行。我们可以大体的理解为,引擎端的开发是基于Entity实体的。

实体包含哪几部分?

1、base部分:实体在Baseapp上的对象(或称为实现),这部分叫做base部分。

2、cell部分:实体在Cellapp上的对象(或称为实现),这部分叫做cell部分。

3、client部分:实体在客户端上的对象(或称为实现),这部分叫做client部分。一般在客户端上进行实现,不在服务端范围内;

特殊的Entity

有一个特殊的Entity实体–Proxy,它是Entity的子类,俗称代理类。它是连接客户端和服务端的通讯通道,但一个客户端只能拥有并控制一个Proxy,通过它可以把客户端的控制、交互传递给该实体的base和cell上。它只有在base上有而cell上没有。

Entity实体创建

 https://www.comblockengine.com/docs/1.0/get-started/createentity/

ps:

传统MMO架构(就是之前说的天龙、倩女类架构),一个进程维护多个场景,每个场景里多个玩家,额外的中心进程负责帮玩家从一个场景/进程切到另一个场景/进程。bigworld架构,如果剥离开其围绕切进程所做的一些外围设施,核心工作流程基本就能用这一段话描述。

 

EntityComponent

现引擎已支持基于组件的开发,组件是attach到entity上的一个单元,可以在不同类型entity上进行重用,大大加强了引擎开发能力。

如控制位置的组件Motion,该组件只对entity的位移做控制,如此一来Avatar、Monster等都可以attach该组件,而不用反复编写位移的代码。

参考:

cbe引擎概览

原文地址:https://www.cnblogs.com/losophy/p/9277278.html