客户端设计
正式开始编写逻辑前先大致规划一下游戏模块和流程,项目中的核心模块和功能等等.当前项目我们要开发一款多人联机的战斗游戏,战斗发生的场所以开房间的形式创建,每局游戏结束后房间关闭玩家退出房间.玩家从登陆界面UI一步步进入战斗房间,战斗房间有当前场景玩家排行榜,倒计时...结束房间后有当前局战斗数据展示等等.
从逻辑上讲玩家需要加载数据,启动服务,准备ui,进入房间,处理战场数据,播放动画与特效,房间关闭清理资源等.
游戏大致规划如下:

初始化流程
客户端工程包含一个统一的入口函数,由此方法启动整个项目工程.首先启动的是日志服务器以此监控整个项目的输出日志.
然后开始整个工程的Tick管理,加载数据,启动服务,当这些所依赖的项目全部准备完成时,开始加载游戏登录UI来完成项目的初始化流程.
游戏初始化流程如下:

连接流程
当游戏初始化完成后,登陆面板弹出,此时UI会监听玩家输入来登陆游戏服务器,玩家首先会连接Http服务器获取登陆游戏服的凭证,然后开始Tcp连接登陆游戏服,登陆成功后便根据服务器消息进入房间开始处理房间内的战斗消息,战斗结束后房间关闭,断开连接. 游戏连接流程如图所示:

战斗场景
Tcp连接成功后便开始收发心跳包消息,然后开始处理服务器房间消息包含:战斗数据,排行榜,房间倒计时等.
战斗数据由两部分组成:本地配置数据和服务器数据.本地配置数据包含本地阻挡,战场大小等;服务器数据包含玩家球,食物球等.
除此之外还要处理战斗场景房间倒计时,玩家排行榜,虚拟摇杆逻辑,玩家的攻击按钮及技能按钮等.

房间关闭
如果房间倒计时正常结束,会给玩家展示当前战场排行榜数据,然后退出到进入房间界面.
如果玩家选择主动退出,会给玩家二次确认,无误后退出到房间登录界面.