跳转至

一 客户端与服务端框架

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检测当前匹配队列人数,人数满足后则开始匹配。

三 处理对战