需求背景:在联网环境下,实现地图资源随机生成并且同步。
思路是:将随机数据和地图生成资源逻辑分开编写。
逻辑流程这样:由GameMode生成一次需要用到的随机数据,然后每个客户端链接时都传入这个随机值,接着执行生成逻辑。
效果如下,
可以看到两个窗口中的资源都是同一个随机的效果。
具体逻辑:
GameMode~PlayerController逻辑,GM第一次更新数据(不写在BeginPlay是因为调试模式GM开始函数在第一个玩家Login之后调用,导致作为服务器的窗口没有获取到数据),接下来每次玩家登录都会把随机的数据传给玩家控制器。右边是玩家控制器的逻辑,生成了一个地图管理类专门负责生成地图资源。这个类和玩家类分开是为了方便修改生成的内容。其中RPC事件是RunOnOwningClient,仅在客户端调用.
函数细节:
1.GameMode中处理随机数据的生成。
GM中的生成函数:通过预设的长宽相乘获得需要保存的对象数量。然后循环给成员赋值随机值,需要其他随机信息的可以添加。