zoukankan      html  css  js  c++  java
  • 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引擎概览

  • 相关阅读:
    简单 dp 题选做
    UVa11327
    Codeforces Round #641 (div.2) 题解
    新博客
    数位dp的学习
    stl粗略用法
    cf437C The Child and Toy
    poj1995 Raising Modulo Numbers
    Tarjan的学习
    最短路模板
  • 原文地址:https://www.cnblogs.com/losophy/p/9277278.html
Copyright © 2011-2022 走看看