Kbengine游戏引擎介绍

kbengine引擎架构分析 服务端组成 |----------| | client | x N |----------| ------------------------|-----|------------------------------- |----------| |----------| |----------| | loginsr 阅读详情

Kbengine游戏引擎

前景

	这里介绍呢,我是在kbengine原代码上有做修改,原基础上只支持webscoket通信,现在添加了http通信和Async实现异步分布式web框架

 
  • 1

游戏引擎的底层介绍

kbengine底层架构很庞大功能很完善。底层采用c++,而写逻辑只需要使用python,大家都知道python是一种开发效率非常高的语言,所以你只要写python代码就不用考虑底层如何实现。kbengine底层架构被设计为多进程分布式动态负载均衡方案, 理论上只需要不断扩展硬件就能够不断增加承载上限,单台机器的承载上限取决于游戏逻辑本身的复杂度。网络层被底层封装的很好,在写逻辑的时候几乎可以忘记rpg等细节过程,远程访问非常方便,但是目前官网和论坛已经无法访问,具体原因不是很清楚。

github地址:

https://github.com/kbengine/kbengine

Kbengine框架的优缺点:

  1. 框架结构非常专业,但是同时非常厚重。 编译时间很长,服务器启动时间也很长(10~20秒),部署也非常麻烦(在linux上面要安装openssl,编译python,设置环境变量)部署方面只是环境编辑时间上有点蛋疼,操作步骤没有几下
  2. 分布式并不仅仅体现在多个逻辑服务器上面,而体现在多个逻辑服务器(场景服务器)数据可互通。 这个也是KBEngine非常强大的地方。
  3. python作为脚本语言,我如果仅仅是实现简单的逻辑还没什么问题。但是一旦我所有的服务器逻辑都是python来实现了,那么性能就会成为问题,甚至可能还不如Node.js性能高。 脚本语言比c++、java这样的静态编译的语言开发效率要高,但是实际操作起来却发现很多不顺手的地方,很多静态语言编译期就能检查出来的低级错误,现在必须运行时才发现某个变量名写错了。 在我看来服务器其实对热更新并没有那么高的需求,而且要做成安全可靠的热更新是非常困难的,客户端影响比较小还可以考虑,服务器一旦出错就成百上千倍的放大。能把配置做成热加载的,能不关服务器的情况下开启和关闭某个系统就足够了。 脚本语言除了开发效率高就是热更新方便,然而现在看来热更新需求不大,开发效率也不如使用c#+vs高效。
  4. RPC的通信方式很棒,可以让客户端和服务器以函数调用的方式来调用远程函数,而不需要考虑通信细节。 然而我非常不习惯这种方式,当需要传的数据复杂了,维护起来反而麻烦。而且传输效率上来讲肯定不如protobuf高。 如果是protobuf来维护的话,只要proto定好了,客户端和服务器共同使用,有类型修改的时候只要关注proto就可以了。 然而KBEngine中的rpc定义参数修改了需要改三处地方,并且还不是静态检查,只有运行时才能发现哪个参数定义的不一致。 另外,如果客户端和服务器都是使用python的话,应该还是比较方便的,但是客户端是c#而服务器是python,rpc反而造成了维护的不方便。
  5. 数据库管理没有使用之前的原理,自己封装一套,包含有防sql注入等问题

结构介绍:

目录结构:

|- 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 (指南文档)

组件介绍:

必要组件描述
· 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运行。

</article>
kbengine引擎的安装 安装 在Linux上安装(Centos/Debian/Ubuntu etc.) 服务端, 请在终端输入: python kbengine/kbe/tools/server/install/installer.py install 如果你不信任脚本, 你也可以选择手动安装。 手动安装 1. 创建kbe系统用户 创建一个独立的用户来运行KBEngine将会更加安全可靠以及便于维护。 阅读详情

相关推荐

kbengine引擎编译教程

只需简单的几步: Linux: 仅测试了(x32/x64): Centos >= 5.x, Debian >= 5.x GCC版本: >= 4.4.x [root @ localhost ~]# yum install gcc [root @ localhost ~]# yum install glib [root @ localhost ~]# yum install gcc-c+

damagek的专栏 2884

kbengine引擎-忙里偷闲,kbe服务器架设及demo运行教程

