kbengine定义实体

定义实体

什么时候需要定义实体:

需要进行数据存储。
能够方便的远程访问。
需要引擎管理和监控, 例如: AOI、Trap、等等。
当灾难发生后服务端可以自动进行灾难的恢复。

什么时候需要定义实体的属性:

需要进行数据存储。
实体被迁移后数据仍然有效(仅cellapp会迁移实体,比如跳转场景)。
当灾难发生后服务端可以自动进行灾难的恢复。

什么时候需要定义实体的方法:

能够方便的远程访问。

您需要执行以下步骤:

  1. 注册实体

    目录地址 : demo/scripts/entities.xml

    例子:

     <root>
         <Account/>
         <Avatar/>
         <Spaces/>
         <Space/>
         <Monster/>
         <NPC/>
         <Gate/>
     </root>
    
  2. demo/scripts/entity_defs目录下创建一个定义文件

    例子: Account.def

  3. 你可能需要定义一些属性和方法
    1. demo/scripts/目录下有三个子目录(base、cell、client),你可以根据需要添加Account.py。
    2. 不是每个实体都存在(client, base, cell)这三个部分, 你可以根据需要做出一些选择。

定义文件的格式

<root>
	<Properties>
		// 属性名称
		<accountName>
			// 属性类型
			<Type>			UNICODE				</Type>

			// (可选)
			// 属性的自定义协议ID,如果客户端不使用kbe配套的SDK来开发,客户端需要开发跟kbe对接的协议,
			// 开发者可以定义属性的ID便于识别,c++协议层使用一个uint16来描述,如果不定义ID则引擎会使用
			// 自身规则所生成的协议ID, 这个ID必须所有def文件中唯一
			<Utype>			1000				</Utype>

			// 属性的作用域 (参考下方:属性作用域章节)
			<Flags>			BASE				</Flags>

			// (可选)
			// 是否存储到数据库
			<Persistent>		true				</Persistent>

			// (可选)
			// 存储到数据库中的最大长度
			<DatabaseLength> 	100				</DatabaseLength>

			// (可选, 不清楚最好不要设置)
			// 默认值
			<Default>		kbengine			</Default>

			// (可选)
			// 数据库索引, 支持UNIQUE与INDEX
			<Index>			UNIQUE				</Index>
		</accountName>

		...
		...
	</Properties>

	<ClientMethods>
		// 客户端暴露的远程方法名称
		<onReqAvatarList>
			// 远程方法的参数
			<Arg>			AVATAR_INFOS_LIST		</Arg>
			<Utype>			1001				</Utype>
		</onReqAvatarList>

		...
		...
	</ClientMethods>

	<BaseMethods>
		// Baseapp暴露的远程方法名称
		<reqAvatarList>
			// cell暴露方法必须存在这个标记
			<Exposed/>
			<Utype>			1002				</Utype>
		</reqAvatarList>

		...
		...
	</BaseMethods>

	<CellMethods>
		// Cellapp暴露的远程方法名称
		<hello>
			<Utype>			1003				</Utype>
		</hello>
	</CellMethods>

</root>

例子: 在客户端中调用base方法获得角色列表(Account.py):

 self.base.reqAvatarList()

属性作用域

[类型]			[client]		[base]			[cell]
BASE			-			*			-
BASE_AND_CLIENT		*			*			-
CELL_PRIVATE		-			-			*(cell)
CELL_PUBLIC		-			-			*(cells)
CELL_PUBLIC_AND_OWN	*(client)		-			*(cells)
ALL_CLIENTS		*(clients)		-			*(cells)
OWN_CLIENT		*(client)		-			*(cell)
OTHER_CLIENTS		*(other clients)	-			*(cells)
时间: 2024-11-10 13:09:04

kbengine定义实体的相关文章

xml定义实体

1.实体的定义 *语法: <!ENTITY  实体名称  "实体的值"> ***<!ENTITY TEST "灼若芙蕖出绿波"> ***使用实体  &实体名称;   比如&TEST; **注意 *定义实体需要卸载内部dtd里面,如果卸载外部的dtd里面,有某些浏览器下,内容得不到 <?xml version="1.0" encoding="UTF-8"?> <!DOCT

