• kbengine在线调试


    使用可视化工具GUIConsole:

    使用脚本命令工具Cluster Controller:

    • 你可以使用这个工具查看服务端运行的一些状态信息 (参看: Information query servers)

    • 你可以使用这个工具进入Python命令行调试 (参看: Console)

    使用telnet服务kbengine_defs.xml->telnet_service:

    cellapp	: telnet localhost 50000
    baseapp	: telnet localhost 40000
    client	: telnet localhost 51000
    

    调试技巧:

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

    在~/.bashrc中添加如下命令:
    	ulimit -c unlimited
    
    需要root权限执行:
    	[root@gameserver ~]# echo '%e.core.%p' > /proc/sys/kernel/core_pattern
    

    断点调试:

    仅引擎层c++代码可以使用断点调试,断点调试请先关闭服务端心跳机制kbengine_defs.xml->channelCommon->timeout.

    脚本层只能查看输出日志,或者使用Python命令行来调试,由于是分布式服务程序没有增加断点的功能。


    Python命令行调试游戏逻辑例子(在Python命令行输入):

    查看当前进程上的所有Entity:

    >>> KBEngine.entities.items()
    [1: Space at 0x4D3040, 2: Monster at 0x4D3038]
    
    >>> for entityID, entity in KBEngine.entities.items(): print("entityID:%i, entity=%s")
    1, Space at 0x4D3040
    2, Monster at 0x4D3038
    

    查看Entity当前的坐标:

    >>> KBEngine.entities[entityID].position
    (10.0, 0, 10.0)
    

    改变Entity的朝向:

    >>> KBEngine.entities[entityID].direction.z = math.pi
    

    调用Entity的接口:

    >>> KBEngine.entities[entityID].funcXXX()
    

    手动创建一个Entity(cellapp):

    >>> e = KBEngine.createEntity("Monster", spaceID, (10.0, 0, 10.0), (0.0, 0, 0.0), {})
    

    调用一个Entity的远程方法(cellapp):

    >>> KBEngine.entities[entityID].base.func()
    >>> KBEngine.entities[entityID].client.func()
    

    你可以在Python命令行输入任意的Python语句并执行。


    性能分析:

    引擎性能分析

    脚本性能分析

    网络状态分析

    事件处理分析


    监视变量:

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

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

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

    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)
    
    	...
    	...
    

  • 相关阅读:
    VMware Tools的安装
    XmlSerializer
    string[][]和string[,] 以及 int[][]和int[,]
    Get Length 使用dynamic关键字
    Cocos2d-x 3.0final 终结者系列教程01-无论是从cocos2d-x2.x升级到版本cocos2d-x3.x
    Hosting WCF Service
    A*算法进入
    OpenCV面、人眼检测
    JAVA学习篇--JAVA两种编程模式控制
    采用Java语言如何实现高速文件复制?
  • 原文地址:https://www.cnblogs.com/txbabys/p/4137054.html
Copyright © 2020-2023  润新知