本文转自:https://github.com/harmy/kbengine

资源下载地址:http://sourceforge.net/projects/kbengine/files/

什么是KBEngine?

KBEngine是一款开源mmog服务端引擎, 使用统一协议能够轻松与前端对接,能轻松使用unity3d、 ogre、 cocos2d、 html5等作为前端表现。

底层框架由c++编写, 逻辑层使用python, 开发者无需重复实现一些通用的底层服务端技术, 使开发者能够真正集中精力到游戏开发上来, 快速打造各种游戏。

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

简单的介绍一下引擎的各个主要组件部分:

· loginapp:
client的登录验证, 验证通过则向客户端发放一个baseapp的地址, 之后客户端通过baseapp与服务端交互。
可在多台机器部署多个loginapp进程来负载。 · dbmgr:
实现数据的存取,默认使用mysql作为数据库。 · baseappmgr:
主要负责协调所有baseapp的工作,包括负载均衡处理等。 · baseapp:
客户端与服务端的交互只能通过loginapp分配的baseapp来完成。
定时写entity的数据到数据库、 baseapp数据相互备份。
可在多台机器部署多个baseapp进程来均衡负载。 · cellappmgr:
主要负责协调所有cellapp的工作,包括负载均衡处理等。 · cellapp:
主要处理游戏实时逻辑, 如:aoi, navigate, ai, 休闲游戏房间内逻辑等等。
可在多台机器部署多个cellapp进程来动态均衡负载。 · client:
客户端我们将提供基础框架,这个框架不包括渲染部分和输入输出部分的具体实现,
我们将提供一个lib文件和一套API接口,开发者可以选择使用自己比较适合的图形渲染引擎与输入输出控制部分,
(目前已实现的ClientSDK版本: Unity3d、Ogre、Html5) · kbmachine:
抽象出一个服务端硬件节点(一台硬件服务器只能存在一个这样的进程)。主要用途是接受远程指令处理本机上的组件启动与关闭,
提供本机上运行组件的接入口以及搜集当前机器上的一些信息,
如:CPU, 内存等。 这些信息会提供给一些对此比较感兴趣的组件。 · guiconsole:
这是一个控制台工具, 可以实时的观察服务端运行状态, 实时观测不同space中entity的动态,
并支持动态调试服务端python逻辑层以及查看各个组件的日志,启动服务端与关闭等。 · messagelog:
收集和备份各个组件的运行日志,可使用guiconsole来查看和搜索相关信息。

GO!

设置环境变量:

kbe会读取KBE_ROOT,KBE_RES_PATH, KBE_HYBRID_PATH系统环境变量来做一些事情。

Linux: (假设kbe被放置在~/目录下)

[kbe@localhost ~]# vim ~/.bashrc

ulimit -c unlimited

export KBE_ROOT=~/kbengine/

export KBE_RES_PATH=$KBE_ROOT/kbe/res/:$KBE_ROOT/demo/:$KBE_ROOT/demo/res/

export KBE_HYBRID_PATH=$KBE_ROOT/kbe/bin/Hybrid64/

[root@localhost ~]# vim /etc/passwd

修改系统账号的uid必须唯一, uid用来区分不同的服务端组, 如果二台硬件维护一组服务端那么二台硬件上的uid必须一致,
值需大于0。

Windows:

鼠标右键"我的电脑"->"高级"->"环境变量" 设置对应的值就好了。
设置以下环境变量
KBE_ROOT ~/kbengine/(注意:这个地方应该是输入你kbengine所在的目录路径)
KBE_RES_PATH $KBE_ROOT/kbe/res/:$KBE_ROOT/demo/:$KBE_ROOT/demo/res/
KBE_HYBRID_PATH=$KBE_ROOT/kbe/bin/Hybrid64/
(注意: Windows下需要在环境变量中添加UID, 值需大于0)

KBE_ROOT:

kbe根目录路径。

KBE_RES_PATH:

相关资源路径用':'或者';'分隔, 第一个res必须是kbe引擎的res, 第二个res必须是用户脚本根目录, 其他无限制。

KBE_HYBRID_PATH:

kbe二进制文件所在目录路径。

编译:

linux:

测试系统(x32&x64): centos >= 5.x, debian >= 5.x
编译器 gcc: >= 4.4.x [root@localhost ~]# cd $KBE_ROOT/kbe/src [root@localhost /src]# make

