kbengine教程_如何简单的介绍自己

kbengine教程_如何简单的介绍自己之前想分析一个开源服务器很久了,思前想后,还是选择了kbengine。KBEngine的服务端底层框架使用c++编写,游戏逻辑层使用Python(支持热更新)。现在服务器大多数是用C++做的,pyth

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

之前想分析一个开源服务器很久了,思前想后,还是选择了kbengine。

KBEngine的服务端底层框架使用c++编写,游戏逻辑层使用Python(支持热更新)。现在服务器大多数是用C++做的,python作脚本也比较多,另外一个就是lua。

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

kbengine主要组件

baseapp,baseappmgr,cellapp,cellappmgr,dbmgr,loginapp,machine。

工作组件:

bot,guiconsole,interfaces,logger。

后缀有mgr的组件都是相应的管理器。

数据库用的是mysql,可以考虑一下加上redis。

必要组件描述
· loginapp:

登录验证、注册、接入口。可在多台机器部署多个loginapp进程来负载。

· dbmgr:

高性能多线程的数据存取。默认使用Mysql作为数据库。

· baseapp:

客户端与服务端的交互只能通过loginapp分配的baseapp来完成。定时写entity的数据到数据库、baseapp数据相互备份、灾难恢复。可在多台机器部署多个baseapp进程来均衡负载。脚本层通常会选择在baseapp上实现如:社交系统、广播聊天、排行、游戏大厅、等等逻辑系统。

· baseappmgr:

协调所有baseapp的工作,包括baseapp负载均衡处理等。

· cellapp:

处理游戏与空间和位置有关的逻辑,如:AOI、Navigate、AI、战斗等等。可在多台机器部署多个cellapp进程来动态均衡负载。

· cellappmgr:

负责协调所有cellapp的工作,包括负载均衡处理等。

· machine:

抽象出一个服务端硬件节点(一台硬件服务器只能存在一个这样的进程)。主要用途是接收远程指令处理本机上的组件启动与关闭, 提供本机上运行组件的接入口以及收集当前机器上的一些信息, 如:CPU、内存等。 这些信息会提供给一些对此比较感兴趣的组件。

· client:

客户端我们将提供基础框架,这个框架不包括渲染部分和输入输出部分的具体实现, 我们将提供一个lib文件和一套API接口,开发者可以选择使用自己比较适合的图形渲染引擎与输入输出控制部分。Unity3D, HTML5, Cocos2d等技术我们提供了相关插件,能够快速的和服务端对接。

工具组件描述
· interfaces:

支持快速接入第三方计费、第三方账号、第三方数据, 快速与运营系统耦合。

· logger:

收集和备份各个组件的运行日志。

其它组件描述
· bots:
机器人,通常用来做压力测试。

· guiconsole:
可视化控制台,这个图形工具只能在Windows运行。

服务端组成
架构:

     |———-|
                  |  client  | x N
                  |———-|
     
    ————————|—–|——————————-
     
    |———-|         |———-|         |———-|
    | loginsrv | x N     |  basesrv | x N     |basesrvmgr| x 1
    |———-|         |———-|         |———-|
     
    ————————|—–|——————————-
     
     
        |———-|            |———-|
        |  cellsrv | x N    |cellsrvmgr| x 1
        |———-|            |———-|
     
    ————————|—–|——————————-
     
     
        |———-|            |———-|
        |  dbmgr   | x 1    |interfaces| x 1
        |———-|            |———-|
     
    ————————|—–|——————————-
     
                  |———-|
                  |  mysql   | x 1
                  |———-|