说忙里偷闲,是因为一直更新仙剑Demo的东西,这两天在整理demo剧情系统的时候,一个头两个大,在研究的时候翻译了300多页的文档,加上在试验的截图真不知选哪些贴出来,为了不让博客闲着,所以贴点我认为实用的东西来占时占坑。 kbe,一款开源的游戏服务端引擎,客户端通过简单的约定协议就能与服务端通讯,使用KBEngine插件能够快速与(Unity3D、OGRE、Cocos2d-x、HTML5,等等

简雨的专栏 1万+

游戏引擎:BigWorld(大世界3D游戏引擎)、KBengine、Skynet

BigWorld:服务端引擎+客户端引擎 服务端引擎:Actor并发模型+分布式AOI 该引擎是澳大利亚BigWorldPty.Ltd所开发的,由服务器软件、内容创建工具、3D客户端引擎、服务器端实时管理工具组成,为致力于构建富有创造力的一流的新一代网络游戏的开发商降低了开发周期和成本。 其他游戏引擎:更多专注于客户端 UE4:专注于客户端 Unity 3D:有服务端,但专注于客户端 CryEngine: ...

ChengChengCheng的博客 1万+

<壹>kbengine源码剖析之服务器框架

先简单了解下kbengine的框架架构,下面先上图 框架由loginapp,baseappmgr,baseapp,cellappmgr,cellapp,dbmgr,machine,interfaces,logger进程组成,下面主要介绍功能模块的作用,下面我们来介绍下每个功能模块的作用 1.loginapp作用主要是登录验证、注册、接入口 2.baseappmgr协调所有baseapp的工作,包括baseapp负载均衡处理等 3.baseapp由loginapp校...

hk52222的专栏 841

kbengine:服务器的MMOG引擎

KBEngine 主页 https://kbengine.github.io/ 发布 Sources : https://github.com/kbengine/kbengine/releases/latest 演示资源 Unity3d : https://github.com/kbengine/kbengine_unity3d_demo/releases/latest Unity3d : https://github.com/kbengine/kbengine_unity3d_warring/releases/latest UE4 : https://github.com/kbeng

沧小海深入剖析xilinx的GTP/GTX核,掌握高速串行收发机制——第六章 接收端结构及功能说明

总目录在这哦~ https://blog.youkuaiyun.com/z123canghai/article/details/107700878 第六章 接收端结构及功能说明 子目录 6.1 RX的模拟前端 6.2 RX的OOB信号 6.3 RX的均衡器 6.4 RX的CDR 时钟数据恢复 6.5 RX时钟输出结构 6.6 RX 的极性控制 6.7 RX 的PRBS 6.8 Rx字节、字的对齐功能 6.9 Rx接收弹性缓冲区 6.10 Rx的时钟纠正 6.11 Rx接收通道绑定 6...

滄海的博客 1万+

Kbengine介绍

Kbengine游戏引擎前景游戏引擎的底层介绍github地址:Kbengine框架的优缺点:结构介绍:组件介绍: 前景 这里介绍呢,我是在kbengine原代码上有做修改,原基础上只支持webscoket通信,现在添加了http通信和Async实现异步分布式web框架 游戏引擎的底层介绍 kbengine底层架构很庞大功能很完善。底层采用c++,而写逻辑只需要使用python,大家都知道python是一种开发效率非常高的语言,所以你只要写python代码就不用考虑底层如何实现。kbengine底层架构

luobiao_0915的博客 6156

关于使用perfetto(systrace)对卡顿进行分析-实战分析

本文主要讲述了我在使用perfetto分析小米中桌面滑动卡顿的方法以及步骤。 这是我用的trace文件: 链接:https://pan.baidu.com/s/11EhCvu0pfR7Qfu6bDf_GLw?pwd=ic43 提取码:ic43Perfetto 是用于性能检测和跟踪分析的生产级开源堆栈。它提供用于记录系统级和应用级跟踪、本机 + java 堆分析、使用 SQL 分析跟踪的库以及用于可视化和浏览多 GB 跟踪的基于 Web 的 UI 的服务和库。在地址栏输入https://ui.perfe

qq_40494059的博客 1万+

一步一步学习kbengine(一)

今天开始学习KBEngine,特记录下学习过程,算是给自己巩固知识。1.安装环境:win7+vs2017、mysql、python(KBEngine服务端的编程需要用到python)先确保电脑已经安装好了mysql、和python。2.到KBEngine下载引擎源码 :https://github.com/kbengine/kbengine/releases/tag/v1.16下下来是这个3.开始...

松果儿的博客 1万+

IGV新手必看:5分钟搞定ChIP-seq/DAP-seq/ATAC-seq数据可视化(附常见报错解决方案)

本文为IGV新手提供了一份快速上手的实战指南,详细讲解了如何高效完成ChIP-seq、DAP-seq、ATAC-seq等数据的可视化。内容涵盖软件安装、基因组导入、文件格式转换与优化,并重点剖析了“导入后一片空白”等常见报错的根本原因与解决方案,帮助用户在5分钟内避开雷区,生成可用于发表的IGV专业图谱。

weixin_29198045的博客 537

当迁移学习遇见室内定位:基于UJIIndoorLoc的跨场景适配实践

本文探讨了迁移学习在跨建筑室内定位中的应用,重点解析了UJIIndoorLoc数据集的特性及其在解决设备差异和环境变化中的关键作用。通过特征工程、迁移学习策略和小样本微调技术,显著提升了定位模型的跨场景适配能力,为实际部署提供了有效解决方案。

weixin_29038155的博客 394

kbengine引擎demo安装

本项目作为kbengine服务端引擎的客户端演示而写 http://www.kbengine.org QQ交流群 群1: 16535321 群2: 367555003 GO! 更新kbengine插件库(https://github.com/kbengine/kbengine_unity3d_plugins): * 使用git命令行,进入到kbengine_unity3d_w

damagek的专栏 2466

奇安信 2025 年护网蓝队初选笔试题(附答案解析)

熬夜为大家整理了 奇安信 2025 年护网蓝队初选笔试题,(关注我我会持续更新)涵盖 SQL 注入、Web 安全、渗透测试、二进制安全 等核心知识点,并附上详细答案解析,助力大家高效备考!12.下列关于虚表指针描述正确的是(1.5分)✅ B. 虚表指针存储的是虚表的首地址❌ A. 任何类对象都存在虚表指针(仅含虚函数的类有)❌ C. 虚表指针位于对象内存空间的起始处(由编译器决定)❌ D. 虚表指针是否存在不影响对象所占内存空间的大小(存在时会增加指针大小)📌 解析:虚表指针(vptr)用于实现多态,指向

Aishenyanying33的博客 4695

Kbengine游戏引擎-【1】kbengine安装

本文主要介绍如何在Linux上安装 官网环境要求:Centos >= 5.x, Debian >= 5.x GCC版本: >= 4.4.x 官网链接 本文的安装环境介绍:Centos=6.9, GCC版本: = 4.4.7 Mysql =5.6,python =2.6 kbengine= v1.0.0 一.编译: [root @ localhost ~...

weixin_30593261的博客 386

告别理论纠结!用ADS和Sigrity玩转电源完整性:从PDN阻抗优化到芯片供电仿真全流程

本文详细介绍了如何利用ADS和Sigrity工具进行电源完整性(PI)分析,从PDN阻抗优化到芯片供电仿真的全流程。通过频域、直流和时域分析,工程师可以精确评估电源网络性能,优化设计以避免电压波动和系统失效。文章还提供了ADS和Sigrity PowerDC的实战操作指南,帮助读者掌握现代PI设计的核心技术。

weixin_33749242的博客 310

哈密顿-雅可比不等式:连接最优控制与优化算法的自然物理原理

在控制理论与优化算法之间,存在一个深刻而实用的桥梁。最优控制理论旨在通过设计控制输入,使动态系统在时间维度上达到性能最优,其核心数学工具如庞特里亚金极大值原理和哈密顿-雅可比-贝尔曼方程,为解决连续时间系统的优化问题提供了优雅框架。然而,这些方法在高维非凸问题中面临求解难题。哈密顿-雅可比不等式作为一种松弛方法,通过构造李雅普诺夫函数并验证一个不等式条件,转而寻求性能有保障且易于实现的次优解,其本质是保证系统能量衰减和性能上界。这一原理与耗散性理论紧密相连,体现了自然物理系统(如阻尼振动)中能量耗散的普遍规

weixin_30582943的博客 313

KBEngine 安装

其实这篇的内容官方文档都有, 但是既然打算记录一下学习笔记, 也就先从安装开始了. 一 下载源代码 进入github下载最新release的源码压缩包. windows选择zip, 下载完成之后右键解压缩. 进入kbengine目录, 里面有三个文件夹: assets\docs\kbe assets是游戏项目资产库, 也就是我们之后要编写脚本的地方 docs是kbengine的文档...

weixin_30641999的博客 188

11、体内皮质功能的电压敏感染料成像技术

本文详细介绍了电压敏感染料成像(VSDI)技术在体内皮质功能研究中的应用。内容涵盖VSDI的技术起源、作用机制、信号特点与解读局限性,以及其在映射感觉皮质功能区方面的优势。文章对比了VSDI与电极记录和钙成像技术的差异,突出了其在高时空分辨率下监测神经元群体亚阈值活动的独特价值。同时,提供了完整的实验操作流程,包括手术步骤、染料应用、光学系统配置及数据分析方法,并总结了常见问题及其解决方案。随着基因靶向和多模态技术结合的发展,VSDI有望进一步提升信号特异性和空间精度,成为解析大脑网络动态的重要工具。

Apple的专栏 77

游戏引擎

游戏引擎概述   游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台,如Linux、Mac OS X、微软Windows。游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统...

weixin_30384031的博客 214

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

KBengine 引擎

KBengine 引擎 官方网站 阿里云学习KB引擎 KB学习 KBengine 我这里主要介绍用Python编写脚本,接Unity编写的手机网络游戏 复制代码 KBengine 文档学习 1.KBengine 用于实现 网页游戏,移动游戏,PC游戏,VR/AR 复制代码 用户手册1.0 首页 安装和启动 1.Linux 2.Windows 复制代码 get startd 基础篇 脚本篇...

weixin_33726318的博客 816

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

KBEngine 房间示例创建脚本调用解读

首先放个房间示例的资源路径https://github.com/u3dkbe/kbengine_unity3d_balls     这个例子很简单,客户端点击登录按钮后即进入场景,同时生成大量NPC。鼠标点击可移动吃分。不过这里只关心脚本涉及初始化这块。kbengine的服务器用python写脚本,各种系统回调以及自己写的回调夹杂在一起,不熟悉会相当很晕。。所以写这个也权当笔记。。。

萧瑟秋风的专栏 4817

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

终极指南:如何快速实现KBEngine与主流游戏引擎集成(Unity、UE4、Cocos2d实战案例)

KBEngine是一个开源的分布式MMOG游戏服务器引擎,支持Unity、UE4、Cocos2d等主流游戏引擎的无缝集成。这款强大的游戏服务器解决方案为开发者提供了完整的客户端SDK支持,让你能够快速构建大规模多人在线游戏。✨ ## 🎯 为什么选择KBEngine进行游戏引擎集成? KBEngine提供了完整的客户端SDK模板,支持多种游戏引擎的快速接入。通过[kbe/res/sdk_tem

gitblog_00888的博客 1127

ue4 时间轴是什么意思_UE4与Kbengine(Comblock)大型网络游戏开发(一)

Hello Everybody,大家好 我是醍醐。从今天开始一起来学习UE4 + Kbengine(Comblock) 网络游戏开发 将使用独立服务器 并且最终部署在阿里云或者腾讯云。为什么要学习别人的游戏服务端引擎,自己写可不可以?自己写服务器引擎是可以的,你可以用你喜欢的语言,比如C++,golang,Java等都可以,基于一些网络库。但是对于初学者来说 最好的方法是学习别人开源的游戏服务器,...

weixin_39519769的博客 377

KBEngine demo搭建流程

服务端源码及官方网站KBEngine: A mmog engine of server.(server sources and kbengine-home)http://kbengine.orgDemo sources:unity3d : https://github.com/kbengine/kbengine/kbengine_unity3d_demoogre : https://github.

damagek的专栏 4141
上一篇: 分布式系统的经典基础理论
下一篇: 和AI一起编程
xy_cpp
博客等级 码龄10年 119粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值