关于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人左右的时候开第二台服务器。