一 客户端与服务端框架
1.1 客户端框架
- GameRoot
- 服务Service:网络、资源、音频
- 系统System:战斗、大厅、登录
二 基础服务器和客户端连接、主要界面制作
- 采用KCP进行通讯,构建单独的KCP网络库
- 嵌套通信协议:Serializeble,重复利用,实现一个类存储所有消息,利用枚举作区分。
- 错误码:用于服务端错误检验。
- 具体的协议内容定义在构造时赋值。
- 服务端处理登录请求:消息分发,根据消息CMD类型选择不同系统的相关函数。
- 登录功能:CacheSvc缓冲user信息并提供相关方法,LoginSys判断
- 客户端处理登录请求:依然是通过消息分发HandoutMsg。
- 处理登录消息:GameRoot提供用户数据缓存,拿到userdata存到客户端去。
- LoginSys,通过系统类来处理不同的UI:
- 登录成功后,切换到开始游戏界面UI。
- 开始游戏后,进入到游戏大厅界面UI。
UI管理策略:各个系统单独分成单例。UI界面之间最好不应该有相互的引用,跳转逻辑最好交由系统单例类负责。每个UI只管理自己的数据和交互。
同理:跨系统的UI界面就更不能互相引用了,应该通过系统进行相关的逻辑转换。
当然,所有系统都应该继承自一个基类,其中设置了根节点,并提供了各种Svc。
- 匹配系统MatchSys:点击匹配按键时,发送对应的匹配类型请求,收到后,顺带发送预估时间信息,客户端收到后开始匹配。
- PVPRoom对战房间:只记录roomID,房间对战类型和Session连接的数组
- RoomSys提供房间管理,全局房间ID分配,
- 匹配系统UPdate检测当前匹配队列人数,人数满足后则开始匹配。
三 处理对战