当Json数据中的key为Java关键字时,在定义实体类的时候不能对该字段进行声明,所以需要对字段进行特殊处理

使用Gson解析 在与Java关键字冲突的字段加上@SerializedName注解 @SerializedName("abstract") private String abstractX; 使用Jackson解析 在与Java关键字冲突的字段加上@JsonProperty注解 @JsonProperty("abstract") private String abstractX; 原文地址:https://www.cnblogs.com/xiaohan666/p/

JPA学习---第十一节:JPA中的多对多双向关联实体定义与注解设置及操作

1.定义实体类,代码如下: (1).学生实体类: package learn.jpa.entity; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import

011.EF实体框架(入门)

1>ASP.NET MVC开发中模型的实现方法 模型的实现方法 两种方法1手动2自动(工具 EF)1.1手动创建模型(写好模型元数据)[练习过了 项目!] 前提条件:先手动创建数据库和表 (模型:实体类,实体访问类,Sqlhelper) (Sqlhelper使用ADO.NET传统方法实现) 1.2使用EF(Entity Framework:实体框架)创建模型 2>EF的概念2.1什么是EF***EF是 实体框架 (Entity Framework)的简称,***EF 可以用来定义模型类并操作数

谈谈我的入门级实体框架Loogn.OrmLite

每次看到有新的ORM的时候,我总会留意一下,因为自己也写过一个这样的框架,人总是有比较之心的.我可能会down下来跑一跑,也可能不会这么做,这个取决于跑起来的难易程度.我是很懒的,有XML配置或其他稍微不直观的设置的,我总是懒得看.每当笔者谈论自己的ORM的时候,总会拿EF和Dapper说事儿,EF算官方的吧,Dapper则以效率著称.但是我很奇怪为什么ServiceStack.OrmLite这么NB的一个ORM却鲜为人提.我真想为它说一句话:.net的ORM框架中有一个非常优秀的成员叫Serv

实体框架6.0(Recipes)翻译系列 1 -----第一章 开始使用实体框架1

微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行.虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF版本更新太快,没人愿意去花时间翻译国外关于EF的书籍.使用Entity Framework开发已经有3年多了,但用得很肤浅,最近想深入学习,只好找来英文书<Entity Framework 6 Recipes>慢慢啃.首先需要说明的是,我英文不好,只是为了学习EF.把学习的过程写成博客,一是督促自

自定义实体类在三层架构之间传递数据

自定义实体类是专门承载业务实体数据的类,一般将方法分离出来,只包含属性和字段的定义.每个实体类对应数据库中的一个表,每个属性对应表中的一个相应的字段.使用实体类属于面向对象编程的思想,将每个表封装成对应的类. 1. 为什么使用自定义实体类 (1)使程序更加灵活.如果数据库发生了更改,只需要修改数据实体类的代码,其他层的代码修改量很小. (2)使用面向对象思想将数据库中的表抽象为类,消除了关系数据与类的差别,使程序维护和扩展更方便. (3)更有利于分层架构设计. 2. 使用自定义实体类作为三层架构

MyBatis学习总结_04_解决字段名与实体类属性名不相同的冲突

一.准备演示需要使用的表和数据 CREATE TABLE orders( order_id INT PRIMARY KEY AUTO_INCREMENT, order_no VARCHAR(20), order_price FLOAT ); INSERT INTO orders(order_no, order_price) VALUES('aaaa', 23); INSERT INTO orders(order_no, order_price) VALUES('bbbb', 33); INSER

《Entity Framework 6 Recipes》翻译系列 (1) -----第一章 开始使用实体框架之历史和框架简述 (转)

微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行.虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF版本更新太快,没人愿意去花时间翻译国外关于EF的书籍.使用Entity Framework开发已经有3年多了,但用得很肤浅,最近想深入学习,只好找来英文书<Entity Framework 6 Recipes>第二版,慢慢啃.首先需要说明的是,我英文不好,只是为了学习EF.把学习的过程写成博客,一