关于Task#
Task允许在不启动新Room的前提下在服务端执行一些Lua函数,这样Lua的拓展能力进一步增强。
一些使用场景:
制作自定义签到页面时,在服务端提供后端支持,玩家在大厅中可以完成签到
在某些触发事件中,允许执行一些Lua(例如玩家登录成功时,额外发送一个包之类的)
以及更多……
本文档主要从Task的底层实现角度分析。用户文档应该在隔壁未分类文档中躺着
与完整的游戏房间相比,task更轻量、执行周期更短,并且存储在C++后端中的内容更少。
C++层的任务#
C++需要做的事情:触发能启动某task的事件,新增task、启动task、恢复task、结束task、删除task。 因此在Server下新增TaskManager类处理所有task事务。 Lua虚拟机上,和Room们共用RoomThread。
能启动task的事件暂定为:
玩家身处大厅时发送LobbyTask包,触发指定task
在C++代码中,通过手动触发相关事件,进而触发相关task(类似触发技):
L->call("InitScheduler")后,触发Lua环境初始化事件待补充……
C++还需要向Lua开放一批新的接口,来完成相关任务才行。