网络游戏体验度量设计

网络游戏场景

 

网络游戏中目前常见架构是C/S和B/S,这里只考虑主流即C/S的情况,它们间报文交互涉及

服务器发送到客户端:状态更新、对话框、请求的应答

客户端发送到服务器:用户指令,位置更新等

影响游戏体验的2个最重要的网络因素,延迟(导致卡顿)和丢包(导致重传=变相延迟)。对于延迟,可以通过报文时间间隔判断出来。对于重传,tcp报文重传是通过序列号比较判断出来的,因此无法根据单独一个报文判断出来,而需要完整的流序列;Udp重传是通过应用程序自己封装设计完成,没有标准可循。

 

前一阶段试验的方法和经验

 

编号

方法

失败原因

可改进点

1

根据拟合公式,在网络设备中模拟探针,执行ping,将得到的qos数据代入公式计算,如

5.2696-6.8749*10^(-9)*x^3+2.3495*10^(-5)*x^2-0.0222*x

x=delay+9.8371*jitter

  1. 不同游戏公式不同
  2. 游戏对短期异常敏感,IQX假设适用于长期
  3. Qos是通过ping得到可能不准确

获取当前网络情况

2

使用神经网络对报文流特征进行监督学习(判别模型)

  1. 不同游戏对网络要求不同,各特征阈值不同
  2. 通过特征权重分析,发现不同游戏,特征对体验影响的权重不同
  3. 收集的流特征可能不足够反映体验

无量纲化处理(上下限,中心化等),特征筛选(信息增益等),发现更有用的特征(熵取代方差)

 

难点分析

  1. 不同(类型)游戏的识别
    1. 每个游戏识别
    2. 每类游戏识别
  2. 不同(类型)游戏达到正常体验时对网络要求不同(棋牌益智类属于非实时,FPS、RTS属于实时。棋类游戏和卡牌游戏有严格的先后顺序,不容易出现逻辑错误,更不会出现不一致的情况;而且回合时间较长,能够容忍高延迟。)
    1. 每个游戏网络要求
    2. 每类游戏网络要求
  3. 其他:某些游戏自带延迟补偿纠正机制(早期Lockstep,后来的dead reckoning、time warp),导致相同网络相同游戏情况下,有无机制也会导致体验的不同,另外有研究发现在长时间尺度下(如按年)同一游戏网络报文特征也会发生变化(如梦幻西游),不同游戏使用协议不同延迟敏感的使用UDP

  1.  

 

模型思路

 

游戏数据

方法2中考虑到的数据特征

 

min_IAT

最小间隔时间

q1_IAT

第1四分位间隔时间

med_IAT

中位间隔时间

mean_IAT

平均间隔时间

q3_IAT

第3四分位间隔时间

max_IAT

最大间隔时间

var_IAT

间隔时间方差

min_len_pkt

报文最小长度

q1_len_pkt

报文第1四分位长度

med_len_pkt

报文中位长度

mean_len_pkt

报文平均长度

q3_len_pkt

报文第3四分位长度

max_len_pkt

报文最大长度

var_len_pkt

报文长度方差

pkt_num_upwd

上行报文个数

pkt_num_dowd

下行报文个数

min_len_pkt_upwd

上行报文最小长度

q1_len_pkt_upwd

上行报文第1四分位长度

med_len_pkt_upwd

上行报文中位长度

mean_len_pkt_upwd

上行报文平均长度

q3_len_pkt_upwd

上行报文第3四分位长度

max_len_pkt_upwd

上行报文最大长度

var_len_pkt_upwd

上行报文长度方差

min_len_pkt_dowd

下行报文最小长度

q1_len_pkt_dowd

下行报文第1四分位长度

med_len_pkt_dowd

下行报文中位长度

mean_len_pkt_dowd

下行报文平均长度

q3_len_pkt_dowd

下行报文第3四分位长度

max_len_pkt_dowd

下行报文最大长度

var_len_pkt_dowd

下行报文长度方差

min_IAT_upwd

上行最小间隔时间

q1_IAT_upwd

上行第1四分位间隔时间

med_IAT_upwd

上行中位间隔时间

mean_IAT_upwd

上行平均间隔时间

q3_IAT_upwd

上行第3四分位间隔时间

max_IAT_upwd

上行最大间隔时间

var_IAT_upwd

上行间隔时间方差

min_IAT_dowd

下行最小间隔时间

q1_IAT_dowd

下行第1四分位间隔时间

med_IAT_dowd

下行中位间隔时间

mean_IAT_dowd

下行平均间隔时间

q3_IAT_dowd

下行第3四分位间隔时间

max_IAT_dowd

下行最大间隔时间

var_IAT_dowd

下行间隔时间方差

 

游戏体验一般情况下考虑到的特征

文献1:平均rtt,最大rtt,抖动,平均延迟,客户端丢包率,服务端丢包率,

文献2:会话时间,最长报文,最短报文,平均长度,背景流,游戏流,上传延迟、下载延迟、RTT延迟、间隔时间

网络数据

网络特征数据,反映网络客观环境(可以考虑主动收集方式,注入流量)

游戏类型

对于游戏类型识别,已有不少研究,无需DPI,只需基于流特征即可做到类型级别的区分,具体特征包括上下行报文数目比、包大小信息熵,下行PPS等。这里考虑2种分类标准

  1. 按照游戏内容模式:即

