🍵 安装和启动
引擎安装和启动详解
这一节中会对引擎的安装和启动的所有细节进行阐述。
1. 获取
KBEngine始终维护社区版,并开源给广大开发爱好者。github上有专业人士进行源代码的更新和维护,让社区版紧跟技术迭代。
KBE版本分为2.x以及稳定版1.x。上线产品建议使用稳定版,该版本已经过无数验证,其可靠性是符合生产环境的。对于开发期的项目,可以使用2.x版,尝试引擎最新的功能特性,更大可能的发挥引擎性能,同时,对于开发效率和开发体验也做了进一步的提升。
2.x:
当前最新版本为v2.4.2。
github地址:传送门
稳定版1.x:
当前最新版本为v1.3.1
github地址: 传送门
windows用户请下载对应的zip文件,linux用户请下载对应的tar.gz文件。
2. 编译与建立
上一小节中获取到的都是源码,即使是压缩包,也是源码压缩包,必须进行编译才能完成安装。因环境有很大不同,故编译分Linux和Windows。
Linux:
[root @ localhost ~]# yum install openssl-devel (在Ubuntu类系统上, 使用 "apt-get install libssl-dev")
[root @ localhost ~]# yum install mysql-server (在Ubuntu类系统上, 使用 "apt-get install mysql-server")
[root @ localhost ~]# yum install mysql-devel (在Ubuntu类系统上, 使用 "apt-get install libmysqld-dev")
[root @ localhost ~]# cd kbengine/kbe/src
[root @ localhost/ src]# chmod -R 755 .
[root @ localhost/ src]# make
注:仅测试了(x32/x64): Centos >= 5.x, Debian >= 5.x, GCC版本: >= 4.4.x。如发现问题请及时与我们官方联系,让我们尽快修复。
注意:
1: 如出现下面字样,说明autoconf未安装
./autogen.sh: 5: ./autogen.sh: autoconf: not found
安装方法如下:
[root @ localhost ~]# yum install autoconf (在Ubuntu类系统上, 使用 "sudo apt-get install autoconf")
并重新安装引擎即可。
2: 如果使用了其他版本的编译器最好重编译openssl、log4cxx与其他(kbengine/kbe/src/libs/*a.)。
3: mysql_config在某些操作系统版本上可能不是这个路径地址 /usr/bin/mysql_config,你可以手动修改kbengine/kbe/src/build/common.mak其中MYSQL_CONFIG_PATH=/usr/bin/mysql_config。
4: 在Linux上编译之后可能会出现Python解释器无法初始化而导致无法启动服务端的问题 (这是一个Python的bug,参看这里http://bugs.python.org/issue11320)
你可以执行如下命令解决这个问题
[root @ localhost ~] cd kbengine/src/lib/python
[root @ localhost ~] ./configure
[root @ localhost ~] make
[root @ localhost ~] make install
Windows:
工程文件在kbengine\kbe\src\kbengine_vs**.sln(星号部分会根据最低支持的VS版本变动),双击打开。
注:Windows上的编译,需利用微软VisualStudio,最低支持VisualStudio 2015,在VisualStudio 2017测试通过。请自行下载安装。

利用VS打开工程后,在“解决方案资源管理器”(如上图所示),右键,选择“生成解决方案”或按快捷键F6
等待编译通过,大约需要几分钟。直到出现”生成成功”字样。
如出现编译错误,请检查环境或联系我们官方人员进行解决和确认。
注:文档中使用了VisualStudio2017中文版,可能有少许差异。
3. 安装与配置
KBEngine的环境安装非常简单,只需要完成MySql的安装和配置即可。MySql的安装和配置也会分Linux和Windows两个平台进行介绍。其他可选的安装和配置,根据实际需求进行选择。
- 安装MySQL数据库并配置
- 创建数据库
- 创建kbe系统用户(可选)
- 设置环境变量(可选)
- Windows平台下,安装Python环境(当需要使用引擎提供的工具时可选)
3.1 安装MySQL数据库并配置:
Linux:
Linux系统下,安装Mysql比较简单,只需执行几个命令即可。
安装
[root @ localhost ~]# yum install mysql-server
设定为开机自动启动
[root @ localhost ~]# chkconfig mysqld on
启动mysql服务
[root @ localhost ~]# /etc/init.d/mysqld start
检查是否启动成功
[root@localhost ~]# /etc/init.d/mysqld status
mysqld (pid 9234) is running...
安装成功
Windows:
下载并安装最新版本:
http://dev.mysql.com/downloads/windows/
在本章节中建议选择MSI Installer的版本,自解压的版本在配置上会有一些区别,请高级用户选择
3.2 创建数据库:
3.2.1:创建数据库,本章节中假设数据库名为“kbe”
mysql> create database kbe;
3.2.2:删除匿名用户
(一些系统中不删除匿名用户会出现使用kbe账号用本地IP登录mysql被拒绝访问)
mysql> use mysql;
mysql> delete from user where user='';
mysql> FLUSH PRIVILEGES;
3.2.3:创建数据库用户
用户名是”kbe”,密码是”pwd123456”(本章节默认使用该账号和密码,请暂时不要修改)
mysql> grant all privileges on *.* to kbe@'%' identified by 'pwd123456';
mysql> grant select,insert,update,delete,create,drop on *.* to kbe@'%' identified by 'pwd123456';
mysql> FLUSH PRIVILEGES;
3.2.4: 验证
Windows系统下:
进入你的mysql安装目录找到mysql.exe(如C:\mysql\bin), 然后在CMD执行如下命令:
C:\mysql\bin> mysql -ukbe -ppwd123456 -hlocalhost -P3306
Linux系统下:
[root@localhost ~] mysql -ukbe -ppwd123456 -hlocalhost -P3306
如果能成功登陆,说明验证成功!
注意:
1: 默认Mysql端口为3306, 如不一致请修改kbengine_defaults.xml->dbmgr->330x
2: 请不要使用其他任何第三方工具来测试,必须使用mysql进行测试,第三方工具为了能够正确的连接到Mysql可能会采用一些兼容的方式,但这对于游戏服务端来说是不可靠的方式,权限应该由用户明确的设置。
3.3 创建kbe系统用户(可选):
创建一个独立的用户来运行KBEngine将会更加安全可靠以及便于维护。如果您跳过此步骤,会使用你当前账户的用户作为kbe user。
Linux:
[root@localhost ~]# useradd kbe
[root@localhost ~]# passwd pwd123456
New UNIX password: ******
Retype new UNIX password: ******
passwd: all authentication tokens updated successfully
Windows:
以Win10为例:打开“计算机管理”,右键选择”新用户”。如下图:

输入用户名和密码,ok,完成。在后面的配置中,可以使用该用户作为KBE的用户。
3.4 设置环境变量(可选)
(提醒:在服务端资产库启动服务器的脚本中已经具备自动化临时设置环境变量正确启动服务器功能,因此没有特别复杂的部署需求可略过此步骤。)
KBE引擎会读取系统中设置的(KBE_ROOT, KBE_RES_PATH, KBE_BIN_PATH)环境变量, 环境变量的意义:
UID: 操作系统用户账号的uid将被用于区分不同的服务器组,如果是多台硬件服务器共同维护一组服务, 那么每一台机器上的系统uid环境变量都应该保持一致,否则无法形成服务组。 另外uid必须大于0, 小于32767. (注意: Windows系统账号没有UID属性, 需要用户自己添加这个环境变量)
KBE_ROOT: 引擎根目录。
KBE_RES_PATH: 引擎的资源路径。不同路径使用’:’或者’;’分隔, Windows由于操作系统规则必须使用’;’分隔,默认情况下资源路径中第一个资源路径 是引擎的资源路径, 第二个资源路径是用户脚本的资源路径。
KBE_BIN_PATH: 引擎可执行文件所在目录。
Linux:
(假如kbe被安装在~/目录)
[kbe@localhost ~]$ vim ~/.bashrc
ulimit -c unlimited
export KBE_ROOT=~/kbengine/
export KBE_RES_PATH=$KBE_ROOT/kbe/res/:$KBE_ROOT/assets/:$KBE_ROOT/assets/scripts/:$KBE_ROOT/assets/res/
export KBE_BIN_PATH=$KBE_ROOT/kbe/bin/server/
使环境变量生效:
[kbe@localhost ~]$ source ~/.bashrc
root权限设置用户kbe的uid(假如设置为10103):
[root@localhost ~]# usermod -u 10103 kbe
Windows:
鼠标右键点击: “我的电脑”->”高级”->”环境变量”, 然后设置

(假如安装在C盘)
KBE_ROOT = C:/kbengine/
KBE_RES_PATH = %KBE_ROOT%/kbe/res;%KBE_ROOT%/assets/;%KBE_ROOT%/assets/scripts;%KBE_ROOT%/assets/res/
KBE_BIN_PATH = %KBE_ROOT%/kbe/bin/server/
(注意: 在Linux上系统账号的id就是uid,Windows系统账号没有UID属性,需要用户自己添加这个环境变量,这里假如设置成10103)
UID = 10103
3.5 Windows下Python安装(可选)
当需要使用引擎提供的工具时,在Windows平台下就需要有Python的环境。
Python获取见Python官网。推荐选择Python3.6.x。
使用exe安装时,一路采用默认即可,安装完毕后,会自动配置环境变量。通过CMD,输入python,测试一下Python的环境是否安装正确。
从图中可以看到。我们安装的3.6.1版本,此时说明Python环境ok。
4. 启动与关闭
默认的,启动引擎的快捷入口是存放在自己项目的资产库下的一个批处理文件start_server.bat
(Linux下是start_server.sh
),而引擎在根目录下提供了一个默认的“assets”资产库,该资产库是一个最小的KBE项目。
什么是资产库?
所谓资产库,即是一个新的项目的所有数据、脚本代码、资源等存储的地方,而这个地方就是一个文件夹,该文件夹一般可以放置在引擎根目录下(与kbe、assets文件夹同级)。Tips:
资产库文件夹也可以放置在其他地方,不过需要修改启动脚本中环境变量,在本文后面会进行阐述。
运行start_server.bat
即可启动,而关闭服务器是通过kill_server.bat
或safe_kill.bat
。
启动与关闭的执行命令
根据自己所在操作系统不同,有两种方式启动:
Linux:
(假设引擎安装目录为 root/kbengine)
[kbe @gameserver ~]$ cd root/kbengine/getstarted_assets
[kbe @gameserver ~]$ sh start_server.sh
[kbe @gameserver ~]$ sh kill_server.sh
Windows:
(假设引擎安装目录为d:/kbengine/)
cd d:/kbengine/getstarted_assets
start_server.bat
kill_server.bat
检查启动状态
Windows下,当启动服务器时,会弹出很多console窗口,这些都是服务器的app及其他应用程序,详细的服务器app介绍可以在基础篇->基本概念中查看。
如果启动成功将会在日志中找到”Components::process(): Found all the components!”。
如果出现红字错误或任何其他情况请在日志中搜索”ERROR”关键字,根据错误描述尝试解决。

初次启动KBEngine时,mysql需要初始化一些表结构,可能会花上几分钟请耐心等待完成。
ok,看到所有窗口都出现”Found all the components!”时,恭喜你,成功启动了引擎!!
启动参数解释
我们打开start_server.bat
,看到如下:
@echo off
set curpath=%~dp0
cd ..
set KBE_ROOT=%cd%
set KBE_RES_PATH=%KBE_ROOT%/kbe/res/;%curpath%/;%curpath%/scripts/;%curpath%/res/
set KBE_BIN_PATH=%KBE_ROOT%/kbe/bin/server/
if defined uid (echo UID = %uid%) else set uid=%random%%%32760+1
cd %curpath%
call "kill_server.bat"
echo KBE_ROOT = %KBE_ROOT%
echo KBE_RES_PATH = %KBE_RES_PATH%
echo KBE_BIN_PATH = %KBE_BIN_PATH%
start %KBE_BIN_PATH%/machine.exe --cid=1000 --gus=1
start %KBE_BIN_PATH%/logger.exe --cid=2000 --gus=2
start %KBE_BIN_PATH%/interfaces.exe --cid=3000 --gus=3
start %KBE_BIN_PATH%/dbmgr.exe --cid=4000 --gus=4
start %KBE_BIN_PATH%/baseappmgr.exe --cid=5000 --gus=5
start %KBE_BIN_PATH%/cellappmgr.exe --cid=6000 --gus=6
start %KBE_BIN_PATH%/baseapp.exe --cid=7001 --gus=7
start %KBE_BIN_PATH%/cellapp.exe --cid=8001 --gus=9
start %KBE_BIN_PATH%/loginapp.exe --cid=9000 --gus=11
在之前有提到环境变量UID、KBE_ROOT、KBE_RES_PATH、KBE_BIN_PATH,在启动参数中会调用这些变量,如果在环境变量中未设置,则会根据资产库所在文件夹的位置进行自动匹配。
我们来看一下这几个参数:cid、gus
cid: 该参数必须设置,类型为uint64, 全名component id, 每个进程都有一个唯一ID,唯一ID在合适的时候用于区分他们之间的身份。
gus: 可选参数,类型为uint16, 全名genUUID64 sections,这个值会被引擎KBEngine.genUUID64函数用到,设置为不同的值genUUID64将在不同的区间产生唯一uuid。
注意:这个值如果能在多个服务组进程之间保持唯一性,那么在合服的时候能够带来一定的便利性。
例如:游戏服A和游戏服B中的物品在数据库中存储的ID都使用genUUID64生成,那么在合服的时候能够直接向一张表中合并数据。 (注意:如果gus超过65535或者小于等于0,genUUID64将只能保证当前进程唯一)