KBEngine官方论坛

 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 配置 开服
查看: 7356|回复: 128

对warring示例中 U3d技术探讨汇总

[复制链接]

16

主题

133

帖子

491

积分

中级会员

Rank: 3Rank: 3

积分
491
发表于 2015-2-28 11:25:09 | 显示全部楼层 |阅读模式
本帖最后由 FirstOne 于 2015-2-28 11:32 编辑

warring示例 是一个比较全的示例, 大家有什么疑问 或建议 可以提出 一起探讨, 一起学习。
回复

使用道具 举报

16

主题

133

帖子

491

积分

中级会员

Rank: 3Rank: 3

积分
491
 楼主| 发表于 2015-3-23 20:44:54 | 显示全部楼层
本帖最后由 FirstOne 于 2015-3-23 20:47 编辑

关于实体生命周期内各回调函数的执行次序问题:
  当用户选择英雄进入游戏时,account实体会调用base端的selectAvatarGame,而这个函数会执行KBEngine.createBaseFromDBID从数据库创建一个avator的base实体,那么此时avator会执行哪些函数呢?
account然后又会调用giveClientTo(avatar)将控制权交给avator, 那么此时avator又会执行哪些函数呢, 或者说avator接管后从哪个函数开始执行呢.


当用户点击进入游戏按钮时,调用的是base端的selectAvatarGame,而服务端返回的是addSpaceGeometryMapping(string respath)  在这个过程中服务端经过了哪些处理呢.
回复

使用道具 举报

16

主题

133

帖子

491

积分

中级会员

Rank: 3Rank: 3

积分
491
 楼主| 发表于 2015-2-28 17:14:14 | 显示全部楼层
对于 将场景资源打包的 这个插件, 有没有教材讲解怎么使用呢?
回复

使用道具 举报

16

主题

133

帖子

491

积分

中级会员

Rank: 3Rank: 3

积分
491
 楼主| 发表于 2015-2-28 17:23:02 | 显示全部楼层
warring中为什么将场景中的地形等数据都保存为xml文件, 而不直接将场景打包为assetBundle。
回复

使用道具 举报

30

主题

7138

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
16457
QQ
发表于 2015-2-28 17:43:12 | 显示全部楼层
资源打包就是利用unity3d的API接口将一个Prefab打包成assetBundle, 去u3d官网参考资料

场景资源清单使用xml文件,用程序自己控制加载 理论上更自由,使用合适的策略能带来比较好的动态加载体验。
直接将场景打包为一个assetBundle, 那么你在游戏时只能等所有东西全部下载完成才能进入游戏, 如果一个场景无限大那是一场悲剧。
热爱游戏、热爱开源!
柯标
3603661@qq.com

柯标
3603661@qq.com
回复

使用道具 举报

16

主题

133

帖子

491

积分

中级会员

Rank: 3Rank: 3

积分
491
 楼主| 发表于 2015-2-28 19:24:37 | 显示全部楼层
怪物出生坐标 不是应该是由服务端那边发送过来的吗, 怎么打包资源的时候就将出生点保存了
回复

使用道具 举报

16

主题

133

帖子

491

积分

中级会员

Rank: 3Rank: 3

积分
491
 楼主| 发表于 2015-2-28 22:49:00 | 显示全部楼层
warring中没有unity 的LoadLevel来转换场景, 而是统一用 scene.loadScene吧,  其实至始至终 只有一个场景, 只是不停的动态的删除老的object 添加新的object。 通过读取场景.xml文件, 读取里面的GameObject 然后实例化出来。
回复

使用道具 举报

30

主题

7138

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
16457
QQ
发表于 2015-3-2 09:12:26 | 显示全部楼层
怪物出生点坐标导出来是需要丢到服务端去的
kbengine\kbengine_demos_assets\scripts\data\spawnpoints

服务端通过这个配置在初始化时创建实体
热爱游戏、热爱开源!
柯标
3603661@qq.com

柯标
3603661@qq.com
回复

使用道具 举报

30

主题

7138

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
16457
QQ
发表于 2015-3-2 09:12:48 | 显示全部楼层
FirstOne 发表于 2015-2-28 22:49
warring中没有unity 的LoadLevel来转换场景, 而是统一用 scene.loadScene吧,  其实至始至终 只有一个场景 ...

热爱游戏、热爱开源!
柯标
3603661@qq.com

柯标
3603661@qq.com
回复

使用道具 举报

16

主题

133

帖子

491

积分

中级会员

Rank: 3Rank: 3

积分
491
 楼主| 发表于 2015-3-15 23:20:57 | 显示全部楼层
Cell 中的Avatar.py 实现的一些疑问。
                 class Avatar(KBEngine.Entity, //引擎实体
                        GameObject,  //物体基类
                        Flags,             //标志
                        State,            //状态类
                        Motion,           //动作类
                        SkillBox,          //技能类
                        Combat,          //属性类
                        Spell,              //?
                        Teleport,         //传送类
                        Dialog):           //对话框类

服务端实体需要什么功能就继承该功能的类   ---是这样的设计思路吗, 一个功能就继承一个类,是不是显得有点过于庞大, 还是Python语言特性是这样的。
回复

使用道具 举报

30

主题

7138

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
16457
QQ
发表于 2015-3-16 09:01:21 | 显示全部楼层
你可以做成组件形式,这里直接继承主要是def方法不想做中转
spell是释放技能。
热爱游戏、热爱开源!
柯标
3603661@qq.com

柯标
3603661@qq.com
回复

使用道具 举报

16

主题

133

