PDA

瀏覽完整版本 : 【轉貼】 CS:S服務器:Tickrate詳解



ckshalan
2011-03-24, 04:05 PM
CS:S服務器:Tickrate詳解(移動)
Source引擎服務器中,多了幾個對於遊戲運行狀況很關鍵的參數,Tickrate是其中之一。Valve官方對Tickrate參數的解釋如下:在每次tick中,服務器會處理來自用戶的指令,執行一次物理模擬,檢查遊戲規則並更新所有物體的狀態。模擬一次tick之後,服務器確定是否有客戶端需要一次世界更新,並根據需要保存當前世界狀態的快照。更高的tickrate值增加模擬的精確度,但是也會同時提高服務器及客戶端對CPU能力和可用網絡帶寬的需求。
  遊戲中經常會有玩家抱怨諸如:「OP,tickrate33太低啦,改成66吧」「OP,tickrate66太高啦,改成33吧」等等。事實上,Tickrate這一參數只能在Srcds.exe 的啟動命令行中以」-tickrate 「的形式設置,而並不存在其他方法更改這一參數。所以,要更改tickrate必須重新啟動服務器。那麼這個關鍵的tickrate參數到底起到多大的作用,又對系統需求有什麼樣的影響呢?首先先介紹Source引擎中的幾個關鍵的參數:

* sv_maxrate : 服務器端參數。服務器發送給客戶端的最大每秒字節數,也就是客戶端能從服務器端所請求的最大速度。如果服務器端的sv_maxrate值小於客戶端的rate值,則sv_maxrate值會覆蓋客戶端的rate設定。 sv_minrate : 服務器端參數。服務器發送給客戶端的最小每秒字節數,也就是客戶端從服務器端所請求的最小速度。如果服務器端的sv_minrate值大於客戶端的rate值,則sv_minrate值會覆蓋客戶端的rate設定。 sv_maxupdaterate : 服務器端參數。服務器發送至客戶端的最大每秒更新次數,也就是客戶端能從服務器端請求的最大每秒更新次數。如果這個值小於客戶端的cl_updaterate,將會以這個值覆蓋客戶端的cl_updaterate設定。 sv_minupdaterate : 服務器端參數。服務器發送至客戶端的最小每秒更新次數,也就是客戶端從服務器端請求的最小每秒更新次數。如果這個值大於客戶端的cl_updaterate,將會以這個值覆蓋客戶端的cl_updaterate設定。 rate : 客戶端參數。客戶端從服務器端請求的的最大每秒字節數。如果該值小於服務器的sv_maxrate設定,則該值會覆蓋服務器的sv_maxrate設定。 cl_updaterate : 客戶端參數。客戶端從服務器端請求的最大每秒更新次數。如果該值小於服務器的sv_maxupdaterate設定,則該值會覆蓋服務器的sv_maxupdaterate設定。 cl_cmdrate : 客戶端參數。客戶端發送給服務器的最大每秒更新次數。
* FPS : Frame Per Second,對於客戶端,它反映於每秒鐘畫面的更新次數,並影響所有遊戲對輸入、輸出設備的檢測頻率。(也就是說,更高的FPS有助於遊戲更頻繁的檢測你的輸入,從而更平滑的反映你的動作,這也是為什麼要關掉顯卡的垂直同步的原因);對於服務器端,由於不存在鍵盤、鼠標等設備的更新問題,該值僅僅影響服務器檢查來自客戶端的數據包的頻率。

  對於 遊戲來說,遊戲的流暢度對玩家的影響最大。影響遊戲流暢度的原因有CPU處理速度、顯卡處理速度、網絡數據吞吐量及網絡延遲大小等等。以上所介紹的幾個參數的設定將會影響到CPU處理速度和網絡數據吞吐量。服務器端的sv_maxupdaterate與客戶端的cl_updaterate不會使服務器端發送比sv_maxrate及rate所設定的數據流量更多或者比客戶端的實際帶寬更多的數據到客戶端。無論哪個updaterate值的設定導致帶寬佔用大於任何一種rate設定,都會出現choke。這是因為:對於服務器端,服務器的sv_maxupdaterate設定會導致到每個客戶端的帶寬超出 sv_maxrate的設定,或者所需帶寬總和超出服務器的真實帶寬;對於客戶端,客戶端的cl_updaterate設定也會導致需求的帶寬超出客戶端的rate設定,或者超出客戶端的真實帶寬。這樣,一部分數據無法發送到客戶端,導致客戶端的世界與服務器端的世界產生差異,也就是物體在客戶端所表現的狀態並非它的實際狀態。
  所以,僅僅提高tickrate並不一定能提高服務器的質量,還需要對以上幾個參數做一定的設置。
  首先,如果服務器運行於Windows平台,還需要更改Windows的內核時間頻率(Windows默認的時間頻率是64,意味著服務器端的FPS 將不可能超過這個值,如此一來,updaterate設為66也是毫無意義的,因為服務器每秒鐘只能進行64次的數據包檢測)。提高Windows的內核時間頻率可以使用我的一個小程序:pingbooster.exe(Win32,23KB,包含可執行文件及源代碼,如果你直接使用可執行文件,請確認數字簽名有效)。然後,更改你的服務器啟動命令行,添加+fps_max 600,這樣,srcds的FPS就可以達到512了。查看服務器FPS,可以使用控制台的rcon stats命令。其次,僅僅更改了Tickrate和服務器FPS並不能使高Tickrate的優勢表現出來,還需要更改服務器的帶寬設定,這就涉及到 sv_maxrate和sv_maxupdaterate兩個參數。默認的sv_maxrate是0,也就是無限帶寬,但是我覺得把它設為無限並不合適,經常會出現莫名其妙的choke。所以,如果你的服務器帶寬能夠承受,我推薦把sv_maxrate設置為20000,也就是每客戶端最大帶寬近 20KB/s,因為tickrate 66、updaterate 66大概會產生12~13KB/s的帶寬開銷。sv_maxupdaterate的設置比較簡單,把它和tickrate設為同一個值就可以了,否則你的高tickrate設置將完全無法體現出優勢。以上參數,除了fps_max和tickrate需要在srcds命令行設置外,其他的都可以寫入 server.cfg中。另外,Valve提醒,不要把tickrate設得高過100,否則會出現問題。對於[url=]CS:S (]FPS[/url)服務器來說,默認的tickrate是33,只要你的服務器帶寬和硬件允許,你大可以把它改成66而不會出現任何問題。總結地說,以上的幾個服務器端參數的作用如下:

