最近打算学习creator,跟着官方教程做了遍发现和u3d有些相似,用着还算顺手,就是实在无法习惯js,后来改成ts终于有些感觉,所以决定继续优化这个ts版的官方教程。
前段时间学习go的时候写了个服务端框架(DrillServer:https://github.com/BAN1993/DrillServerGo.git),正好拿来和这个项目结合,做个联网对战的游戏。
先上源码:https://github.com/BAN1993/CatchStar.git
Client
对玩法和动画上有所改进,人物更加Q弹,改动较小就不做阐述了。
- 网络模块
添加了网络模块(NetWork)。业务模块通过regist注册监听,网络模块收到协议后依次回调。
客户端本地也有一个数据回调机制(DataPoster),与网络模块类似,业务模块通过regist注册,数据发生改变时(如收到协议或本地角色更改方向)调用update则会通知到每个注册过的模块上。
- 同步机制
游戏主要采用帧同步,每N帧同步一次位置和方向。为了减少瞬移和延迟的情况,做了预测和修复位置的逻辑:根据当前方向实时绘制预测的位置,当收到同步协议后,如果距离偏差较大则使用动画将角色拖拽到准确位置。
Server
服务端使用最典型的框架
Gateway:负责转发协议
DataBaseServer:负责处理大厅协议(登录、注册等)
GameServer:处理游戏区协议