技术调研

关卡制作

使用blender制作风格化场景,树、草、地形。

【中字】虚幻引擎UE4创建风格化场景全流程教学

https://www.bilibili.com/video/BV1fj41127M7/

解决砖块地形贴图重复的问题

通过noise贴图混合两个通道。

https://www.bilibili.com/video/BV1fj41127M7/

网络服务器

kcp 协议

  • kcp-netty https://github.com/szhnet/kcp-netty
  • protobuf
  • AOI
  • 服务端寻路:recast生成导航网格,detour 负责寻路
  • ECS 服务端使用ECS框架运行,采用20 fps 或者 16fps运行。

服务端导航

客户端,服务器。https://www.bilibili.com/video/BV1MG4y127B9/

1、客户端点击地图,产生NavToPoint事件。

2、客户端执行寻路,并且把该事件发送给服务器。【等待服务器响应】

3、服务器Controller将请求丢入队列。

4、服务端GameLoop 遍历 eventQueue,处理队列中的事件。

5、对应的服务端的System采用与客户端System相同的逻辑。

6、服务端处理NavToPoint事件时,从请求参数中获取数据,初始化AStarComponent给PlayerEntity。

7、AStarSystem执行寻路。(1)没找到路径,结束。(2)找到路径,广播给AOI。把玩家实体服务器上的 position、rotation、state、nav信息都发送给客户端。

8、服务器播动画,客户端也自己播动画。(1)服务器 GameLoop 以16 FPS 执行system。(2)客户端 GameLoop 以 60 FPS 执行system。走到目标点后就改变行走状态。

9、服务器上寻路停止后,把状态信息也同步给客户端。注意:服务器可以每一帧都把状态同步给客户端,但不必要。