多人在线游戏服务器Kbengine在线调试-类《双人成形》游戏

多人在线游戏服务器Kbengine在线调试-类《双人成形》游戏

我们在上一篇文章中《3-Kbengine+Unity3D多人在线游戏之guiconsole调试你的游戏服务器》中介绍了调试工具guiconsole,这章我们游戏项目中进行实际操作。

下面是我的游戏教程的截图

资源地址

https://learn.u3d.cn/tutorial/3d-adventure-william-anna

https://www.bilibili.com/cheese/play/ss221275286

https://www.sikiedu.com/my/course/1999

一、调试技巧方法

1:允许系统产生core文件(仅Linux)

2:断点调试

仅引擎层c++代码可以使用断点调试,我们这章不介绍,感兴趣的朋友查看网上资源

https://kbengine.github.io//cn/docs/documentations/onlinedebugging.html

3:log脚本调试

这是开发中随时都能使用到的代码监测方法

打log的原代码在KBEDebug.py中,如下有5种,我们可以在项目中的任意脚本处写入这5个方法,如下图

代码示例如下

DEBUG_MSG("xbPreRemoveRoom"),当删除我们的房间时打一个log

def xbPreRemoveRoom(self, roomKey):
    if not self.tempRoomKeyList.get(roomKey):
       return

    DEBUG_MSG("xbPreRemoveRoom")
    
    self.tempRoomKeyList[roomKey]["Creator"][0].client.onxbPreRemoveRoom()

    if "JoinPlayer" in self.tempRoomKeyList[roomKey]:

Avatar.py中当角色被删除时调用“WARNING_MSG("Avatar::onDestro

def onDestroy(self):
    """
    KBEngine method.
    entity销毁
    """
    DEBUG_MSG("Avatar::onDestroy: %i." % self.id)
    room = self.getCurrRoom()

    WARNING_MSG("Avatar::onDestroy: %i." % self.id)

打开guiconsole调试窗口,如下黑体字是DEBUG_MSG信息, WARNING_MSG是黄色的信息

4:监视变量

这是我们最常用的一种方法,引擎允许使用工具监视当前进程上默认提供的变量(例如:总发包数,当前在线的玩家数),同时用户也可以在脚本中添加需要监视的变量。

查看方式: GUIConsole->watcher选项卡。

下面直接上代码示例

1)添加脚本监视变量的例子(监视在线玩家数和房间数):

baseapp->watcher.py:

...

def countPlayers():

i = 0

for e in KBEngine.entities.values():

if e.__class__.__name__ == "Avatar":

i += 1

return i

...

KBEngine.addWatcher("scripts/countPlayers", "UINT32", countPlayers)

...

def countRooms():

i = 0
for s in KBEngine.globalData.keys():
     if "Room" in s:
        i += 1

return i

...

KBEngine.addWatcher("scripts/countPlayers", "UINT32", countPlayers)
         KBEngine.addWatcher("rooms", "UINT32", countRooms)

2)安装watcher.py监视器

Baseapp->kbemain.py:

...

def onBaseAppReady(isBootstrap):

Watcher.setup()

3)下面我们开始实际操作

第一步,打开“类《双人成形》”的游戏服务器

首先保证下面的9个窗口没有问题(没有红色的错误行),如下

第二步,再打开服务器调试工具guiconsole

打开调试器

左边树形窗口勾选baseapp(因为监视变量是在baseapp上的),,然后右边窗口我们切换标签页到Watcher并点选scripts行,在最右边的窗口栏我们可以看到刚才我们建立的两个变量“rooms”,“players”,因为我的们的客户端还没有建立“房间”和“玩家”,所以数值都是0,如下图

第三步,打开两个《类双人成行》客户端,并预备进入房间

我简略下两个玩家的登陆操作,然后两个玩家同时进入“房间10001”,如下图

然后再看我们的服务器端的调试器,如下图

如上图,最左边树形窗口选中baseapp条目(因为监视变量是在baseapp上的),中间部分Watcher标签页中选中scripts,然后最右边就会显示我们刚才建立的两个监视变量“rooms”和“players”,“rooms”为0 是因为房间是预建立还没有进入房间所以是0,“players”为2,因为只进入了两个玩家所以是2。

第四步,两个玩家进入“房间10001”,如下图

如上图是建立房间的玩家(只能建立房间的玩家才能点击“开始游戏”)点击“开始游戏”后两个玩家进入房间的效果

再看guiconsole调试窗口,如下图

“rooms”房间号为1,因为我们两个玩家进入了一个房间内。

以上我们就把kbengine和unity网络交互时的详细调试方法介绍完了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

折纸星空Unity课堂

谢谢您对我的作品的肯定

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值