windows:

安装好vc2008sp1版本直接编译完即可

KBE_ROOT\kbengine\kbe\src\kbengine_vs90.sln

注意:

1: 如使用其他版本编译器最好将openssl、log4cxx(kbe\src\libs\*.a)也重新编译。

2: 某些平台上的mysql路径可能不是/usr/lib64/mysql/mysql_config

修改kbe\src\build\common.mak中的MYSQL_CONFIG_PATH=/usr/lib64/mysql/mysql_config

3: 在linux上编译完成如因为python无法初始化无法正常运行的情况(这是个bug http://bugs.python.org/issue11320):

cd src\lib\python

./configure

make

make install

再启动服务端。

配置数据库:

1: 安装好mysql
如果是windows系统则my.ini中加入如下代码使mysql大小写敏感
[mysqld]
lower_case_table_names=0 2: 记得重启mysql服务, 否则不生效(命令行cmd输入):
net stop mysql
net start mysql 3: 新建一个数据库, 假设数据库名为"kbe"
mysql> create database kbe; 4: 创建一个数据库账户, 假设用户名密码都为"kbe"
先删除匿名用户
mysql> use mysql
mysql> delete from user where user='';
mysql> FLUSH PRIVILEGES; 创建kbe用户
mysql> grant all privileges on *.* to kbe@'%' identified by 'kbe';
mysql> grant select,insert,update,delete,create,drop on *.* to kbe@'%' identified by 'kbe';
mysql> FLUSH PRIVILEGES; 在CMD中测试一下是否能使用这个账号登陆mysql(请注意默认mysql端口为3306, 如不一致请修改kbengine_defs.xml->dbmgr-><port>330x</port>),
如果没有提示错误则账号配置完毕, 有错误请google
进入你的mysql安装目录找到mysql.exe所在目录, 然后cmd进入这个目录中执行如下语句:
C:\mysql\bin> mysql -ukbe -pkbe -hlocalhost -P3306 5: 在res\server\kbengine_defs.xml的dbmgr节修改databaseName参数
(推荐在demo\res\server\kbengine.xml重载修改)。
如果mysql端口不是3306, 请在kbengine.xml中的dbmgr段加入<port>端口号</port>。

启动服务端:

Linux:

[root@localhost ~]# cd $KBE_HYBRID_PATH

sh start.sh

sh kill.sh

(注意: 如有防火墙限制请设置防火墙规则对外开放这些TCP端口: loginapp登录端口、 baseapp登录端口具体请看
kbengine.xml|kbengine_defs.xml。 以及UDP广播端口:20086-20088)
(注意: 如果有二块网卡, 例如: eth0(公网ip)、eth1(局域网ip)
请设置kbengine.xml|kbengine_defs.xml除baseapp|loginapp|billingsystem的externalInterface设置为eth0以外,
其他相关{internal|external}Interface为局域网ip的那块网卡(eth1), 并设置使用局域网ip来接收udp广播:
/sbin/ip route del broadcast 255.255.255.255 dev eth0
/sbin/ip route add broadcast 255.255.255.255 dev eth1
)

Windows:

cd KBE_HYBRID_PATH

!(win)fixedstart.bat

!(win)kill.bat

或者使用tools\server\guiconsole\guiconsole.exe来启动和关闭服务端。
(注意: Windows版本仅用于测试, 由于使用select并发socket处理性能有限。)

日志:

KBE_HYBRID_PATH目录下会产生各组件运行的日志信息"logs\*.log"。
也可以使用GUIConsole来查看, 但必须开启messagelog。

什么是KBEngine的更多相关文章

  1. kbengine里如何使用git快速下载项目?

    项目有两个镜像,github[https://github.com/kbengine/kbengine.git] ,osc开源中国[https://git.oschina.net/likecg/kbe ...

  2. kbengine mmo源码(完整服务端源码+资源+完整客户端源码)

      本项目作为kbengine服务端引擎的客户端演示而写 更新kbengine插件库(https://github.com/kbengine/kbengine_unity3d_plugins):    ...

  3. kbengine Unity3d demo 代码执行流程(4)

    当服务端成功启动,客户端链接服务端后进入demo中的游戏界面,demo中的功能包括注册.登录.角色管理.战斗.场景等等. 对于新接触kbengine的人,看见客户端的代码后会觉得很迷茫,有些无从下手. ...

  4. kbengine FAQ(3)

    官方FAQ 下面是我遇到的一些问题: 1.服务端   "strtof" 未定义的标示符 对于我这个c++入门级都不算的新手,这个错误很挠头,这个错误是由于vc++版本问题,新版的语 ...

  5. kbengine环境搭建(2)

    做好准备工作后,可以开始搭建我们的kbengine服务端,运行成功kbengine服务端,共有9个服务会相应的被打开,并会全部提示[info]found all components! 准备工作 1. ...

  6. kbengine简单介绍(1)

    什么是kbengine? 一款开源的游戏服务端引擎,客户端通过简单的约定协议就能与服务端通讯, 使用KBEngine插件能够快速与(Unity3D, OGRE, Cocos2d-x, HTML5, 等 ...

  7. KBEngine WebConsole Guide

    https://github.com/kbengine/kbengine/tree/master/docs

  8. KBEngine简单RPG-Demo源码解析(3)

    十四:在世界中投放NPC/MonsterSpace的cell创建完毕之后, 引擎会调用base上的Space实体, 告知已经获得了cell(onGetCell),那么我们确认cell部分创建好了之后就 ...

  9. KBEngine简单RPG-Demo源码解析(2)

    七:服务端资产库文件夹结构http://kbengine.org/cn/docs/concepts/directorys.html看assets, 注意:demo使用的不是默认的assets资产目录, ...

  10. KBEngine简单RPG-Demo源码解析(1)

    一:环境搭建1. 确保已经下载过KBEngine服务端引擎,如果没有下载请先下载          下载服务端源码(KBEngine):              https://github.com ...

随机推荐

  1. scala之Actors

    这多半是因为actor是共享线程,所以阻塞线程会导致其他线程获取不到线程.

  2. 云计算之路-阿里云上:踩着RDS的2个坑

    最近发现阿里云RDS管理控制台升级了,界面更好看了,操作也更方便了,但在美丽的外表下却藏着坑,不小心被我们睬着了. 8月31日下午,我们在RDS管理控制台中创建了一个新的数据库帐号,创建时选择了绑定多 ...

  3. UITextField,UITextView字数限制

    UITextField,UITextView字数限制 主要是使用他们的两个代理方法 //标题限制在 30个字以内 - (BOOL)textField:(UITextField *)textField ...

  4. com.apple.installer.pagecontroller 错误 -1 pkg安装错误

    在网上下载了一个pkg 的安装文件: 在mac上安装一打就出现错误 原因是,文件从网上直接下载的,会出权限问题,需要修复安装软件的安装权限: 我的原因是,下载的是个rar的mac解压不了,就在线解压, ...

  5. android 从Activity 获取 rootView 根节点

    private static View getRootView(Activity context) { return ((ViewGroup)context.findViewById(android. ...

  6. 【Statistics】CAP曲线

    功能描述 CAP曲线(Cumulative Accuracy Profile)/Power Curve(准确率/AR)是描述整个评级结果下,累计违约客户比例与累计客户比例的关系. 在完美的模型下,CA ...

  7. spring日志加载代码解析

    项目用的是springmvc+spring+mybatis框架, 配置日志的时候非常简单,仅仅是把commons-logging.log4j,还有slf4j-log4j三个日志相关的jar包导入项目, ...

  8. ORA-01400: 无法将 NULL 插入 ("CHARGE_WQRL"."SF_JMQTFY_T"."BH")

    [ERROR] JmCheckManageDaoImpl:901 - java.sql.SQLException: ORA-01400: 无法将 NULL 插入 ("CHARGE_WQRL& ...

  9. MySQL-sqlmap常用参数的中文解释

    #HiRoot's BlogOptions(选项):--version 显示程序的版本号并退出-h, --help 显示此帮助消息并退出-v VERBOSE 详细级别:0-6(默认为1) Target ...

  10. Linux-进程基础

    计算机实际上可以做的事情实质上非常简单,比如计算两个数的和,再比如在内存中寻找到某个地址等等.这些最基础的计算机动作被称为指令 (instruction).所谓的程序(program),就是这样一系列 ...