-
Notifications
You must be signed in to change notification settings - Fork 4
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好好研究一遍。