yang131

导航

关于Unlua的使用三种语言写的框架以及中间的易错点

服务器是java, 主要处理各种业务数据比如背包,登录,以及DS服务器管理。

java端启动web服务器以及web socket server。

客户端:

UE5  配合UnLua插件 引用websockets模块。

lua处理通信模块,lua的简介与编写,websocket使用c++,这里需要注意的一点:

腾讯的Unlua和UE5自带的python不一样,我对其实现框架的可能性都对其进行了探索,python属于中间层,无法访问继承蓝图的类,所以这次python无法实现(官方自带的),而unlua变得非常可行。

unlua虽然可以实现不过也缺少一个http库,所以底层还要完善。

对于如何使用unlua搭起来这次的框架,首先 c++实现websocket的启动,以及保留几个蓝图和lua可以访问的接口,为什么要保留接口呢,因为lua可以访问蓝图,而不用c++直接导出到lua。

蓝图只需要调用websocket的启动而且 进程的初始化和退出,而中间的心跳数据则有lua来实现。

中间因为lua extension模块有json,而且是rapidjson,所以怎么使用得需要找lua-rapidjson。这次lua的使用中,问题也严重很多,lua代码如果有语法错误,那么会导致ue5的崩溃。

 关于BlueprintImplementableEvent,需要另外假如BlurprintCallable的使用,还有delegate要用BlueprintAssignable的标记,如果替换为blueprintreadwrite等标签会报奇怪错误,无法找到delegate类。

websocket用作DS和Java服务器的进程间通信,中间使用Json来作为参数交换,而客户端DS和Client直接用自带的,而和Java服务器则用http服务器,从而实现一次多人在线的框架,不同于传统意义的KBEngine,这次的Java服务器可以计算每一个服务器的负载,

而动态启动进程和销毁进程。由于数量有限,如果人数非常多的话,那么ds只用在目标服务器进程,他们主动找到Java服务器,对其做数据处理。当然目前网游多人这一块偏复杂,后续带讨论。目前根据计算1000人作为单台电脑的服务器上线的话,

那么10个进程,也就是说600人左右的时候开第二台服务器。

posted on 2024-08-15 22:43  NoNight  阅读(47)  评论(0编辑  收藏  举报