帖子

491

积分

中级会员

Rank: 3Rank: 3

积分
491
 楼主| 发表于 2015-3-16 23:59:50 | 显示全部楼层
最近在做背包系统,物品系统在服务端一般是怎么设计的呢, 不同的物品有不同的额外属性, 例如武器可能是有攻击力和准确率额外加成,  防具也是, 而补给品则没有额外加成, 这些信息是怎么合理存储在数据库呢,
在例子中的items目录里 的__init__.py里 好像有三类物品:
from Item import Item
from Equip import Equip
from Weapon import Weapon
from d_items import datas as d_items

但是代码好像不全。 请kbe指点一二。:D
回复

使用道具 举报

30

主题

7138

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
16457
QQ
发表于 2015-3-17 09:07:04 | 显示全部楼层
群里有篇文章, howto items.pdf可以看看
还可以参考例子中的角色列表,与背包物品关系相似。
热爱游戏、热爱开源!
柯标
3603661@qq.com

柯标
3603661@qq.com
回复

使用道具 举报

16

主题

133

帖子

491

积分

中级会员

Rank: 3Rank: 3

积分
491
 楼主| 发表于 2015-3-17 15:51:57 | 显示全部楼层
比较大的结构array 建议在base端定义吗, 在cell端会给cellapp带来数据拷贝负担, 在base端存取数据库也更方面,是这样的吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

30

主题

7138

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
16457
QQ
发表于 2015-3-17 17:17:27 | 显示全部楼层
如果一个array元素过多, 自动存档功能会导致效率降低。
大容器建议手动管理, 使用API手动建表存储与加载。

cellapp不建议大容器属性, 迁移会导致效率降低。
热爱游戏、热爱开源!
柯标
3603661@qq.com

柯标
3603661@qq.com
回复

使用道具 举报

16

主题

133

帖子

491

积分

中级会员

Rank: 3Rank: 3

积分
491
 楼主| 发表于 2015-3-17 18:27:43 | 显示全部楼层
使用API手动建表存储与加载 是指的用api来直接操作数据库吗,  bigworld的文档上是在base上定义的,这种方式好吗?
回复

使用道具 举报

30

主题

7138

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
16457
QQ
发表于 2015-3-17 19:12:26 | 显示全部楼层
def executeRawDatabaseCommand( command, callback, threadID ):
功能说明:

这个脚本函数在数据库上执行原始数据库命令,该命令将直接由相关数据库进行解析。

请注意使用该函数修改实体数据可能不生效,因为如果实体已经检出,被修改过的实体数据将仍会被实体存档而导致覆盖。
强烈不推荐这个函数用于读取或修改实体数据。
参数: command 这个数据库命令将会因为不同数据库配置方案而不同。对于方案为MySQL数据库它是一个SQL查询语句。  
callback 可选参数,带有命令执行结果的回调对象(比如说是一个函数)。这个回调带有3个参数:结果集合,影响的行数与错误信息。

这个结果集合参数是一个行列表。每一行是一个包含字段值的字符串列表。命令执行没有返回结果集合(比如说是DELETE命令),或者
命令执行有错误时这个结果集合为None。

这个数字是命令执行受影响的行数。这个参数只和不返回结果结合的命令(如DELETE)相关。
如果有结果集合返回或者命令执行有错误时这个参数为None。

命令执行有错误时这个错误信息参数是一个描述错误的字符串。命令执行没有发生错误时这个参数为None。  
threadID int32,可选参数,指定一个线程来处理本条命令。用户可以通过这个参数控制某一类命令的执行先后顺序(dbmgr是多线程处理的),默认是不指定,如果threadID是实体的ID,
那么将加入到该实体的存档队列中由线程逐条写入。  


热爱游戏、热爱开源!
柯标
3603661@qq.com

柯标
3603661@qq.com
回复

使用道具 举报

30

主题

7138

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
16457
QQ
发表于 2015-3-17 19:14:30 | 显示全部楼层
定义的属性会自动存储, 如果一个容器有1000个元素, 服务器上有1万人, 以目前的设计不管是否对容器做修改都会自动存一遍。

具体合不合适需要根据你的数据量来分析的, 如果一个容器就十来个元素且结构不非常复杂也就无所谓了。
热爱游戏、热爱开源!
柯标
3603661@qq.com

柯标
3603661@qq.com
回复

使用道具 举报

30

主题

7138

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
16457
QQ
发表于 2015-3-17 19:15:36 | 显示全部楼层
在上线时还会自动同步到客户端, 以及从数据库load, 默认的机制会等所有都完成实体才可以操作。
实际上大容器你可以慢慢自己分批加载。
热爱游戏、热爱开源!
柯标
3603661@qq.com

柯标
3603661@qq.com
回复

使用道具 举报

16

主题

133

帖子

491

积分

中级会员

Rank: 3Rank: 3

积分
491
 楼主| 发表于 2015-3-17 23:32:41 | 显示全部楼层
恩 , 先在base里用属性表示吧,初步设计有60个物品格子。 后面再优化了。
回复

使用道具 举报

16

主题

133

帖子

491

积分

中级会员

Rank: 3Rank: 3

积分
491
 楼主| 发表于 2015-3-19 23:07:15 | 显示全部楼层
BLOB类型 是怎么使用的呢, 可以定义一个2进制块吗, 还是可以将任意类型数据转为BLOB类型, demo中avatorinfo中定义了这个类型的字段,但好像没用到啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|KBEngine Forum

GMT+8, 2018-12-10 18:23 , Processed in 0.070812 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表