UGK-Server

  快节奏多人联网游戏Demo,UGK-Server:unity、go、kcp server 。 服务器使用微服务架构,服务器游戏逻辑需要物理碰撞、寻路的使用Unity、C#开发,其他使用Go开发。 对应客户端ugk-client。 开发中...... ugk-architecture

服务

通用

服务描述
ugk-agent执行unity服务器docker进程的创建销毁
ugk-agent-manager管理ugk-agent服务,为玩家房间分配游戏进程
ugk-apiHTTP Restful请求接口
ugk-charge充值
ugk-chat聊天
ugk-common公共逻辑封装
ugk-game游戏微服务
ugk-gate网关,消息转换
ugk-lobby大厅,一般逻辑
ugk-login登录、账号
ugk-message协议消息
ugk-resource文档、脚本
ugk-stress-testing压力测试客户端集群

游戏

游戏描述
game-galactic-kittens2D多人飞船射击游戏

技术选择

  • Unity、C# 客户端和服务器
  • Go 服务器
  • Kcp 网络通信 忘记和网关,网关和后端服务通信
  • Protobuf+Grpc 内部网络通信
  • Zookeeper 服务发现注册
  • Mongodb,Redis 数据存储
  • Docker、Jenkins 进行CI/CD

参考资料

网络

同步

Unity

TODO

  • 网络同步、延迟、插值、回退(延迟补偿),物理同步,动画同步,位置方向同步
  • 场景同步消息,transform同步消息,aoi管理
  • 客户端同步封装,参考NetworkTransform、NetworkAnimator、NetworkRigidbody?(参考Mirror)
  • 封装NetworkTransform 进行位置,方向,缩放同步,插值
  • 客户端NetworkTransform 封装成抽象类,具体子游戏继承,子弹类需要同步速度,需要同步实体的唯一ID,配置ID,ConfigRole
  • 服务器NetworkTransform只起配置作用,通过对象manager进行批量同步,子弹碰撞服务器检测,需要回滚
  • 客户端和服务器配置都通过go服务器拉取
  • 完整的GalacticKittensMatch流程
  • Unity服务器日志打印类文件,添加Trace级别日志屏蔽输出
  • 玩家进入游戏后端已经可以通过agent创建unity docker容器;下一步需要前端进入游戏场景,后端unity服务器开发,
  • 房间号没有存数据库递增,一直是1?
  • 场景消息同步定义,后端刷出小怪及客户端显示角色 ,小怪,boss同步频率低(1s一次?),给速度,客户端模拟,服务器出发了碰撞等在同步

计划

  • Websocket网络通信
  • 压力测试客户端使用ugk-web开发界面(vue3)
  • 添加聊天、排行、匹配、房间(Mirror)服务
  • 广告、充值接取
  • 断线重连(ugk-client,unity后端服务器与网关等)
  • 使用c#开发导表等图形化工具
  • 服务器unity提取公共包,unity的package
  • ugk-client 弹窗增加tween动画
  • 后台管理系统查看unity docker服务器