IO游戏设计思路

1、TCP ,UDP ,KCP ,QUIC

TCP 协议最常用的协议

UDP协议非常规的协议,因为需要在线广播,貌似运营商会有一些影响

KCP 基于UDP的协议,GitHub - l42111996/java-Kcp: 基于java的netty实现的可靠udp网络库(kcp算法),包含fec实现,可用于游戏,视频,加速等业务,暂时看中了这个,后面研究下。

QUIC 谷歌基于UDP的协议,实现过于厚重,放弃

基于UDP被运营商管制的原因,暂时先用选择TCP

2、架构设计

架构设计基本上还是常规的房间服 做所有的战斗逻辑

game服,承载常规的业务逻辑

为了能多承载一些用户,可以增加一个gate服,承载连接

中规中矩,没什么亮点

3、设计细节

3.1 游戏架构大纲

服务端技术底层:Springboot + Netty + Disruptors + Akka + protobuf 

移动逻辑使用帧同步,同步频率 60/s ,可适当降低频率

客户端可以做一些预测移动

房间内移动的对象有,玩家,敌人,子弹等,可以抽象出一类移动的物品

其他的战斗逻辑可以使用状态同步

3.2 游戏通信流程

登录流程:

客户端连接gate服务器之后,远程调用Game服登录,加载玩家数据到内存

通信流程:

客户端发送消息到gate服之后,Gate根据消息类型转发到对应的服务器,如果是Game服的消息转发到Game,否则转发到Room服

战斗流程

线上匹配进入向Room服发送创建请求,创建完成之后同步玩家数据到room服,并设置room为ready状态,发送个客户端,接着进入战斗状态

猜你喜欢

转载自blog.csdn.net/perfect2011/article/details/139173423
今日推荐