目录结构:

    |- kbengine                            (KBE_ROOT 根目录)
        |- assets                        (默认的游戏项目资产库,你可以添加新的资产库通过环境变量绑定)
            |- res                        (所有资源文件)
                |- spaces                (通常存放游戏场景相关的资源,例如Navmesh)
                |- server                (通常放置服务端相关的配置文件)
            |- scripts                (所有的游戏逻辑,Python文件)
                |- base                (Base的Python逻辑)
                |- cell                (Cell的Python逻辑)
                |- client            (Client的Python逻辑)
                |- bots                (机器人的Python逻辑,压力测试)
                |- common            (逻辑公共文件夹)
                |- data                (游戏逻辑用到的数据资源)
                |- db                (dbmgr扩展脚本)
                |- entity_defs            (实体定义与声明)
                    |- interfaces        (实体的接口声明)
                |- server_common        (服务端逻辑公共)
                |- user_type            (自定义用户类型目录)
           |- kbe                        (引擎目录)
            |- tools                    (引擎工具)
                |- server                (引擎服务端工具)
                    |- guiconsole            (可视化的控制台工具)
                    |- install            (引擎安装工具)
                    |- pycluster            (跨平台的集群控制Python脚本工具)
                |- xlsx2py                (游戏数据表导出工具)
            |- src                        (KBEngine源代码)
                |- build                (makefile公共脚本)
                |- client                (客户端插件和例子目录)
                    |- kbengine_dll            (Windows应用程序插件源代码)
                |- common                (公共目录)
                |- lib                    (各种模块源代码)
                    |- client_lib            (客户端底层公共框架)
                    |- cstdkbe            (KBEngine标准库)
                    |- db_mysql            (Mysql存取实现)
                    |- dbmgr_lib            (数据存取公共接口)
                    |- dependencies            (依赖库)
                    |- entitydef            (实体定义解析模块)
                    |- helper            (一些通用的协助性模块)
                    |- math                (数学相关)
                    |- navigation            (2D/3D导航模块)
                    |- network            (网络模块)
                    |- pyscript            (脚本插件)
                    |- python            (python源代码)
                    |- resmgr            (资源管理器)
                    |- server            (服务端公共模块)
                    |- thread            (多线程模块)
                    |- xmlplus            (xml解析库)
                |- libs                    (编译后的*.lib, *.a文件)
                |- server                (服务端app源代码)
                    |- baseapp            (baseapp源代码)
                    |- baseappmgr            (baseappmgr源代码)
                    |- cellapp            (cellapp源代码)
                    |- cellappmgr            (cellappmgr源代码)
                    |- dbmgr            (dbmgr源代码)
                    |- loginapp            (loginapp源代码)
                    |- machine            (machine源代码)
                    |- resourcemgr            (resourcemgr源代码)
                    |- tools            (服务端助手工具)
                        |- interfaces        (支持第三方计费、第三方账号等接口)
                        |- bots            (压力测试, 虚拟客户端, 源码)
                        |- guiconsole        (可视化的控制台工具源码)
                        |- message_log        (服务端log收集工具源码)
            |- res                        (引擎资源目录)
                |- key                    (RSA密钥)
                |- scripts                (Python脚本库)
                |- server                (服务端引擎配置)
                    |- log4cxx_properties        (log4cxx配置)
            |- doc                        (指南文档源代码)
            |- bin                        (编译后的可执行文件存放目录)
                |- client                (编译后的客户端exe可执行文件存放目录)
                |- server                (编译后的服务端可执行文件存放目录)
                    |- logs                (服务端运行日志)
           |- tutorial                        (指南文档)

———————
作者:Kevin_Leong
来源:CSDN
原文:https://blog.csdn.net/losophy/article/details/43953399
版权声明:本文为博主原创文章,转载请附上博文链接!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/166384.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • fillna函数用法_fill…with

    fillna函数用法_fill…withinplace参数的取值:True、FalseTrue:直接修改原对象False:创建一个副本,修改副本,原对象不变(缺省默认)method参数的取值:{‘pad’,‘ffill’,‘backfill’,‘bfill’,None},defaultNonepad/ffill:用前一个非缺失值去填充该缺失值backfill/bfill:用下一个非缺失值填充该缺失…

  • 【找规律】CodeForce #258 Problem A——Game With Sticks[通俗易懂]

    【找规律】CodeForce #258 Problem A——Game With Sticks

  • turtlebot+lms111+gmapping实践

    turtlebot+lms111+gmapping实践1.配置激光按照cartographer的配置来如果已经跑过cartographer无需配置2.计算机文件夹下需修改的地方在桌面上新建文档gmapping.launch.xml文件内容如下…

  • vbs代码如何使用Wscript调试

    vbs代码如何使用Wscript调试转自:vbs代码如何使用Wscript调试有些朋友用vbs写代码习惯用MsgBox输出,有时候一段代码调试完输出了一堆MsgBox,调完了还要删掉。遇到想要查看对象的情况更是累的不行…然而,一个编程语言怎么可能没有更好的调试方法,MsgBox写累了的时候试一下用wscript?wscript是Windows脚本宿主,它不需要在调用其属性和方法之前进行实例化,并且

  • 微信小程序获取unionid_小程序的openid有什么用

    微信小程序获取unionid_小程序的openid有什么用UniqueID以及openid的获取涉及到用户的敏感信息,返回的数据encryptedData是加密后的数据要提取信息需要对数据进行解密官网提供了解密的算法,将nodejs的版本拿过来稍作修改即可下载cryptojs放到项目的utils目录下 在utils目录下新建decode.js写入以下内容//utils/decode.jsvarCrypto=require…

    2022年10月26日
  • 用C++实现简易的文本编辑器[通俗易懂]

    用C++实现简易的文本编辑器[通俗易懂]终于开始准备写自己的第一篇博客了,想想现在大二结束了,也要开始准备整理这么久学习的知识。学长们都对我说写博客是对自己知识整理最好的方法,所以我就静下心来把自己的课设写成自己的第一篇博客吧。废话就不多说了,接下来我来介绍一下我对实现这个简易的文本编辑器自己的理解。我自己的基本框架是.net,新建一个CLR项目,添加一个窗体。首先说一下要实现的基本功能,最基本的肯定是读写.txt文件,其次是复制、粘

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号