KBE_创建项目和基本常识
此笔记参考官方文档
第一个项目
资产库:是每一个项目文件夹的名称,使用KBE提供的生成工具生成一个最小资产库,其中包含了很多常用的工具,默认名server_assets:
res:放置一些资源(入地图资源,res/spaces目录下)以及当前项目的服务器配置(res/server目录下);
scripts:脚本的文件夹,所有脚本开发都在该文件夹下进行,引用自官方手册;
base: Baseapp上的脚本存放位置
bots: Bot机器人的脚本存放位置
cell: Cellapp上的脚本存放位置
common: 脚本开发中共用的一些模块的存放位置,如Functor、KBEDebug等工具模块
data: 存放数据的位置,比如策划配置好的表格等(一般是py文件,而非excel文件),可以在脚本开发时快速获取到对应的数据对象
db: DBMgr上的脚本存放位置
entity_defs: Entity的配置文件存放位置
interface: 第三方接口服务器的脚本存放位置
logger: 日志服务器的脚本
login: Loginapp的脚本存放位置
user_type: 用户自定义的数据类型的实现脚本的存放位置
entities.xml: Entity实体声明文件,用到的Entity需要在此进行声明,否则无法使用
第一个entity
创建一个entity的实体,它包含如下几个部分:
- entity 的声明({项目资产库}/scripts/entities.xml)
声明过后,引擎才知道它的存在。 - 配置,即def配置文件的编写({项目资产库}/scripts/entity_defs/FirstEntity.def)
该文件是一个entity的完整描述文件,从而让引擎及服务器各个组件知道这个entity有哪些能力(方法和属性) - python脚本的实现。每个entity最多有三个部分的实现(client/cell/base)
- ({项目资产库}/scripts/base/FirstEntity.py)如果有Baseapp上的功能需求,则需要有对应的base实现
- ({项目资产库}/scripts/cell/FirstEntity.py)如果有cellapp上的功能需求,则需要有对应的cell实现
- client部分一般在客户端上进行实现,不在服务端范围内
- 创建实体对象。在引擎端调用API来创建该实体对象,相当于实例化实体。
第一个Space
space空间是cell上的一个抽象概念,每个space相当于一个空间,它可以是一个场景,一个副本,一个房间等
不在同一个space的客户端无法互动,通讯。
创建一个space:
- entity声明({项目资产库/scripts/entities.xml})
在该文件下添加FirstSapce - def配置({项目资产库/scripts/entity_defs/FirstSpace.def})
- python实现({项目资产库/scripts/base/FirstSpace.py})
空间实体继承自:KBEngine.Space - cell部分的实现({项目资产库/scripts/cell/FirstSpace.py})
- 在baseapp就绪时创建空间({项目资产库/scripts/base/kbemain.py})
在kbemain.py中的onBaseAppReady函数中添加创建空间实体的语句
让entity进入space空间
这里我们让entity在客户端链接服务器并和entity关联时,就立马进入空间
{项目资产库/scripts/base/FirstEntity.py},添加onClientEnable回调函数
KBE_创建项目和基本常识的更多相关文章
- MVC Core 网站开发(Ninesky) 1、创建项目
又要开一个新项目了!说来惭愧,以前的东西每次都没写完,不是不想写完,主要是我每次看到新技术出来我都想尝试一下,看到.Net Core 手又痒了,开始学MVC Core. MVC Core最吸引我的有三 ...
- MVC5 网站开发之二 创建项目
昨天对项目的思路大致理了一下,今天先把解决方案建立起来.整个解决包含Ninesky.Web.Ninesky.Core,Ninesky.DataLibrary等3个项目.Ninesky.Web是web应 ...
- Maven自定义绑定插件目标:创建项目的源码jar
<build> <plugins> <!-- 自定义绑定,创建项目的源码jar --> <plugin> <groupId>org.apac ...
- Vs2012 创建项目失败 未找到与约束ContractName
刚开始使用vs2012的时候,创建项目失败,后来找到原因 ,是KB2840642V2的原因,于是 卸载之.vs正常
- C#程序员的春天之从零开始学习unity3D游戏开发入门教程二(创建项目及基本面板介绍)
一项目创建: 创建项目是开发的第一步. 运行untiy之后如果是第一次运行会弹出 我们这里随便创建一个项目. 二Untiy面板介绍: 三代码编辑器的切换: 这里我安装了vs2012. 到这里开发环境基 ...
- vs创建项目模板和项模板
原文地址:https://msdn.microsoft.com/zhcn/library/xkh1wxd8(v=vs.140).aspx 如何:创建项目模板 Visual Studio 2015 ...
- cocos2d-x创建项目
2.0之后的创建项目方法 第一步,首先 cd cocos2d-x-2.2.1/tools/project-creator/ 第二步, ./create_project.py -project Hell ...
- Django1.3 创建项目
经历了各种失败各种烦恼以后Django开发环境终于搭建好了! 系统环境:ubuntu12.04 Django版本1.3.1 Python版本 2.7.3 接下来就兴建一个项目练习一下 1.创 ...
- thinkphp学习简易教程(一) thinkphp创建项目
1.在本地服务器根目录下创建项目目录,如命名为app: 2.把thinkphp的压缩包解压到与项目同级目录下,如app是放在目录APP下面,即项目目录路径为'APP/app/',则thinkphp应解 ...
随机推荐
- 阿里DNS 223.5.5.5 223.6.6.6 (转载)
转自:http://it.oyksoft.com/post/6780/ 阿里DNS: 223.5.5.5 223.6.6.6 为何用它? 一.选择阿里DNS让你购物更爽,如果是淘宝狂人 ...
- vultr 购买vps
基本安装转自:https://github.com/uxh/shadowsocks_bash/wiki/Vultr%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B 连接 Vul ...
- Linux基本命令—mkfs/mount/umount/wget/yes/make/passwd
mkfs:用来在特定的分区建立Linux文件系统,是make filesystem的缩写. 例子:mkfs .ext3 /dev/mmcblk0p1 //把该设备格式化成ext3文件系统 m ...
- poj 2506 Tiling 递推
题目链接: http://poj.org/problem?id=2506 题目描述: 有2*1和2*2两种瓷片,问铺成2*n的图形有多少种方法? 解题思路: 利用递推思想,2*n可以由2*(n-1)的 ...
- multiset || 线段树 HDOJ 4302 Holedox Eating
题目传送门 题意:一个长度L的管子,起点在0.n次操作,0 p表示在p的位置放上蛋糕,1表示去吃掉最近的蛋糕(如果左右都有蛋糕且距离相同,那么吃同方向的蛋糕),问最终走了多少路程 分析:用multis ...
- Java标识符的习惯命名规范
1 常量标识符:全部用大写字母和下划线表示.如SALES_MAX 2 类名或接口名:标识符用大写字母开头.如CreditCard 3 变量名和方法名:以小写字母开头,单词之间不要有分隔符,第二 及后面 ...
- Aspose.Word 的常见使用(2018-12-26 更新版)
Aspose.Word 的常见使用 起因 因项目需要,而且使用html转Word的时候,样式不兼容问题,于是只能使用Aspose.Word通过代码生成.下面是通过DocumentBuilder来设计W ...
- (六)Mybatis总结之延迟加载
应用场景: i.假如一个用户他有N个订单(N>=1000),那么如果一次性加载的话,一个用户对象的订单集合OrderList里面就会有1000多个Order的对象.计算:一个订单对象里面数据有多 ...
- [BZOJ1061][Noi2008]志愿者招募 线性规划+费用流
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1061 根据题意列方程,然后用网络流解线性规划. 题解直接贴ByVoid的吧,太神了:htt ...
- 用unsigned char 表示字节
在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在内存中,char与unsigned char没有什么不同 ...