五子棋游戏属于开房间类休闲游戏。可以非常方便实现分布式战斗服横向拓展,只要感觉服务器有压力,可以通过动态加战斗服服务器来实现。本文介绍一个基于jforgame组件开发的五子棋网络小游戏,支持分布式部署战斗服。
1.通信组件
浏览器:客户端通过浏览器,建立与中心服的通信链接。浏览器通过websocket的方式与中心服建立连接。消息编解码使用json格式。
中心服:中心服用于匹配战场,转发客户端的请求。当中心服收到客户端创建战场的请求后,就利用负载均衡选择战斗服,绑定客户端请求与战斗服的关系。中心服转发客户端请求对于客户端来说是透明的,客户端无需关系战斗服集群里有多少台战斗服。客户端至始至终都只与中心服链接。
战斗服:战斗服启动之后,根据中心服的地址,自动向中心服进行节点注册。接受中心服的消息转发后,进行开房间,以及战斗消息的处理,并将战斗结果转发给中心服,由中心服转发给客户端。
2.通信时序图
如图所示:
1.客户端与中心服建立websocket链接,向中心服发送json格式的消息
2.中心服接受消息之后,判断是否为开房间的消息,如果是则动态分配一个战斗服;对于其他战斗协议,则转发到对应的战斗服进行处理。
3.战斗服接受到战斗消息之后,进行业务处理,并将消息转发给中心服。
4.中心服接受到战斗服的消息,判断是否为转发的场景消息,如果是,则直接转发给客户端;否则,进行业务处理。(例如对玩家进行发奖等)
5.中心服向客户端转发战斗相关消息
3.效果实现
使用jforgame的网络组件进行二次开发,可以极大缩短开发时间。
实现效果图(目前只能与AI对战,后续拓展为人人对战)
功能仍在完善。源代码私聊(有偿提供)。