本文档介绍如何通过 GNA Unity SDK 实现网络分析。网络分析分为玩家自助网络分析和游戏对局网络分析。
您可以参见 工作原理 了解火山引擎游戏网络加速(GNA)如何对玩家的网络进行分析。
您已经导入和初始化了 GNA Unity SDK。
参见以下步骤实现玩家自助分析。您可以参见 SDK 参考 了解 SDK 的详细信息。
调用 CreateDiagnosisRequest
方法创建自助分析请求。
/// 设置请求参数 RequestParams requestParams = new RequestParams(); /// 把请求类型设置为网络分析 requestParams.RequestType = GnaExpRequestType.DiagnoseV1Target; /// 指定分析目标地址。可以是域名或 IPv4 地址。目前仅支持传入一个地址 requestParams.Targets = new List<string> {"www.volcengine.com"}; /// 地址特征,用于网络分析的地址调度功能。您需要联系我们使用该功能。如果您不需要使用地址调度功能,可设置为 ""。 requestParams.DispatchFeature = ""; /// 一般情况下,您可以设置为 NetDetectUnspecified requestParams.DetectType = GnaExpNetDetectType.NetDetectUnspecified; /// 一般情况下,您可以设置为 ActionUnspecified,诊断数据包由系统默认网络发出 requestParams.MultiNetAction = GnaExpMultiNetAction.ActionUnspecified; /// 超时时间。您可以设置为 15 秒 requestParams.Timeout = 15000; /// 创建分析请求 var request = NetExperience.Service.CreateDiagnosisRequest(requestParams);
调用 Start
方法开始自助分析。开始之后,SDK 会向您设置的目标地址发送网络分析请求。您还可以通过 SetUserExtraInfo
方法为分析请求添加附加信息。自助分析结束后,您可以通过 DiagnosisCompleteCallback
委托获取分析结果。另外,您也可以在控制台 查看统计数据。
/// 开始分析 request.Start(DiagnosisCompleteCallback); /// 网络分析结束回调。当网络分析完成、取消、因网络切换中止、超时、失败时, /// 都会触发该回调 void DiagnosisCompleteCallback(string report){ Debug.Log("completeLog:" + report); } /// 您还可以为分析请求添加附加信息,例如玩家的用户 ID。 /// 这样您在查看分析结果时,就可以按玩家的用户 ID 对分析结果进行分类统计 request.SetUserExtraInfo("userInfo");
自助分析会在完成后自动结束。如果,自助分析页面需要支持玩家取消自助分析。您可以调用 Cancel
取消自助分析。
/// 取消分析 request.Cancel();
玩家开始游戏对局时,如果网络发生跳变,SDK 会自动进行网络分析并向玩家或游戏运维人员返回分析结果。
您可以参见以下步骤实现游戏对局网络分析。
游戏对局开始时,调用 MonitorBegin
方法开启游戏对局网络分析。当网络发生跳变时,SDK 会自动向您设置的目标地址发送网络分析请求。您可以在控制台 查看统计数据。
MonitorBeginParams beginParams = new MonitorBeginParams(); /// 指定分析目标地址。可以是域名或 IPv4 地址 beginParams.Target = "www.bytedance.com"; /// 地址特征,用于网络分析的地址调度功能。您需要联系我们使用该功能。如果您不需要使用地址调度功能,可设置为 ""。 beginParams.DispatchFeature = ""; /// 您还可以为分析请求添加附加信息,例如玩家的用户 ID beginParams.ExtraInfo = "userInfo"; GameNetDiagnosis.Service.MonitorBegin(beginParams);
在游戏对局过程中,您也可以主动调用 DoDiagnosisDuringGaming
方法向您在 MonitorBegin
方法中设置的目标地址发送网络分析请求。您可以在控制台 查看统计数据。
string reason = @"movelag"; GameNetDiagnosis.Service.DoDiagnosisDuringGaming(reason);
对局游戏结束时,调用 MonitorEnd
方法关闭对局分析。
GameNetDiagnosis.Service.MonitorEnd("extraInfo");