ACT,AVG,PUZ,CAG,FTG,LVG,TCG,TAB,MSC,SPG,SLG,STG,RPG,RCG,RTS,ETC,WAG,SIM,S•RPG,A•RPG,FPS,MUD,MMORPG等,优点是符合用户认知、便于理解,缺点是无法区分是否重合或者过细,而且不能保证覆盖新类型游戏,需要使用DPI技术来实现

  1. 按照网络特征,即从报文长度,报文时间间隔等,优点是实现技术相对简单(如下图已有借鉴成果)、类型有限、适应性强,缺点是无法直接对应到具体游戏

 

 

 

报文长度特征(双向,平均,分布)、报文个数特征(同上),协议(tcp,udp,tcp+udp),终端(手游、端游)

 

游戏体验

按MOS值输出为5类(实际上根据调研结果来看,体现出两极趋势,要么一般要么很差,没有很好和中间层)

 

生成模型

基于贝叶斯思想,对应游戏类型识别,不考虑使用该模型

对应体验,P(c_i|A)=P(A|c_i)P(c_i)/P(A), c_i标识体验,假设体验分5类,则为c1,c2,c3,c4,c5, A为输入数据,或者说收集到的各种网络参数和游戏参数,

假设该参数间无关联,则A可以拆分为(a1,a2,a3….a_n)个单独的特征,诸如丢包率、延迟、抖动等。

P(c_i|A)=P(A|c_i)P(c_i)/P(A)= P(c_i)× P(a_1|c_i)×P(a_2|c_i)×… P(a_n|c_i)/P(A),

则分类问题归结为挑选max P(c_i|A),又因为P(A)视为常数,最终就是求max P(c_i)× P(a_1|c_i)×P(a_2|c_i)×… P(a_n|c_i)

模型优点

  1. 可解释性,所得结果是最可能的情况
  2. 基于统计计算,方法简单

模型缺点

  1. 属于生成模型(G-model),但是网络环境并不保证稳定,因而不能保证某种体验出现概率是固定的,也就是无法给出概率,比如P(c1)并不一定是固定比例,也无法预先知道
  2. A的拆分出特征,无法保证独立无关,例如抖动为a_1,延迟为a_2,则P(a_1|c_i)×P(a_2|c_i)不等于P(a_1,a_2|c_i)
  3. 本身P(a_j|c_i)也不能基于是稳定值

 

总结:该方法还未试验过,但从网络搜索到的结果来看,一般认为该模型在实际应用中效果不如判别模型

 

判别模型

对应游戏类型,输入层包含游戏数据参数,对应游戏类型作为标签

 

对应游戏体验,输入层包含游戏类型和游戏数据参数,对应游戏体验作为标签

该模型具体实现有3种考虑

  1. 使用参数拟合方法,根据qos参数和主观打分来拟合公式,已知大多数游戏体验研究是按此思路进行,已经试验过,效果不好
  2. 人工提取特征,使用BP网络(或其他监督学习算法)进行训练。输入层包含游戏类型参数、游戏数据参数、网络数据参数,对应时间类体验作为标签,使用BP网络进行训练,已经试验过,效果不好
  3. 通过深度学习,输入层直接以原始报文和时间点作为输入,由神经网络自动提取特征,该方法还未试验过,特别是需要海量数据,不能轻易尝试

 

总结:局限于有限类型的游戏情况,扩展性差(基本上限于拟合公式)

 

异常检测模型

正常情况下,游戏体验正常时间占大多数(不同于下载,如果体验不好,游戏操作不可能长时间进行),通过检测报文的异常特征来发现体验异常,特征包括报文时间间隔,延迟,重传,心跳报文异常(现在大部分网游都有内置保活机制,一种考虑是通过心跳报文检测网络异常)

 

该模型实现有2种考虑

  1. 时间序列的统计方法
  2. 基于机器学习算法

 

优点:基于不同游戏自身特性来分析,不依赖于游戏分类,极端情况下该游戏特征可以和其他游戏完全不同,不需要监督学习。思科新框架DNA里面也是使用这种模型来监测网络异常,找到一个专利描述的方法是使用小波系数来进行预测。

缺点:从已收集资料来看,该模型若采用时间序列的方法,需要原始数据保证一定的平稳性和周期性,例如校园网或办公网中的网络流量,对于游戏而言,从流量上来看还没发现有周期性特征(一种想法是通过一段时间的数据学习来构建数据转移概率模型,进而判断是否异常,这种方法也属于异常检测中常见的方法之一,但目前有2个问题需要考虑,一是该方法仅是基于相邻的时间尺度做出判断全局性不足,二是正常数据的学习标准不好判断)。若干使用机器学习方法需要保证特征服从正态分布。

总结:有部分研究使用该方法进行体验度量(游戏离开时间检测、预测和实际偏差检测),该模型还未试验过

 

基于数量(原始特征)异常

基于分布(特征概率)异常

 

收集数据

根据人的行为特征,正常情况下,游戏体验正常时间占大多数(不同于下载,如果体验不好,游戏操作不可能长时间进行),所以游戏分类和游戏体验度量中的数据收集部分重叠,可以合并进行。

“基于特征选取的网络游戏与视频业务分类研究.pdf”中每类应用/游戏采集了60条流,每条流时长30分钟

 

数据采样对数据的影响,数据缺失,精度下降

 

 

上一篇:HOOK这是一种思想(附源码)


下一篇:c语言连接mysql完整演示