廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 14850 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
紫龍
個人頭像
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x10 鮮花 x110
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[] CS1.6網絡參數詳細解釋
在這篇文章中,我希望能讓大家瞭解一下CS中的一些網絡上的參數。在1.3時代,當歐洲和美洲的玩家在CS上強烈碰撞的時候,網絡參數在
當時是一個全新的主題。1.5里,玩家們開始嘗試從這些命令當中研究,發掘某些特性。事實上,大多數人都採用了正確的設置。當我們都
以為對於網絡參數的爭論結束的時候,一個看似神秘的參數ex_interp在1.5中被重新提出,引起了一系列的風波。然而,在1.6出現之後,
Valve修正了網絡參數的這個錯誤(指的是ex_interp),同時也製造了更多的混淆。如果沒有混亂的話,正確的設定早已經有效的被Valve反
作弊系統(VAC)所鎖定.到了現在,卻仍然是一個混亂的局面。

  在文章中,我的觀點是積累了2年的經驗和長期觀察的結果。最近,一些參數的問題又引發了我的興趣:管理員強制性地設置了錯誤
的數值,玩家們在LAN中使用正確的參數卻被硬性地踢出等等。有些人可能會記得我,我就是當年發表那篇"ex_ cammands explained(
ex_ 系列參數詳解)"的人。在這篇文章中,有很多信息是我與Valve的員工用Email交流之後獲得的。(大家可能會奇怪,他們正在
解決一些demo的問題。)我想再次提出,文章不會讓你成為下一個SpawN,不過能幫助消除一些錯誤的監控(譯者註:主要指管理員和一些
軟件的監控錯誤)並讓大家有一個更具說服力更具準確度的遊戲環境的理解。

  下文中,我將首先說明一些個人認為重要的命令的大體介紹,並帶出他們的實際功效。然後我將會推薦一些數值,並解釋其中的原因



首先說明:

sv_ 以及sys_ 系列參數,是服務器端的命令,如果是在非本地服務器上修改這些系列參數的命令,你需要獲得服務器管理員的權限、

ex_interp和cl_updaterate的關係是非常緊密的,這兩個參數的說明都請必須閱讀。

文章中假設玩家的網絡都在寬帶接入的方式下進行。


參數介紹:

cl_cmdrate:

這個命令決定了客戶端向每秒鐘服務端發送數據包的數量。很明顯地,這個參數的數值設定得越高,那麼服務器就能相應客戶端處理信息
的速度越快,基本上數值設定得高是沒什麼錯的。如果你與你的朋友都在局域網中遊戲,而延時非常嚴重,那麼很可能就是這個參數沒有
設置好。事實上,大多數的寬帶接入沒有提供足量的上行帶寬,這也恰好是這個命令需要的。


cl_updaterate:

cl_updaterate與cl_cmdrate是類似的,不過方向是相反的。它控制的是客戶端每秒鐘從服務端接收數據包的數量。因此,它和你的下行
帶寬是緊密相連的。cl_updaterate的數值設定得越高,你和服務器的同步率就越高。因為只有服務器才會決定你開槍是否命中,所以你需
要足夠的更新數據包(upadates)。


sv_maxupdaterate:

cl_updaterate控制客戶端每秒接收來自服務端的數據更新包數量(只對客戶端本身控制),而sv_maxupdaterate就指定了服務端每秒發
送多少數據包到客戶端上(對服務端進行控制)。因此,客戶端cl_updaterate的數值設定比服務端sv_maxupdaterate的數值要高,是不能
增加客戶端接受的更新數據包數量的。


sys_ticrate:

  這個命令設定了服務器每秒能處理的最大數據「幀」數。默認設定下,這個參數設置為100。為什麼服務器的fps那麼重要?這個參數
決定了服務器的感應能力。我敢肯定我們都覺得服務器好像在TI-83 Plus(圖形計算器)上工作一樣,而我們就是在LAN上進行這些圖形計
算器的處理。

  sys_ticrate只是指定你的服務器所能計算的最大fps。默認設定下,服務器不會達到你所設定的數值,因為運算系統可能在處理某些
其他的進程。市面上有不同的加速("boost")服務器fps的軟件,不過大多數(如果不是全部的話)服務器加速軟件是靠網絡
服務器供應商處理的,記住,這樣的加速會加重服務器CPU的負荷。(出於某些原因,在de_inferno和de_aztec上用服務器加速軟件的話,
會劇烈增加CPU的負荷,大家可能曾經有過這樣的體驗。)在默認設置下,Half-life服務器,基於Win32的服務器一般在64fps,而基於Linux的
服務器一般在50fps。如果使用加速軟件的話,可能可以提升到512fps或者更高。這麼高的服務器fps是受到爭議的,不過我感覺如果在200fps左
右就能感覺到明顯的改進了。

  一致性才是關鍵的。Fps從100飆升到512,這樣可能會帶來一個更差的遊戲環境,因為sys_ticrate只在150左右,150是大多數服務器
硬件所能承受的了的。

  如果你有一個服務器的權限,而且想測試一下服務器的fps,那麼在控制台輸入rcon stats,看看你的服務器是否加速了:暫時地把
sys_ticrate調到10000,然後在看看服務器的fps是否超過100,如果超過100,那就是加速了的。


ex_interp:

在解釋這個參數之前,我們看看Webster字典對interpolate(添加,改寫)這個詞的解釋.
(以下是Webster字典的解釋,譯者這裡不將原英文去掉,是讓大家容易看到原有的解釋)
Main Entry: in·ter·po·late
主要條目: in·ter·po·late
3 : to estimate values of (a function) between two known values
3 : 評估兩個已知值之間的量的關係
intransitive senses : to make insertions (as of estimated values)
不及物動詞:進行插入(到已評估的值之中)

每一秒你只能從服務器獲得有限的更新,因此是不可能每次都那麼精確地及時地與服務器達到同步。舉個例子:

  下面的圖形顯示的是圓的線性內插法。當數據點(更新數據包)的數量增加的時候,則插入的量則變得更加地準確。在CS中,你可以
將這個比喻成在一秒內一個人物位置變化所跨越的範圍。在服務器看來,這是一個精準的圓圈,而從客戶端就需要在兩個「真正」的數據
包中插入一定的數據。
rate

我之前已經假設rate的數值為20000。把它調到20000以上不會有任何的改善,還可能會造成更不好的影響。

推薦值:
rate 20000.


sv_maxrate:

  這個值在大多數的情況下設置為0。我會解釋一下為什麼在線上遊戲時這並不是個理想的數值。sv_maxrate 0 會檢測每一個客戶端rate的
設置,並盡量滿足每一個玩家的需求。假設對half-life引擎來說每一秒允許玩家使用的rate參數的數值超過20000。如果有一個玩家將這
個數值設定為一個超高值(比如:999999999),那麼服務器會盡量的去滿足這個玩家的需要。那麼這樣會潛在的浪費帶寬,並且會對服務
器造成更多的負擔,也許會超過服務器所能承受的範圍。因此,我提出一個比較安全的建議,sv_maxrate在20000的時候會有比較好的表現
。在現實中,sv_maxrate 0和sv_maxrate 20000的效果對遊戲的進行而言可能都是一樣的,不過提高一些預防的範圍總是好的。

推薦值:
sv_maxrate 20000.


cl_cmdrate:在理想情況下,這個數值應該和服務器的fps是相等的(不是有些人所認為的客戶端的fps)。如果你對服務器的更新超過了
在同一時段內服務器所能處理的幀數的話,多餘的更新包會被服務器所丟棄。因此,cl_cmdrate設置得太高會有不好的效果,直接造成帶
寬的浪費。

推薦值:
cl_cmdrate與服務器的fps值相等或者稍高。


ex_interp:

  把這個參數設為0或者什麼都不寫。CS會自動的把ex_interp設置為1/cl_updaterate(比如你的console窗口會顯示「ex_interp forced
up to xx msec")。這就是你想你的客戶端要進行插入的時間長度。改變cl_updaterate會自動地改變ex_interp(當ex_interp=0時發
生)。因此我推薦只改變cl_updaterate,讓CS去設置你的ex_interp。現在已經不可能把ex_interp設定得比1/cl_updaterate更低了,把
它設定得高一些卻會產生錯誤。設置一個比1/cl_updaterate更高的值會造成你開槍的時候打在屏幕中人物的後面(譯者註:就是實際上你
並沒有打中人物,而只打在他的後面)。舉個例子,如果你用cl_updaterate 101,那麼ex_interp應該是1/101=0.009(9毫秒),那麼使
用默認的ex_interp 0.1,而cl_updaterate還是這麼高的話,那麼之前所說的錯誤就會產生。

推薦值:
ex_interp 0


