技术调研
关卡制作
使用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、服务器上寻路停止后,把状态信息也同步给客户端。注意:服务器可以每一帧都把状态同步给客户端,但不必要。