目录

目录结构

引擎的文件夹目录结构将在这一小节中进行详细阐述,对于一个开发者,对引擎的目录结构的了解是至关重要的,也是对整个引擎的运作机制有一个梳理作用。

总览

|- kbengine             (KBE_ROOT 根目录)
    |- assets               (默认的游戏项目资产库)
        |- res                  (所有资源文件)
        |- scripts              (所有的游戏逻辑,Python文件)
    |- docs                 (离线文档)
    |- kbe                  (引擎目录)
        |- tools                (引擎工具)
        |- src                  (KBEngine源代码)
        |- res                  (引擎资源目录)

根目录

1

assets: 默认的游戏项目资产库,也叫做最小assets资产库,新建项目时可以直接复制出来使用。

Tips: 一般的,我们新项目的资产库都会放在引擎根目录下,但有时候需要放置在其他目录下时,可以通过环境变量绑定,详情见引擎启动详解

docs: 离线文档所在文件夹
kbe: 引擎目录。里面包含引擎运行所需的源代码、bin文件夹、工具、默认的资源及配置、内置Python脚本库等


assets资产库

虽然assets资产库是默认的游戏项目资产库,但所有资产库都有类似的结构。

1

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两个子文件夹。可以根据业务需要自行添加其他文件夹。

1

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: 用户自定义的数据类型,见自定义数据类型

tips:引擎内有基础类型,需要在这些类型的基础上新增自定义数据类型时,需要在此文件夹内编写对应类型的解析方法。

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-----------(游戏数据表导出工具)

一般,除了restools文件夹,我们不会去碰触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工具的使用规则)

Copyright © 2018 Yolo Technologies. Publication: 2.0-025. Built: 2018-12-07.