Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 

Repository files navigation

GGNetwork (内测版)

一个更适用于游戏客户端的网络框架

GGNetwork

简介

它不是一个网络功能的底层实现,它封装了游戏客户端所需的一些网络特性,让游戏网络的稳定性和体验感更好。并且可以很方便地挂载第三方或者自定义的网络底层模块。

框架面向不同业务层级的功能划分:

  • 游戏业务层 — 交给游戏业务开发环节处理
  • 游戏网络层 — 框架提供异常检查与处理
  • 网络通信层 — 框架提供异常检查与处理

目标

为游戏客户端提供:

  • 更好的网络稳定性
  • 更好的网络交互体验

功能与特性

网络交互体验

  • 支持 UI 反馈回调挂载,接入简单,当网络连接、请求发生异常或等待时,获得更好的交互体验
  • 支持多线程请求,避免网络卡顿对 UI 产生影响
  • 支持请求异常响应,例如失败后自动重试、手动重试、忽略等
  • 支持断线重连,包括自动重连、手动重连

网络质量保障

  • 支持 HttpDNS,避免玩家端的 DNS 劫持
  • 支持网络异常上报,让开发者了解分布各地的玩家的网络状况

第三方支持

  • 支持 HTTP/HTTPS 连接(已实现):预置 Best HTTP (Pro) 作为底层;也可挂载自定义或其它第三方 HTTP 模块
  • 支持 Socket / 长连接(已实现,内测):预置基于 WebSocket + Pomelo 协议的 PomeloClient;也可挂载自定义或其它第三方长连接模块
  • 支持 HttpDNS Provider 插拔:预置橙域实现,工厂预留腾讯、阿里

可插拔设计:框架通过 IHTTPFactory(HTTP 底层)、BaseNetworkClient(长连接底层)、UIAdaptor/LogAdaptor(UI 与上报解耦)、HTTPDNSFactory(域名解析)等抽象接口,将各类底层实现与业务解耦,可自由替换或挂载第三方实现。

工程内容

目录内容说明
GGNetwork/Assets/Scripts/GGNetwork 框架代码 可以直接复制到目标工程中使用。
GGNetwork/Assets/Demo 演示工程 可以作为框架使用的参考。

核心模块

模块 说明
GameNetworkSystem 系统总入口,按固定顺序完成整体初始化编排
HttpNetworkSystem HTTP 层总入口:Post/Get 请求、异常处理策略、参数签名、多线程、结果统一分发
NetworkSystem 长连接总入口:客户端连接管理(默认 game / notify 两条)、请求发送、轮询刷新
DownloadSystem 文件下载管理:流式下载、进度回调、失败自动重试
HTTPDNSSystem 域名解析:本地缓存、TTL 定时刷新、按 IP 替换 host
ServiceCenter 网络服务中心:连接/请求超时参数、服务域名动态刷新

文档

进群沟通

QQ群: 242500383 GLTOP游戏研发与技术1群

应用案例

当前版本的 GGNetwork 适用于实时性要求不高的 SLG、休闲等类型的游戏。虽然是内测版本,但已经在商业项目中应用。

小小三国2 一款已经运营了 8 年的 SLG 手游。
游戏化心理评测系统 上海某知名高校的游戏化心理评测项目。

依赖

  • Best HTTP (Pro) — 预置 HTTP 底层实现(位于 Assets/LocalPackages
  • PomeloClient / UnityWebSocket — 预置长连接底层实现(位于 Assets/LocalPackages
  • GGTask / Dependency — 多线程任务队列与通用工具程序集

TODO-List

  • 整理代码,把 PomeloClient 充分剥离出来,作为可选插件
  • 更完整的 Demo 演示
  • 补齐 RequestItem.cs / HTTPRequestAdapter.cs 源码归档(当前仅存 .meta)

更多资料

About

一个更适用于游戏客户端的网络框架,让游戏获得更好的网络稳定性和更好的网络交互体验。A game client network framework.

Topics

Resources

Stars

17 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages