廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 7427 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
amore12 手機 會員卡
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎 社區建設獎 優秀管理員勳章
總版主
級別: 總版主 該用戶目前上站
推文 x913 鮮花 x4338
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[] 控制軟件HLDS使用詳解

來源:Nicezbbs



這篇文章是最新發佈的HLDS 4.1.1.1/3.1.1.1中的HLTV的自訴文章翻譯而來,對簡單的HLTV架設和大規模HLTV NET的架設都有詳細地介紹。HLTV獨特的實時轉播方式注定它將會在電子競技的發展道路上的重要地位,這一點也在世界各國的CS比賽,以及國內的幾次大規模CS大賽,浩方平台的幾次轉播中得以體現。HLTV隨著HLDS 4.1.1.1/3.1.1.1的發佈也變得更加成熟,困擾大家兩年多的閃光彈bug也已經修復,但是國內很多服務器管理員和比賽組織者都不是很瞭解HLTV的用法或者只是瞭解最近本的用法,很多很有趣的功能沒有實現,基於此,將這篇很詳細的README文章介紹給大家。

  文章中一些不常用的命令可能會有一些翻譯上的錯誤,歡迎大家指出,謝謝。

1、總覽
  
Half-Lift TV提供了理論上無限制觀察者觀看在線遊戲的可能。他們可以在遊戲服務器中跟隨任一名玩家的視角。觀察者對於遊戲者來說是不可見的,也不能以任何方式干擾進行中的遊戲。每個觀察者可以選擇任意玩家的任意視角。為了獲得更有趣的觀察體驗,觀察者可以打開自動切換模式,這樣鏡頭將自動切換到以合適的角度來觀看精彩的鏡頭。這樣觀察者們就能舒服的靠在椅背上不用作任何動作。觀察者們還可以用最基本的HL Chat模式來互相溝通。
  
大多數流行的Half-Life的MOD例如CS,Team Fortress Classic,DOD都支持HLTV,HLTV的提供者擁有對HLTV系統的完全控制權,可以改變觀察者人數,添加文字信息,更換HLTV logo等等。播放的畫面可以自定義一個延遲時間,默認的是30秒,這樣可以確保正在比賽的隊伍不可能通過HLTV來得到一些有用的對手信息。建立一個單獨的支持100人的HLTV Server是很簡單的事情,不需要對默認設置作任何改變。
架設一個龐大的HLTV網絡來支持上千人的觀看需要為服務器的配置等等準備多一些的時間和經驗。

2、觀看遊戲
  
為了觀看一個HLTV,啟動Half-Life(或其他MOD包),進入多人模式,然後進入HLTV提供者提供給你的IPort,或者直接在控制台輸入(假設服務器為192.168.0.1:27020)

connect 192.168.0.1:27020

  
這樣的命令,即可進入HLTV服務器觀看比賽。
默認的HLTV端口是27020,但是這是可以更改的,通常會包括在給出的IP地址中提供。
  
你可以用不同的模式來觀看遊戲:跟隨視角,第一人稱視角,自由觀察,地圖總覽,地圖跟隨。最簡單的切換視角方法是按「跳躍」鍵(默認是空格鍵),另外一種方法是使用按「蹲下」鍵(默認是Ctrl)激活的觀察菜單,在那兒你可以定義自己的觀察風格並且開啟自動切換模式。循環按下「使用」(默認是E)可以開關畫中畫模式。

下列HL控制台命令可以在用來自定義觀察模式:

spec_autodirector <0|1> - 開啟或者關閉自動切換模式
spec_drawcone <0|1> - 在地圖總覽模式顯示你的視角範圍
spec_drawnames <0|1> - 在玩家標誌下顯示玩家的名字
spec_drawstatus <0|1> - 顯示遊戲信息(時間,地圖名稱等)
spec_pip <0|1> - 開關畫中畫功能
spec_menu - 開啟觀察者菜單
spec_help - 顯示幫助屏幕
spec_mode <1-6> [<0-4>] - 設置主顯示模式,第二個參數是設置畫中畫模式。並非所有的組合都有效。

主顯示模式:
1、鎖定跟隨 2、自由跟隨
3、自由觀察 4、第一人稱視角
5、地圖總覽 6、地圖鎖定跟隨

畫中畫模式:
0、關閉畫中畫 1、自由跟隨
2、第一人稱視角 3、地圖總覽
4、地圖跟隨
以上命令中 <>,()包括的為必填項,[]包括的為可選項,下同。

3、基本HLTV架設
  
HLTV廣播系統的核心是HLTV服務器,也稱之為HLTV代理。HLTV在控制台窗口運行,類似於HL的專業服務器。為了轉播一台指定服務器上的比賽,HLTV代理像一個普通玩家一樣連入這台服務器,然後觀察者們連入這台HLTV代理,這樣遊戲數據流就通過HLTV代理轉發到所有的觀察者客戶端。下面這個圖示就是一個基本的HLTV配置:

HL Game Server --> HLTV 代理 -->觀察者

  
HLTV代理可以支持的客戶端人數取決於服務器的硬件配置和網絡條件,理論上來說,一個單獨的HLTV可以支持最多255個觀察者,但是請注意,平均每個支持了100個觀察者的HLTV代理需要2M的帶寬才能流暢收看,如果需要支持更多的觀察者,網絡負荷必須被分部到多HLTV代理上去。
  
第一個連接到遊戲服務器上的HLTV服務器被稱為主服務器,在上面可以進行遊戲數據流的延時和發包率等綜合廣播的設置,其他的HLTV代理連入到這台主服務器上作為接替。這樣的連接數量和方式是不受限制的,可以串聯也可以並連。重要的是他們不要處於同一個網絡中,這樣才能確保帶寬被均衡使用。

                   --> HLTV 轉播服務器 1 --> 觀察者
  HL Game Server --> HLTV 主服務器 --> HLTV 轉播服務器 2 --> 觀察者
                   --> HLTV 轉播服務器 3 --> 觀察者

4、遊戲比賽轉播
  
讓我們來看一下最普通的設置,一台HLTV代理在局域網環境中。這是最普通的情況,默認的HLTV設置不需要作任何改動。選擇一台專用計算機作為裡的HLTV代理並且安裝Half-Life專業服務器版軟件,它包含了所有的HLTV代理文件。這並不需要你的計算機上安裝有Half-Life這個遊戲。
  
啟動HLTV應用程序(帶有小照相機的HL的小圖標)就能看到HLTV的控制台窗口,顯示了一些初始化信息後(如果初始化進行了很長時間,可能是HLTV不能解析出一些IP地址,那麼請在HLTV啟動命令行增加 "-nodns"參數來跳過),控制台就可以接受你的命令了,下面我們用">"來代表命令行提示符,記住你只需要輸入">"後面的字符就可以了。首先給你的HLTV代理起一個獨特的名字:

>name "My HLTV Proxy"

我們假定你的HLTV Proxy的IP為192.168.0.2,你想觀察在192.168.0.3:27015上的遊戲,那麼鍵入以下的命令使HLTV代理連入:

>connect 192.168.0.3:27015

過了一會兒HLTV完全連入服務器並且準備提供觀察者服務時,用"status"命令可以檢查HLTV代理的連接狀態:

>status

--- HLTV Status ---
Local IP 192.168.1.2:27020, FPS 72.8, Network In 0.8 Out 0.9
Local Slots 128, Spectators 0, Proxies 0
Source: Server "Half-Life" (192.168.1.3:27015)
Total Slots 128, Spectators 0, Proxies 1
Time 01:02, Game "valve", Map "maps/frenzy.bsp", Players 1

"status"命令可以顯示你的IP、每秒刷新的HLTV系統的進出流量、你的HLTV代理提供的觀察者數量,這台遊戲服務器中所有HLTV廣播系統的觀察者數量。遊戲源可以是遊戲服務器,也可以使另一台HLTV代理,甚至一個Demo文件。

5、錄製HLTV Demos
  
HLTV demo文件和普通的Half-Life遊戲錄像差不多,但是你可以選擇任意的視角和視點以及跟隨的玩家。回放一個HLTV demo的時候並不需要HLTV服務器,只要啟動Half-Life並且在控制台輸入" playdemo (demo name)"或者"viewdemo (demoname)"就可以了。錄製一個HLTV demo,需要將HLTV代理連入遊戲server,並且在控制台輸入:

>record (name)

  
發出這一命令後,所有的遊戲數據將被錄製下來,demo文件會放在當前的Mod目錄下,例如 \cstrike。所有的demo文件將被默認指定為如下格式的文件名:<名稱>-<時間>-<地圖>.dem,demo文件也記錄了一些發往觀察者的數據,這意味著,demo文件記錄了和觀察者同步的遊戲信息。

停止錄製的命令是"stoprecord"。

有的時候只需要錄製HLTV的demo而並不想進行廣播的話,可以增加這樣一些命令:

>maxclients 0 //不允許觀察者客戶端
>delay 10 //最低的延遲設置
>rate 10000 //最高的數據速率
>updaterate 20 //基本上行輸率
>nomaster 1 //不在master服務器註冊

註://後是命令註釋,在平常使用中不需要輸入

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
 (IPort) : IP地址,例如:192.168.0.1:27020
 (a|b|c) : 可選擇的選項,或者a或者b或者c

注意;所有的<,>,(,),|,[,]這樣的字符是不包含在最終輸入在控制台上的命令中的。大多數命令符合布爾代數開關,即1表示打開,0表示關閉。

connect (IPort) - 連接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 (hostort) - ping一個HL服務器
nomaster <0|1> - 是否在主WON服務器註冊
forcemaster <0|1> - 是否強迫在主WON服務器註冊
heartbeat - 手動發送狀態信息給WON服務器
rcon (string) - 發送遠程命令給其他服務器
rconaddress (IPORT) - 設定遠程控制目標服務器
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連入




獻花 x0 回到頂端 [樓 主] From:台灣數位聯合 | Posted:2006-05-05 10:16 |

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