* 服務器端FPS:服務器接收數據包的頻率,越高越好而且基本不會增加服務器的負載。 tickrate:服務器產生、更新遊戲世界的頻率,會影響服務器的負載和網絡帶寬需求。 sv_maxrate:服務器帶寬限制/每客戶。
* sv_maxupdaterate:服務器最大能接受的cl_updaterate數值。影響客戶端的遊戲世界更新頻率和帶寬需求。

  對於客戶端,也要根據自己的帶寬適當設置rate、cl_updaterate、cl_cmdrate參數。參照服務器的設置,一般rate設置為 20000即可。cl_updaterate則要根據自己的網絡狀況謹慎設置。對於一個66tickrate的服務器,如果你把 cl_updaterate設置為66而沒有出現choke,那麼恭喜你,你將會感受到66tickrate帶來的優勢;如果出現了choke,那麼你只能適當調低cl_updaterate,直到choke降低到你能接受的程度(對於我來說,0才是可以接受的值)。cl_cmdrate一般設置為服務器的tickrate就可以,過高(使帶寬佔用超過帶寬限制)會產生loss,不過這不影響遊戲世界的狀態,但是太高的loss也會導致無法遊戲——你所作的動作都無法反映到服務器上:你走了一步,服務器並沒有接收到這個指令,而認為你還在原地……。
  由此,典型的SRCDS啟動命令行如下:

start /high srcds.exe -console -game cstrike -tickrate 66 +fps_max 600 -port 27000 +map de_dust2 +maxplayers 20 +sv_lan 0 -noipx +ip 221.204.253.66

ckshalan
2011-03-24, 04:10 PM
網路上找到的一篇文章,自己還沒完全看懂,簡單地說就是tickrate會影響到遊戲流暢程度,預設值66但是目前各伺服器主流都是tickrate 100;
文章中提到sv_maxrate設置為20000也就是每客戶端最大頻寬近20KB/s,我可以理解為伺服器人數上限乘以這個數值就是所需的總頻寬嗎?(沒架設過伺服器真的不懂)
另外可能在一台主機上架設多個伺服器嗎?

ram
2011-03-24, 05:13 PM
肉塔真是好學啊~~我現在調到66 fpx_max600,但想要調到100,不過不知道fps要設多少,還在看懂中,

一台SERVER可以架多台啊,只要夠力都可以啊,換個port就好了。

forevershan
2011-03-24, 06:22 PM
肉塔真是好學啊~~我現在調到66 fpx_max600,但想要調到100,不過不知道fps要設多少,還在看懂中,

一台SERVER可以架多台啊,只要夠力都可以啊,換個port就好了。

因為剛開的時候我用超級跳跳過 感覺不是很順暢囧
下午跟柔漢說應該是設定在66
不過現在sv應該都還設定在預設值
看金錢要不要調整 還有c4引爆或是拆解成功是否處死
重點是ADM權限!! 往後要是發生惡意TK&TA 或是小白玩家 會無法當下處理!!
至於伺服器我覺得兩台應該就夠了!
一台PUB 一台TP MIX!!
小弟的意見給86老大參考

ckshalan
2011-03-24, 07:36 PM
因為我想Tickrate 66→100意味著流量增加50%,那麼人數可能就要減少了。
如果可以架兩台,一台public sv 20人(預設BOT 8~10個)、一台給老玩家mix tp 12人(留點旁觀位置),我覺得差不多吧。

ram
2011-03-25, 11:23 AM
因為剛開的時候我用超級跳跳過 感覺不是很順暢囧
下午跟柔漢說應該是設定在66
不過現在sv應該都還設定在預設值
看金錢要不要調整 還有c4引爆或是拆解成功是否處死
重點是ADM權限!! 往後要是發生惡意TK&TA 或是小白玩家 會無法當下處理!!
至於伺服器我覺得兩台應該就夠了!

一台PUB 一台TP MIX!!
小弟的意見給86老大參考


因為我想Tickrate 66→100意味著流量增加50%,那麼人數可能就要減少了。
如果可以架兩台,一台public sv 20人(預設BOT 8~10個)、一台給老玩家mix tp 12人(留點旁觀位置),我覺得差不多吧。



感謝二位的指點,覺得非常有用,目前先把參數調到100,先不管頻寛的問題,看能做到什麼程度再說,

我沒有裝CSS,加上沒有在玩,架CSS SERVER只是這二天的事,所以很多的設定都不是很了解,意思說很外行啦,

目前都是請神話幫我進SERVER看,有那些問題,不過就麻煩二位多提供一點人家的架設參數給我,我就可以微調了,

對CSS的了解程度應該還在幼幼班,目前先把基本的東西搞定完,要再加一台也沒有什麼問題,

ADM的話~等全部都調整好了,有人會進去玩了,我就開放給你們。