KBE实践——登录案例
目录
服务器
```
void maini(){
printf("hello world");
}
```
最小资产库创建
entity配置
实体的Python实现
创建第一个空间Space
让entity进入空间Space
客户端(unity)
生成客户端SDK
实现Client部分验证
验证测试
====================================正文=====================================
服务器
最小资产库创建
- 运行文件“new_assets.bat”,生成最小资产库“server_assets”,更名为“first_assets"
entity配置
- entity声明
```
void main(){
printf("shit");
}
```hasClient 表示这个实体有客户端
- entity配置
- 新建def配置文件,配置文件名称规定为(实体名称.def)
- 添加方法声明
<root>
<!-- Cell上的方法 -->
<CellMethods>
<Broadcast>
<!--Exposed 表示此方法暴漏给客户端调用-->
<Exposed/>
<Arg> UNICODE </Arg>
</Broadcast>
</CellMethods> <!-- 客户端上的方法 -->
<ClientrMethods>
<onEnter>
</onEnter> <SendMsgToServer>
<Arg> UNICODE </Arg>
</SendMsgToServer>
</ClientrMethods>
</root>{项目资产库}\scripts\entity_defs\PlayerEntity.def
- entity声明
entity的 Python实现
- 名称规则(实体名.py)
- base文件夹下的部分
# -*- coding utf-8 -*-
import KBEngine
from KBEDebug import * class FirstPlayer(KBEngine.Proxy):
#base部分的实现
def __init__(self):
KBEngine.Entity.__init__(self){资产库}\base\FirstPlayer.py
- cell文件夹下的部分
# -*- coding: utf-8 -*-
import KBEngine
from KBEDebug import * class FirstEntity(KBEngine.Entity):
def __init__(self):
KBEngine.Entity.__init__(self)
#这里是FirstEntity的cell,当其Cell创建完毕时,通知其自身的客户端的onEnter函数
self.client.onEnter() def SendMsgToServer(self, callerID, content):
INFO_MSG("FirstPlay-SendMsgToServer")
#广播给所有客户端
self.allClient.Broadcast(str(self.id) + ":" + content){资产库}\scripts\cell\FirstPlayer.py
- entity何时创建?
教程采用:使用账户入口对第一个enetity进行创建,只添加一句:<accountEntityScriptType> FirstEntity </accountEntityScriptType><dbmgr>
<account_system>
<accountEntityScriptType> PlayerEntity </accountEntityScriptType>{项目资产库}/res/server/kbengine.xml
Space配置
- entity声明和def文件配置
<root>
<PlayerEntity hasClient="true"></PlayerEntity>
<!-- 添加下面这行 -->
<WorldSpace></WorldSpace>
</root>{资产库}\scripts\entities.xml
<root>
<!-- BaseApp上的远程方法 -->
<BaseMethods>
</BaseMethods>
<!-- CellApp上的远程方法 -->
<CellMethods>
</CellMethods>
</root>{资产库}\scripts\entity_defs\WorldSpace.def
- entity声明和def文件配置
Space的 Python实现
- 名称规则(空间名.py)
- base部分
# -*- coding-utf8 -*-
import KBEngine
from KBEDebug import * class WorldSpace(KBEngine.Space):
# WorldSpace的base部分,这是一个实体,并不是Space本身,Space位于内存中,我们通过这个实体关联并控制Space
def __init__(self):
KBEngine.Space.__init__(self)
# 在全局变量globaldata字典中保存Space
KBEngine.globalData["WorldSpace"] = self{资产库}\scripts\base\WorldSpace.py
- cell部分
import KBEngine class WorldSpace(KBEngine.Space):
def __init__(self):
KBEngine.Space.__init__(self)
pass{资产库}\scripts\cell\WoldSpace.py
- space何时创建
教程采用:Baseapp就绪时创建Space空间,在baseapp就绪后加载空间spacedef onBaseAppReady(isBootstrap):
"""
KBEngine method.
baseapp已经准备好了
@param isBootstrap: 是否为第一个启动的baseapp
@type isBootstrap: BOOL
"""
INFO_MSG('onBaseAppReady: isBootstrap=%s, appID=%s, bootstrapGroupIndex=%s, bootstrapGlobalIndex=%s' % \
(isBootstrap, os.getenv("KBE_COMPONENTID"), os.getenv("KBE_BOOTIDX_GROUP"), os.getenv("KBE_BOOTIDX_GLOBAL")))
#添加此句以使得space在baseapp启动后就加载进来
KBEngine.createEntityLocally("WorldSpace", {}){资产库}\scripts\base\kbemain.py
验证空间Space是否加载成功
- 开始验证:打开guiconsole(......\kbengine-2.4.\kbe\tools\server\guiconsole)选择baseapp,然后选中debug便签,输入Python语句:KBEngine.entities.items(),Ctrl+Enter执行语句,输出结果如下:

- 错误警告
我们可能需要设置一下用户账户和密码,位置在{资产库}res\server\kbengine.xml: root -> dbmgr -> databaseInterfaces -> default -> auth