cl_updaterate:長期以來,大家都認為cl_updaterate的規定是在101,這樣能使你獲得少量的"choke(阻塞)"。Choke可以用
命令net_graph 3看到。個人認為,choke是我不會考慮的東西。其實cl_updatarete的最佳值是很複雜的。CAL的服務端的config提供sv_maxupdaterate為
101,那麼很多人會總結為我們也應該把cl_updaterate設置為101。在理想的狀況下,這是正確地,不過在實際情況下,並不是那麼有用。
在北美,大多數的服務器都不能負荷每秒100幀的運算,這就意味著服務器無法發出每秒100個更新包,而玩家們就會覺得很「卡」了。由
於我們從客戶端如果沒有遠程控制密碼(遠程控制權限)的話是無法窺探服務端的fps的,如何選擇最適當的數值就像猜謎遊戲一樣了。你
可能會說,「好吧,那就把cl_updaterate設置為101就不管了,我會獲得服務器給我更新的最大值。」問題就在忽視了cl_updaterate對ex_interp的
影響以及兩者之間微妙的平衡關係。尋找一個適當的cl_updaterate值(記住要把ex_interp先設為0),從101開始逐漸減小,你會發現人
物只是「微小的閃動」(譯者註:原文是「slightyly skip around」,從實際操作來看,我們可以看到人物的重影,就像閃動一樣,我就
把它翻譯成「閃動」了)。「微小的閃動」是優先的選擇,只要ex_interp等於1/cl_updaterate,那麼人物就會在應有的位置上出現。在
不同的服務器中遊戲你都要改變cl_updaterate。如果必要的話,把它設置低於50也不要擔心。預處理系統會發揮好它的作用的。備註:大
多數的公眾服務器都會使用默認的sv_maxupdaterate 30,那麼在那種情況下,cl_updaterate就最好了。

  請注意,從一個低的cl_updaterate數值(比如說20)逐漸增加是不行的,一旦你把它設定得更高,ex_interp是不會重新設定的,你
需要不斷手動地將ex_interp置0。

推薦值:
cl_updaterate應該與服務器的fps相等,不應該超過服務器的sv_maxupdaterate數值


sys_ticrate:

  找合適的sys_ticrate就需要進行一些實驗了。首先,如果你的服務器沒有被加速,提高這個數值並超過100就不會有任何效果。如果
你正好租用了一個高性能的服務器的話(你的服務器可能已被加速),那麼你就有空間這麼做。總體上來說,服務端有更高的fps是一件好
事,提高sys_ticrate超過200(或者比200低)是毫無效果的。如果把sys_ticrate設為9999,你的服務器fps會根據現有的情況在150到1000之
間不停的跳變,把sys_ticrate設定為低於200的數值會有一個更一致的環境,不過會對服務器的性能有所減弱。同樣的,在一個物理服務
器(一台電腦或者服務器主機)上都可能運行不同的HLDS(Half-Life Dedicated Server),那麼如果每一個HLDS都把sys_ticrate設為10000的
話,服務器的CPU的負荷就相當大了。這樣的情況下,會潛在地造成在那台物理服務器上的性能的下降(也可能提高你每月的租用費用)。
最後,服務器的fps只會在某幾個數值上作用,舉例來說,我的服務器fps只在85,102,128,170,256等數值上,而不是在他們之間(比
如91)。如果你把sys_ticrate設為100,你的服務器fps最大值就會在100以下(比如85),因此,設定sys_ticrate大於目標fps數值約20到
50左右比較合適。

推薦值:
sys_ticrate 110-180,結合你的服務器性能考慮。


關於局域網對戰的備註:

  局域網對戰,比如the CPL,cl_updaterate設置為101,這與局域網服務器的質量有關。通常在LAN上,只有一小部分的服務器會在虛
擬盒中運行,因此服務器使用更少的資源。如果服務器都加速超過了100fps,那麼cl_updaterate 101就是一個非常理想的數值。判斷一個
LAN服務器最快的方法就是看看玩家們ping的平均值。一個運行在50到64fps的默認服務器,在LAN下的平均ping值為15ms,而加速過的服務
器會使ping值下降,大概在5ms左右。據我所知,the CPL,ESWC還有WCG都是使用加速過的服務器的。


[ 此文章被紫龍在2005-11-22 09:19重新編輯 ]



聊天聊人不聊名--交友網友我最愛
紫龍號稱一條龍--號稱古來最可愛

獻花 x1 回到頂端 [樓 主] From:台灣台灣網竣 | Posted:2005-11-22 08:29 |
q!
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x1
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

ssssss

此文章被評分,最近評分記錄
財富:-50 (by sk@.@) | 理由: 灌水


獻花 x0 回到頂端 [1 樓] From:香港城市電訊 | Posted:2010-12-12 11:28 |
arck
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x2
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

這篇文章的原作者是你嗎?
因為對cs1.6有興趣,想找懂得參數的人一起來討論 表情

更改m_side是更改滑鼠平移加速度的意思嗎


[ 此文章被arck在2011-04-18 06:35重新編輯 ]


cs1.6 ID:cooper
如果有-1,也請找我唷!
http://www.socgame.com.tw/bbs/index.php?s=0d5bde38e8eeb990b103ac2df78f8bc9&showtopic=109198
獻花 x0 回到頂端 [2 樓] From:臺灣中華電信股份有限公司 | Posted:2011-04-18 06:25 |
asdf64559
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

感謝..很實用


獻花 x0 回到頂端 [3 樓] From:臺灣碩網網路娛樂股份有限公司 | Posted:2011-10-09 13:27 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.067444 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言