📇 目录结构
目录结构
引擎的文件夹目录结构将在这一小节中进行详细阐述,对于一个开发者,对引擎的目录结构的了解是至关重要的,也是对整个引擎的运作机制有一个梳理作用。
总览
|- kbengine (KBE_ROOT 根目录)
|- assets (默认的游戏项目资产库)
|- res (所有资源文件)
|- scripts (所有的游戏逻辑,Python文件)
|- docs (离线文档)
|- kbe (引擎目录)
|- tools (引擎工具)
|- src (KBEngine源代码)
|- res (引擎资源目录)
根目录

- assets: 默认的游戏项目资产库,也叫做最小assets资产库,新建项目时可以直接复制出来使用。
提示
一般,我们新项目的资产库都会放在引擎根目录下,但有时候需要放置在其他目录下时,可以通过环境变量绑定,详情见引擎启动详解
- docs: 离线文档所在文件夹
- kbe: 引擎目录。里面包含引擎运行所需的源代码、bin文件夹、工具、默认的资源及配置、内置Python脚本库等
assets资产库
虽然assets资产库是默认的游戏项目资产库,但所有资产库都有类似的结构。

- res: 所有资源文件所在的文件夹。
- scripts: 所有的游戏逻辑,Python文件。
- gensdk.bat: 批处理-生成客户端sdk代码。可以在批处理代码中自行修改输出的目标文件夹相关信息。
提示
所有批处理和快捷,都是针对该资产库的,而非全局的。批处理文件可使用编辑工具(记事本、VSCode等)进行编辑,其代码中的细节,详情介绍见SDK自动生成一节。
- guiconsole.bat: 启动GUIConsole工具的批处理。GUIConsole是引擎的一个工具,用于在开发期进行调试,见在线调试-GUIConsole
- kill_server.bat: 批处理-关闭服务器的。可以通过该方法,快速的关闭引擎的所有进程,在开发期建议使用该方法(较为暴力_)。
- kill_server.sh: 如上,Linux下的版本。
- safe_kill.bat: 批处理-安全的关闭服务器。在运营时,建议使用该方法关闭服务器。
- safe_kill.sh: 如上,Linux下的版本。
- start_bots.bat: 批处理-开启服务器端机器人程序。bots是模拟客户端的一种服务器端工具,在调试阶段可以使用该方法进行测试,如debug、压力测试等。见进阶篇-调试-bots
- start_bots.sh: 如上,Linux下的版本。
- start_server.bat: 批处理-开启服务器。运行后会启动服务器的所有进程。 详情见引擎启动详解
- start_server.sh: 如上,Linux下的版本。
- start_server_background.bat: 批处理-静默的开启服务器。与start_server不同的时,使用该方法,不会弹出进程窗口。
res文件夹
assets/res文件夹是存放所有资源文件的文件夹,其中默认含有server、spaces两个子文件夹。可以根据业务需要自行添加其他文件夹。
- server文件夹: 当前项目的引擎配置,会覆盖引擎的默认配置(kbe/res/server下的配置)。详情见引擎配置
- spaces文件夹: 默认的一个文件夹,一般可以存放游戏场景相关的资源,如Navmesh。
相关信息
API相关性:
1: 引擎中默认的资源读取路径都是相对路径,而相对的路径就是该文件夹,如:
res_path = "spaces/xinshoucun"
KBEngine.addSpaceGeometryMapping(self.spaceID, None, res_path)
# 会读取该文件夹下的`spaces/xinshoucun`下的数据,来关联某空间的几何数据映射。
2: 获取资源绝对路径:KBEngine.getResFullPath(relativeResPath)
通过该API可以把相对该文件夹下的路径,转成绝对路径
3:检查是否有某个资源:KBEngine.hasRes(relativeResPath)
该api的参数res,也是相对路径,相对于res文件夹的。
scripts文件夹
|- scripts
|- base-------------(Base的Python逻辑)
|- Account.py----------(默认的账户处理脚本)
|- kbemain.py----------(baseapp的入口脚本)
|- bots-------------(机器人的Python逻辑,压力测试)
|- kbemain.py----------(bots的入口脚本)
|- cell-------------(Cell的Python逻辑)
|- kbemain.py----------(cellapp的入口脚本)
|- common-----------(逻辑公共文件夹)
|- Functor.py----------(Functor实现脚本)
|- KBEDebug.py---------(Debug日志的辅助脚本)
|- data-------------(游戏逻辑用到的数据资源)
|- db---------------(dbmgr扩展脚本)
|- kbemain.py----------(dbmgr的入口脚本)
|- entity_defs------(实体定义与声明)
|- interfaces----------(实体的接口声明)
|- Account.def---------(Account的申明)
|- types.xml-----------(自定义类型的申明)
|- interface--------(第三方服务接口的脚本)
|- logger-----------(logger的逻辑)
|- login------------(LoginApp的逻辑)
|- server_common----(服务端逻辑公共模块)
|- user_type--------(自定义用户类型目录)
|- entities.xml-----(所有entity实体申明的配置文件)
base: baseapp上的脚本存放位置。
提示
默认,有一个Account.py的实体,方便用户起手新项目时使用。
bots: bot机器人的脚本存放位置,详情见进阶篇-调试-bots。
cell: cellapp上的脚本存放位置。
common: 逻辑脚本开发中共用的一些模块的存放位置。默认包含Functor、KBEDebug等工具模块。
data: 存放数据的位置,比如策划配置好的表格等(一般是py文件,而非excel文件),可以在脚本开发时快速获取到对应的数据对象。
db: dbmgr上的脚本存放位置。
entity_defs: entity的配置文件存放位置。
interface: 第三方接口服务器的脚本存放位置。
logger: 日志服务器的脚本。
login: loginapp的脚本存放位置。
server_common: 服务器之间共用的模块脚本的存放位置,默认里面不包含脚本。
user_type: 用户自定义的数据类型,见自定义数据类型。
提示
引擎内有基础类型,需要在这些类型的基础上新增自定义数据类型时,需要在此文件夹内编写对应类型的解析方法。
entities.xml: entity实体申明文件,用到的entity需要在此进行申明,否则无法使用。
相关信息
<!-- 比如有一个Avatar的实体已经在entity_defs下申明Avatar.py,
还是需要在entities.xml中写入。-->
<root>
<Avatar/>
</root>
kbe引擎目录
|- kbe
|- bin ------------(编译后的可执行文件存放目录)
|- server -----------(编译后的服务端可执行文件存放目录)
|- res ------------(引擎内部的资源目录)
|- client -----------(输出客户端sdk时的一些资源,如sdk template)
|- key---------------(RSA密钥)
|- scripts-----------(Python脚本库)
|- server------------(服务端引擎的默认配置)
|- src-------------(Cell的Python逻辑)
|- build-------------(makefile公共脚本)
|- client------------(客户端插件和例子目录)
|- lib---------------(各种模块源代码)
|- libs--------------(编译后的*.lib, *.a文件)
|- server------------(服务端app源代码)
|- kbengine_vsxx.sln (工程文件)
|- Makefile----------(makefile编译文件)
|- tools-----------(引擎工具)
|- server------------(引擎服务端工具)
|- xlsx2py-----------(游戏数据表导出工具)
一般,除了res和tools文件夹,我们不会去碰触kbe下的内容,高阶用户可以查看src部分,了解引擎实现的源代码和底层实现。
kbe/res文件夹
该文件夹是存放引擎内部的资源文件。
client: 是存放客户端sdk的模板文件,如果有需要修改sdk模板的,可以在此文件夹下做调整。
server: 服务器端引擎的默认配置,与之对应的是在自己项目资产库中的res/server
文件夹。一般情况下,我们不建议在此做修改,如需修改,请修改自己项目资产库中对应文件。引擎配置请查看详情引擎配置一文
kbe/tools文件夹
该文件夹下存放引擎附带的工具,分server工具和xlsl2py工具,在server工具下包含guiconsole、install、pycluster、webconsole等,请参见内置工具介绍
|- kbe\tools
|- server ---------(引擎服务端工具)
|- guiconsole ---------------(GUIConsole工具,可视化控制台,调试和开发时使用)
|- install ------------------(引擎安装和卸载时的工具)
|- pycluster ----------------(跨平台的集群控制Python脚本工具)
|- pycommon -----------------(Python共用的脚本工具)
|- webconsole ---------------(网页端的控制台工具,一般用于运营时)
|- xlsl2py --------(游戏数据表导出工具)
|- xlsx2py ------------------(工具的py实现模块)
|- tool_installation.log ----(xlsl2py工具安装指导)
|- tool_rules.log -----------(xlsl2py工具的使用规则)