注意2(9个窗口一个都不能少)
折叠的代码中所有的实例名称(PlayerEntity 或者 FIrstPlayer 选一个统一)都需要统一,我上面没有再修改,吐槽博客园的编辑器 (¬︿¬☆)
- 开始验证:打开guiconsole(......\kbengine-2.4.\kbe\tools\server\guiconsole)选择baseapp,然后选中debug便签,输入Python语句:KBEngine.entities.items(),Ctrl+Enter执行语句,输出结果如下:
让entity进入空间Space
- 我们再次打开之前的文件({项目资产库}/scripts/base/PlayerEntity.py)
- 添加一个回调和函数,onClientEnabled ,因为我们的PlayerEntity继承了Proxy,所以当客户端可用时,这个函数会被执行,此时我们选择让entity进入空间
客户端(unity)
生成客户端SDK
- 配置SDK生成工具
实现Client部分验证
验证测试
KBE实践——登录案例的更多相关文章
- Quartz应用实践入门案例二(基于java工程)
在web应用程序中添加定时任务,Quartz的简单介绍可以参看博文<Quartz应用实践入门案例一(基于Web应用)> .其实一旦学会了如何应用开源框架就应该很容易将这中框架应用与自己的任 ...
- Quartz应用实践入门案例一(基于Web环境)
Quartz是一个完全由java编写的开源作业调度框架,正是因为这个框架整合了许多额外的功能,所以在使用上就显得相当容易.只是需要简单的配置一下就能轻松的使用任务调度了.在Quartz中,真正执行的j ...
- Android first---文件读取(登录案例编写为主)
以android登录案例来介绍文件的读取与androidAPI给予的方法 第一步:绘制界面 绘制方法:在线性布局下面设置相对布局 代码部分: <LinearLayout xmlns:androi ...
- ADO.NET学习系列(三)----做一个登录案例
总体思路.根据用户输入的用户名和密码,来判断,和数据库里面存的是不是一样,如果一样就表明登录成功,否则就登录失败. 方案一: 1.select* from 表名 where username=&quo ...
- 基于Struts2框架实现登录案例 之 使用Struts2标签库简化表单+继承ActionSupport完成输入交验
一,使用Struts2标签库简化表单 在文章[基于Struts2框架实现登录案例]的基础上,通过使用Struts标签库可以简化登录页面login2.jsp <%@ page language=& ...
- 简单登录案例(SharedPreferences存储账户信息)&联网请求图片并下载到SD卡(文件外部存储)
新人刚学习Android两周,写一个随笔算是对两周学习成果的巩固,不足之处欢迎各位建议和完善. 这次写的是一个简单登录案例,大概功能如下: 注册的账户信息用SharedPreferences存储: 登 ...
- Android(java)学习笔记213:开源框架post和get方式提交数据(qq登录案例)
1.前面提到Http的get/post方式 . HttpClient方式,实际工作的时候不常用到,因为这些方式编写代码是很麻烦的 2.Android应用会经常使用http协议进行传输,网上会有很完善 ...
- Android(java)学习笔记212:中文乱码的问题处理(qq登录案例)
1.我们在之前的笔记中LoginServlet.java中,我们Tomcat服务器回复给客户端的数据是英文的"Login Success","Login Failed&q ...
- [转载]DevOps在传统企业的落地实践及案例分享
内容来源:2017年6月10日,优维科技高级解决方案架构师黄星玲在“DevOps&SRE 超越传统运维之道”进行<DevOps在传统企业的落地实践及案例分享>演讲分享.IT 大咖说 ...
随机推荐
- [POI2007]石头花园SKA
Description Blue Mary是一个有名的石头收藏家.迄今为止,他把他的藏品全部放在他的宫殿的地窖中.现在,他想将他的藏品陈列在他的花园中.皇家花园是一个边长为1000000000单位的平 ...
- Hdu 3488 Tour (KM 有向环覆盖)
题目链接: Hdu 3488 Tour 题目描述: 有n个节点,m条有权单向路,要求用一个或者多个环覆盖所有的节点.每个节点只能出现在一个环中,每个环中至少有两个节点.问最小边权花费为多少? 解题思路 ...
- UVA 10462 Is There A Second Way Left? (次小生成树+kruskal)
题目大意: Nasa应邻居们的要求,决定用一个网络把大家链接在一起.给出v个点,e条可行路线,每条路线分别是x连接到y需要花费w. 1:如果不存在最小生成树,输出“No way”. 2:如果不存在次小 ...
- [转]如何在 TFS 中使用 Git
本文转自 http://www.cnblogs.com/stg609/p/3651688.html 对 Charley Blog 的代码进行版本控制的想法由来已久,在代码建立之初其实已经使用过 TFS ...
- webapp开发学习--Ionic+Cordova 环境搭建
我们看 Ionic 能给我们提供什么? 一个样式库,你可以使用它来装饰你的HTML网页 ,看起来 想 移动程序的界面,什么header .content.footer.grid.list.这貌似没什么 ...
- laravel5.5文件上传
/** * 上传文件 * @param Request $request * @return array */ public function upload(Re ...
- sql语句添加一列标示,然后进行分页。
,) , sum(Score) as Score ,Student_NO,Student_Name into #a2_tab from ksy_stu_ScoreInfo GROUP BY Stude ...
- SSM Note
1.获取项目的绝对路径:${pageContext.request.contextPath } 2.销毁session:session.invalidate(); 3.控制器接收前端参数时,参数名要与 ...
- Maximum Subsequence Sum 最大子序列和的进击之路
本文解决最大子序列和问题,有两个题目组成,第二个题目比第一个要求多一些(其实就是要求输出子序列首尾元素). 01-复杂度1 最大子列和问题 (20分) 给定KK个整数组成的序列{ N1, N2 ...
- ssm基础配置
1.导包 <dependencies> <dependency> <groupId>org.springframework</groupId> < ...