6、大規模廣播
建立一個可以支持大規模觀察者(>1000人)的HLTV網絡是一個艱難且耗時的工作。下列指導將幫助你配置和運行以這樣的一個HLTV網絡。一條重要的規則是:「要質量,不是只要數量」。相對於使用所有的帶寬來說,建立少一點觀察者的選擇顯然更好,這樣所有的觀察者都不會為lags和超時所困擾。檢查你的帶寬容量並且計算出你的HLTV伺服器能支持多少觀察者,平均每個觀察者需要2-3K的流量,CPU和內存在目前流行的PC系統中到是不太會成為性能瓶頸。
這個列表給出大致的Internet連接HLTV所需要帶寬:
- ISDN 64Kbps : 2個觀察者
- ADSL 512Kbps(上行速率) : 20個觀察者
- T1 1.5Mbps : 75個觀察者
- LAN 10Mbps : 500個觀察者
- T3 75Mbps : 4000個觀察者
使用"maxclients"命令可以控制HLTV伺服器接受的客戶端連入數量,確定"maxrate"參數被設為一個合理的數值,例如:3500 kB/sec。更低的數值也是可能的,但是會造成觀察者們產生"choke"。命令"maxrate"並不影響HLTV代理伺服器之間的帶寬限制,僅對觀察者客戶端有效。為了降低帶寬需求,你可以關閉internet HLTV chat("chatmode 0")或者將遊戲的上行速率從默認的20降低到10("updaterate 10")。低一些的上行速率可以節省25%的帶寬並且這是可接受的,因為在這時,觀察這並不需要和真實玩家相同的上行速率。
一個針對大規模廣播非常普遍的設置是使用兩台分離的HLTV伺服器來創建一個私有段和一個公共段。我們假定遊戲伺服器在一個封閉的局域網中外網無法到達。這確保了最大的安全無法被外界攻擊(例如D.O.S攻擊)。HLTV主伺服器在局域網中啟動,並且它的外網地址保密。第二台擁有真實IP地址的HLTV伺服器在局域網外啟動並且連入HLTV主伺服器。這第二台HLTV伺服器是公眾HLTV發佈機,IP和端口公開給觀眾們,並且所有的轉播伺服器都連入這台 HLTV發佈機。這樣HLTV主伺服器就在安全的局域網環境下工作,並且可以被用來錄製demo或者現場放映機。觀察者們連入HLTV發佈機或者其他轉播伺服器。這樣所有的網絡負載就被均衡到了所有的HLTV代理上。
如圖:
+---- Private LAN -----+ +------ Public Internet --------+
-> HLTV Proxy 1
HL Server -> HLTV主伺服器 -> HLTV發佈伺服器 -> HLTV Proxy 2
-> HLTV Proxy 3
主伺服器和發佈伺服器的配置文件不同:
master.cfg
nomaster 1 //不在WON主伺服器上註冊
proxypassword MyPWD //保護密碼
publicgame 0 //不顯示遊戲伺服器IP
dispatchmode 0 //不分派觀察者
dispatcher.cfg
forcemaster 1 //註冊到WON主伺服器上
publicgame 0 //不顯示遊戲伺服器IP
dispatchmode 2 //分派所有客戶端到其他伺服器
hostname MyGame //公開的HLTV伺服器名稱
如果你在運行3個或者更多的HLTV伺服器,一個很好的方案是通過伺服器管理工具來使用RCON命令管理他們。在HLTV伺服器上開啟RCON的方法是設置"adminpassword"選項。同時"proxypassword"可以確保只有經過你授權的HLTV提供者才可以連入你的HLTV網絡。否則任何人都可以使用緩慢的HLTV代理連入你的網絡打亂你的整個網絡的負載均衡。
7、HLTV設置
一個簡單的的控制台命令語法:命令將被描述為以下形式:
command (parameter) [(parameter)] - description
一條命令或許會有一個或者多個參數。[]中的參數為可選項,一般來說參數包括:
(string) : 文字,如果文字中包含空格則必須被引號包括例如 "My Name"
(n) : 任意整數,例如:42
(f) : 任意浮點數,例如:4.2
(IP

ort) : IP地址,例如:192.168.0.1:27020
(a|b|c) : 可選擇的選項,或者a或者b或者c
注意;所有的<,>,(,),|,[,]這樣的字符是不包含在最終輸入在控制台上的命令中的。大多數命令符合布爾代數開關,即1表示打開,0表示關閉。
connect (IP

ort) - 連接HLTV代理到遊戲伺服器(默認port為27015)
disconnect - 從服務端口斷開,但是不停止廣播,所有的觀察者仍然保持連接狀態
stop - 斷開連接,同時停止廣播
quit - 退出HLTV程序
retry - 重試最後一次伺服器連接
autoretry <0|1> - 如果開啟,HLTV因為任何理由的斷開後將自動重新連接伺服器
name (text) - 設置HLTV代理計分版上的名稱
hostname (text) - 設置HLTV伺服器在伺服器列表中的名稱
serverpassword (text) - 設置遊戲伺服器連接密碼,連入需要密碼的伺服器時使用
adminpassword (text) - 設置RCON管理員和評論員密碼
proxypassword (text) - 設置其他HLTV連入的密碼
spectatorpassword (text) -設置觀察者密碼,對其他HLTV伺服器也有效
clients - 列出已經連接的觀察者
proxies - 列出已經連接的其他HLTV伺服器
players - 列出遊戲伺服器中的玩家
kick (ID) - 踢出指定名字的觀察者
bann (IP) - 禁止IP連接
say (text) - 向遊戲伺服器發送文本信息
msg (text) [(duration) (pos x) (pos y) (color hex rgba)] - 向所有的觀察者發送大屏幕信息
localmsg (text) [(duration) (pos x) (pos y) (color hex rgba)] -和msg相同,但是只對本伺服器上觀察者發送
servercmd (string) - 轉發命令給遊戲伺服器
clientcmd (group) (string) - 發送控制台命令給所有指定群組的客戶端:1=觀察者 2=其他HLTV伺服器 3=所有
loopcmd (id) (n) (string) - 這一命令將每(n)秒執行(string)中的命令。(id)取1到64中的數字來認定這條loopcmd,"loopcmd (id) none"
將取消正在循環的命令。loopcmd不帶任何參數將列出正在循環的命令。
signoncommands (string) - 本地觀察者連接後將被執行的控制台命令,多條命令可以用分號來分隔。
maxclients (n) - 設置本伺服器的觀察者數量上限(默認為128)
delay (n) - 從主HLTV上接受的遊戲數據流延遲時間,默認是30秒來消除作弊的可能,最低為10秒。
rate (n) - 遊戲伺服器發送到HLTV的帶寬速率
updaterate (n) - 從遊戲伺服器發送到HLTV的遊戲上行速率
maxrate (n) - 觀察者可用的最大帶寬速率
maxqueries (n) - 伺服器列表每秒得到的伺服器信息數量
dispatchmode (0|1|2) - 模式1(Auto)將會把連接負載自動均衡到其他HLTV伺服器,模式2(Always)將會把所有連接轉發到其他HLTV伺服器,這樣本台HLTV伺服器就成了轉發機,模式0(OFF)將不會轉發任何連接。
publicgame <0|1> - 如果public為1,遊戲伺服器的IP將能被觀察者看到,並且可以使用"joingame"命令進入遊戲伺服器。
offlinetext (string) - 如果HLTV沒有繼續轉播,觀察者被拒絕的時候將看到的文字信息。
chatmode <0|1|2> - 如果chatmode為0,觀察者不能聊天,如果是1,連入同一台伺服器的觀察者可以看到彼此之間的信息,如果是2,整個HLTV NET中所有的觀察者將能互相聊天。
bannerfile (file) - 指定一個TGA文件作為觀察者界面的LOGO。
ping (host:port) - ping一個HL伺服器
nomaster <0|1> - 是否在主WON伺服器註冊
forcemaster <0|1> - 是否強迫在主WON伺服器註冊
heartbeat - 手動發送狀態信息給WON伺服器
rcon (string) - 發送遠程命令給其他伺服器
rconaddress (IP

ORT) - 設定遠程控制目標伺服器
rconpassword (string) - 驗證遠程控制目標伺服器的密碼
cheeringthreshold (f) - number of cheering players must be above this threshold to play the cheering sound (by default 0.25).
blockvoice <0|1> - 是否過濾所有的語音數據。
cmdlist - 列出所有命令
logfile <0|1> - 開啟或關閉控制台log文件"logfile(date).log"
status - 顯示伺服器信息
modules - 顯示所有加載的HLTV模塊和版本
exec (filename) - 執行一個.cfg文件
echo (string) - 向HLTV控制台先是一條文本
developer <0|1> - 開發者模式將顯示更多的除錯信息
record (filename) - 錄製demo
stoprecord - 停止錄製demo
playdemo (filename) - 廣播一個demo文件
控制台命令通過按"TAB"可以自動完成,所有的命令都可以放在hltv.cfg文件中,每次啟動時自動執行。
一些參數只能在命令行啟動
-port (n) - 指定HLTV端口,默認為27020
-ip (IP) - 在有多IP的主機上強制使用某個IP
-comm (filename) - 設置一個master server信息文件取代woncomm.lst
-nodns - 禁用DNS解析
-maxfps (n) - 設置最大系統刷新率,默認為100
-cachesize (n) - 設置幀緩存大小,默認為32
-highpriority - 以高優先權啟動HLTV程序(僅在win32系統可用)
-steam - 伺服器支持特殊流模式
-dev - 開發者模式
上述參數在運行時不可更改,但是他們可以在config文件中指定。
所有的控制台命令也可在命令行中使用,注意在前面加上"+"
例如:
hltv.exe +connect localhost:27015 -port 27021
Half-Life伺服器可以設置sv_proxies (n)來確定允許多少HLTV伺服器連入,如果禁止HLTV連入,可以設為0,設為1意味著允許主HLTV連入。
_______________________________________________
版權所有 (2003 Valve LLC.) 翻譯整理:CGA_BADSTAR