Skip to content

ue4做客户端的程序结构流程

ilvxna edited this page Aug 3, 2018 · 10 revisions

请问高手们,ue4做客户端和kbengine服务器通信时,整个客户端的架构我看了代码,包括了kbengine插件层、kbe_scripts层和ue_scrpits代码,不太明白他们是如何调用的,像玩家动作和玩家攻击如何发送到服务器并同步到其它客户端,我想在demo中增加开枪射击功能应该怎么做?

你看看死亡后是怎么复活的。 通过UI触发事件, 最终调用客户端avatar的本地方法,通过cellCall调用服务器def中的cell方法。

void Avatar::__init__()
{
        // 注册事件
        if (isPlayer())
        {
                KBENGINE_REGISTER_EVENT_OVERRIDE_FUNC("relive", "relive", [this](const UKBEventData* pEventData)
                {
                        const UKBEventData_reqRelive& data = static_cast<const UKBEventData_reqRelive&>(*pEventData);
                        reqRelive(data.reliveType);
                });
        }
}


void Avatar::reqRelive(uint8 reliveType)
{
        DEBUG_MSG("Avatar::reqRelive(): reqRelive");
        cellCall("relive", reliveType);
}

:这个明白了,但是还有个问题不太明白,就是玩家在移动和跳跃时,是如何通知服务器并同步到其它客户端的?

:那是引擎默认功能,不需要太关心,总之帮你完成了。玩家的位置由kbmian设置到插件自动上报了。 :刚刚试了一下,确实要手动同步给服务器,不然只会在本地客户端才有 :只有服务器上继承proxy的实体, 在客户端为player时才可以提交信息到服务器上对应的实体。 demo的avatar就是继承proxy的, 在选择角色时Account实体就是当前player, 进入游戏后avatar实体就是当前player, 把demo好好研究一遍。

Clone this wiki locally