HalfLife引擎网络同步技术简介

简介 Half Life 2 Source引擎 中的四类网络同步技术:
  (1) 客户端预测
  (2) 内/外插值
  (3) 延迟补偿
  (4) 数据压缩
  还有强大的图/表同步监测工具。
  
  对快节奏网游有借鉴价值。

  HalfLife引擎也是著名的 CS(Counter Strike) 系列游戏的引擎。

   
---------------------------------------------------------------------

  
  <<HalfLife引擎网络同步技术简介>>

       AKara 2011-02-25

 

       Google Doc 上的PPT地址:

       https://docs.google.com/present/view?id=dt6c2mc_2t4h8bddm

HalfLife CS Source 网络 同步

  
---------------------------------------------------------------------

理念
* 个体感受优先

* 消除阈值内延迟感
  > 50ms->100ms

* 可接受的中等延迟
  > 150ms->500ms

* 兼防作弊

---------------------------------------------------------------------

四大技术
* 客户端预测

* 内/外插值

* 延迟补偿

* 数据压缩

---------------------------------------------------------------------

客户端预测 - 本机角色
* 命令队列(图)
  > slide window

* 时间片(图)
  > frame time

* 最后认证态(图)
  > 命令队列滑动

* 共享代码
  > pm_share

---------------------------------------------------------------------

内外插值 – 远程对象
* 延迟显示(LERP ms)(图)
  > LinEaR interPolating
  > 动态调整
  > 默认:cl_updaterate = 20; cl_interp = 0.1

* 内插值(Interpolating)(图)
  > 位置历史
  > Don’t Interpolation Flag

* 外插值(Extrapolating)(图)
  > Time Limit(eg.QuakeWorld 100ms)

---------------------------------------------------------------------

Tweaking
* 服务器帧率
  > 20->66

* 客户端字节率
  > MODEMs 4500 / ISDN 6000 / DSL 10000

* 客户端指令率
  > same as server frame

* 客户端lerp率
  > same as server frame

---------------------------------------------------------------------

Config
* rate = 10000
  > sv: sv_minrate + sv_maxrate

* cl_cmdrate = 30

* cl_updaterate = 20
  > sv: sv_minupdaterate + sv_maxupdaterate

* cl_interp = 0.1(old, disabled)

* cl_interp_ratio = 2(new)
  > cl_interp = cl_interp_ratio / cl_updaterate
  > (eg. 2 / 20 = 0.1;  2 / 66 = 0.03..)

* cl_fullupdate

---------------------------------------------------------------------

延迟补偿 – Time Wrapped
* 公式
  > 指令回溯时刻 = 当前时刻 - 包RTT - 客户端LERP间隔

* 瞬时武器(On)

* 轨迹武器(Off)

* 玩家(On)

* NPC(Default Off)

* 直观延迟感
  > 子弹回响

---------------------------------------------------------------------

“Shot Around A Corner”
cs fakelag

---------------------------------------------------------------------

数据压缩
* 协议精确到bit

* 浮点精度删减
  > >> + <<

* prop index优化
  > SPROP_CHANGES_OFTEN

* Entity LOD Filter
  > ALWAYS / DONTSEND / PVSCHECK / FULLCHECK

* 状态增量同步 + 定时聚合 + 压缩

* String Table

---------------------------------------------------------------------

临时对象
* 同帧数量限制
  > Multi MAX 32 / update, Single MAX 255 / update

* 不可靠包

* 只在创建时同步

* 抑制源效果同步
  > effect suppression

* 不受总对象限制

* 共享代码

---------------------------------------------------------------------

强力图/表化工具 - NetGraph
cs net_graph

---------------------------------------------------------------------

强力图/表化工具-cl_entityreport

cl_entityreport

---------------------------------------------------------------------

强力图/表化工具-Dtwatchent
delta entity: 1
+ m_flSimulationTime, DPT_Int, index 0, bits 8, value 17
+ m_vecOrigin, DPT_Vector, index 1, bits 52, value (171.156,-83.656,0.063)
+ m_nTickBase, DPT_Int, index 7, bits 32, value 5018
+ m_vecVelocity[0], DPT_Float, index 8, bits 20, value 11.865
+ m_vecVelocity[1], DPT_Float, index 9, bits 20, value -50.936
= 146 bits (19 bytes)

---------------------------------------------------------------------

强力图/表化工具-DTI
* Entity class
* Property Name
* Decode Count
* Total Bits
* Average Bits
* Total Index Bits
* Average Index Bits 
---------------------------------------------------------------------

   THX & THE END
  
  AKara 2011-02-25


---------------------------------------------------------------------

  想以前抗着 AWP ,兜着 Deagle 在awp_map_32b 上练到吐的 盲狙 ...
  或许早几年了解参数的意义,瞄准技术能上一个档次 :-)

  cs 1.6 awp_map_32b


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值