LV. 14
GP 194

【心得】在 Win 7 下建立 TF2 SrcDS 伺服器。

樓主 遊戲‧浪人 GameRover

以下內容我用 Firefox v21.0 閱覽、複製 Source 字串,在 Windows 7 x64 實測過。
如有問題可先查閱 #2 的問答區,或在此串回覆中提出你的問題(請附上你的瀏覽器名稱瀏覽器版本Windows 作業系統版本;如需附上資料供參考時,請屏蔽隱私或資安訊息。)

(提示:部分文字有連結以提供相關參考資訊。)

嗯~會發這個文是想分享個人的經驗,讓更多人能對 TF2 SrcDS 有更多認識並讓更多人有更多的機會跳更多的坑。這文我定向於新手教學向,為了讓學習的人能有基本的認知與能力,所以以下內容會相當繁雜,可能導致新手頭昏眼花、偽新手霧裡看花,請有心理準備。
如有人想要簡單/自動版,我往後會花時間(大概十年後?)編整後放於後面(或另發文。因為我現在自己使用的 script 太複雜,簡化、最佳化也要不少時間)

後面的內容,大致上粗分以下幾個部分:
  • 了解工具:
    不了解使用的工具,就算再強大的工具也只會把自己搞慘;
    不過這裡只介紹基本概念、技巧、或注意事項而已。
  • SteamCMDTF2 SrcDS 的安裝。
  • 建立 SrcDS 初步執行環境。
  • 建立執行 SteamCMDSrcDS 啟動或更新等相關操作的 Cmd script 檔案。
  • 其他雜七雜八的資訊。
目前就僅整理出以上的內容而已,後續我可能除了依各位或自己意見做內容的編修外,可能還會追加 SourceMod (and MetaMod:Source, for TF2 部分) 等相關的各種應用內容。這些內容是我用空閒時間編寫的,所以不會很嚴謹與專業,甚至可能會有誤缺,還請見諒。
若對內容有意見歡迎提出(例如[某段內容太艱澀]、[就新手而言應該要補充說明某處]等等。),我會斟酌考量編修內容。

至於 Source Code 字串或指令字串,我會用方括弧( [ ] ) 或者單框表格框起來。在單框表格樣式下,我在開頭與結尾會多留空行以讓讀者能拖曳選取完整的內容;雖然這裡版面顯示時會自動斷行,但單框表格的內容還是維持我輸入的格式而可以直接拿來複製貼上於純文字環境(至少我在 Firefox 內操作時沒啥問題)

這是 Source Code 單框表格樣式範例



另,請不要叫我大大,把我當做平輩稱呼為浪人就好。(我沒說我很年輕,只是溝通時把我當平輩即可。另,除浪人之外的偽稱我一蓋自動腦內轉換為正稱~)

另 另,閱讀困難的話(為何會有一堆該死的顏色、括弧、與註解?嗯,這是新手教學文…而且,你不覺得嗎? XD),可多開個視窗捲動到不同位置以方便切換閱讀(例如註解;我的原則是不影響操作的參考註解就往後丟,對操作有影響的註解就內插。)(沒辦法,巴哈的系統有先天限制…不然就是我的編撰能力太爛~早就想過乾脆用網頁技術 ,不過我現在只想先隨便丟在這裡而已~) (另 另 另,這個註解…因為前面註解看起來好長好威,所以不知為何手癢再加長~        XD)

首先,了解一些工具程式:
  • Microsoft Windows 的命令提示字元(Cmd.exe,後續簡寫為 WCmd),是一個 CLI 介面,提供一個輸入文字以控制程式或系統的介面。

    (如果有心的話,我另推薦使用 Windows PowerShell。但我偏好 Linux 的那些 shell…)
    1. 若要對 WCmd 進行貼上文字的操作,請右擊視窗左上圖示後選取[編輯]>[貼上]。
      (不要用[Ctrl]+[V], WCmd 沒內建此機制。)
    2. 若要對 WCmd 進行選取或複製文字的操作,請右擊視窗左上圖示後選取[編輯]>[標記],再以左鍵拖曳框選你要的範圍後右擊任意處以複製。
      (注意,在選取/標記狀態時常會造成程式暫停! * 註解[01])
      (不要用[Ctrl]+[C], WCmd 沒內建此機制。)
    3. 個人技巧:需要的話,可以開啟純文字編輯軟體(例如記事本),把指令放進去編輯完後用複製、貼上以輸入給 WCmd;也可以用以貼入多行指令。(* 註解[02])
    4. 想中斷程式執行時,可以使用 [Ctrl]+[C] 來送出取消(cancel)信號!
    5. WCmdchcp 指令可顯示或切換 WCmd字碼頁(code page)(* 註解[03])
    6. 建議將 WCmd [版面配置] (以圖示快捷選單的[預設值]呼叫設置頁面)的 [螢幕緩衝區大小] 增加,以增加訊息閱覽視野/訊息歷程暫留量(我個人是設定寬 4096,高 8192。);記得改過後重啟 WCmd 以套用變更。
  • ValveSteamCMD,是一個使用 CLI 介面的 SrcDS 安裝與更新工具程式。詳情可參考 Valve Developer Community (wiki 架構)SteamCMD
  • 純文字編輯程式,例如 Windows 內建的記事本(Notepad)Notepad++flo's Notepad2 、或 PSPad 等程式碼編輯程式,可以建立或編輯純文字檔案。
    1. 若是給 WCmd 使用的 .Bat.Cmd 等批次執行檔案,存檔編碼要配合 Windows 系統選擇;例如你是使用台灣繁體中文系統的話要用 BIG5 (Code page 950) 編碼存檔。
    2. 若是給 PowerShell 使用的 .PS1 檔案,存檔編碼建議使用 UTF-16LE with BOM
    3. 若是給 Source 遊戲引擎使用的腳本(script)或組態(.cfg)等檔案,存檔編碼建議使用 [UTF-8 without BOM];但 Source 遊戲引擎的部分功能還是會於非 ASCII 字元處理上發生異常,所以建議檔案名稱與內容不要使用中文字元。(* 註解[04])

操作步驟:
  • 下載 SteamCMD。
    1. https://developer.valvesoftware.com/wiki/SteamCMD 下載 Windows 用的 SteamCMD (在 [Download the SteamCMD Update Tool] 一節內)
      或者用這連結直接下載。
  • 安裝、更新 SteamCMD 檔案。
    1. 本例用 [Q:\\Tool\\SteamCMD\\Run01] 安裝 SteamCMD。
      (例如,很多人都沒有儲存裝置 Q 而只有儲存裝置 C,所以此時需將本例的路徑開頭之 Q 改為 C,變成 [C:\\Tool\\SteamCMD\\Run01]。)
    2. 開啟 Windows 的 命令提示字元 ([Cmd.exe],後續簡寫為 WCmd)
      (在 Windows [附屬應用程式] 內;建議右擊該物件候選以系統管理員身分啟動 WCmd。)
      (因為操作中有使用 WCmd 的環境變數,所以開啟 WCmd 後除非完成所有操作,否則請不要中途關閉 WCmd,不然環境變數會消失而導致後續操作異常錯誤;或者你也可以自己設回環境變數以接續操作。)
    3. 在 WCmd 輸入 [set InstDrive=Q:],在 WCmd 中建立值為 [Q:] 的環境變數 [InstDrive],設定往後安裝的目的裝置,請依需求自行修改存放位置(可修改的字串用淺綠背景標明。)
      (* 註解[05])
      (例如你要裝在儲存裝置 C,就把 [set InstDrive=Q:] 指令改為 [set InstDrive=C:] 來使用;如此後面指令就會一直使用儲存裝置 C 來安裝。)
      (之後的指令,你可以用複製/貼上來輸入 WCmd;但為避免意外,建議先貼入文字編輯軟體內編輯過後,再貼入 WCmd 內。)
      (往後的 WCmd 指令輸入提示,我會使用 「輸入 WCmd:[<命令內容>], <命令說明>」 的樣式。)
    4. 輸入 WCmd:[set SCDir=%InstDrive%\\Tool\\SteamCMD\\Run01],在 WCmd 中建立值為 [Q:\\Tool\\SteamCMD\\Run01] 的環境變數 [SCDir] (縮寫概念:SteamCMD),設定 SteamCMD 的安裝目錄,可依需求自行修改存放位置(可修改的字串用淺綠背景標明。)
    5. 輸入 WCmd:[mkdir "%SCDir%"],建立 SteamCMD 執行用資料夾。
    6. 輸入 WCmd:[cd /d "%SCDir%"],切換 WCmd 的作業環境位置。
    7. 輸入 WCmd:[explorer "%SCDir%"],開啟 [Q:\\Tool\\SteamCMD\\Run01] 資料夾。
    8. 將下載的 SteamCMD 壓縮檔案解壓縮到 [Q:\\Tool\\SteamCMD\\Run01] 內。
    9. 輸入 WCmd:[steamcmd],執行 SteamCMD。
      (SteamCmd 介面會維持在 WCmd 的視窗中。)
    10. 接著 SteamCMD 會自動執行網路連線更新等動作,等待其更新完成後的 [Steam>] 提示,如下列示:
      (* 註解[06]* 註解[07])
    11. 在 SteamCMD 出現 [Steam>] 提示後,輸入 [quit] 以離開 SteamCMD。(* 註解[08])
  • 安裝、更新 Team Fortress 2 伺服器檔案。
    1. 本例用 [Q:\\Server\\TF2SrcDS\\Run01] 安裝 TF2 SrcDS。(* 註解[09])
    2. 輸入 WCmd:[set SDSDir=%InstDrive%\\Server\\TF2SrcDS\\Run01],以在 WCmd 中建立值為 [Q:\\Server\\TF2SrcDS\\Run01] 的環境變數 [SDSDir] (縮寫概念:SrcDS),設定 SrcDS 的安裝目錄,可依需求自行修改存放位置(可修改的字串用淺綠背景標明。)
    3. 輸入 WCmd:[mkdir "%SDSDir%"],建立 TF2 SrcDS 執行用資料夾。(* 註解[10])
    4. 在 WCmd 輸入下列這行命令以呼叫 SteamCMD 執行 TF2 SrcDS 的安裝:
      (版面會自動斷為兩行,其實這只有一行! * 註解[11])

      steamcmd +login anonymous +force_install_dir "%SDSDir%" +app_update 232250 validate +quit

    5. 觀察並等待 SteamCMD 完成 TF2 SrcDS 的下載與安裝;初始連線的建立可能會很久,而且目前 TF2 SrcDS 的總量大小至少超過 4 GB,所以你可以放著去喝杯茶,偶爾注意一下狀況就好。
      如果過程中有出現 Error 這個單字,表示有錯誤發生!請善用 WCmd 的文字複製功能以擷取相關資訊,如此在尋求他人幫助時可供他人參考(記得屏蔽隱私或資安資訊)
      (安裝完成後,因後續用不到,可關閉 [Q:\\Tool\\SteamCMD\\Run01] 資料夾視窗)
      這是完成時的截圖:
  • 設置 Team Fortress 2 伺服器環境與組態執行檔案。
    1. 本例用 [Q:\\Server\\TF2SrcDS\\Run01\\tf\\custom\\TF2Sv01] 安裝 SrcDS 的自訂內容。(* 註解[12])
    2. 輸入 WCmd:[set SDSCDir=%SDSDir%\\tf\\custom\\TF2Sv01],以在 WCmd 中建立值為 [Q:\\Server\\TF2SrcDS\\Run01\\tf\\custom\\TF2Sv01] 的環境變數 [SDSCDir] (縮寫概念:SrcDS Custom),可依需求自行修改存放位置(可修改的字串用淺綠背景標明。)(* 註解[13])
    3. 輸入 WCmd:[mkdir "%SDSCDir%\\cfg"],建立自訂檔案組態資料夾。
    4. 輸入 WCmd:[explorer "%SDSCDir%\\cfg"],開啟資料夾。
    5. 輸入 WCmd:[echo.> "%SDSCDir%\\cfg\\server.cfg.txt"],建立文字檔案供後續編輯。(* 註解[14]* 註解[15])
    6. 輸入 WCmd:[explorer "%SDSCDir%\\cfg\\server.cfg.txt"],使用 Windows 預設程式開啟文字檔案。
    7. 在 [server.cfg.txt] 檔案編輯中輸入下列內容(這只是簡要範例,可依自己需要修改內容。 * 註解[16]* 註解[17])

      // 這是單行註解(在[//]之後的單行內容),會被無視。
          echo    "> Loading [.\\server.cfg]."; // 在 Sv console 中提示開始載入本檔案。
      // 設定紀錄系統,紀錄的檔案在 [\\tf\\logs\\] 內。
          log "on";
          sv_log_onefile "0";
          sv_logfile     "1";
          sv_logbans     "1";
          sv_logecho     "1";

      // 下列 4 行是 Sv 內建的客端踢除/隔離系統,不要修改執行順序,會導致異常!
          exec "banned_user.cfg";
          exec "banned_ip.cfg";
          writeid;
          writeip;

      //  exec     ".\\Security.01\\Security.01.cfg"; // 個人習慣: 因為安全性理由而載入另外的檔案。例如可把 rcon_password 移到此檔案存放。
          rcon_password ""; // 設定使用遠端控制(RCon)時所需的密碼(在成對的["]雙引號字元內),請依資安原則修改為自己要用的字串;若設定為空則 Sv 拒絕所有 RCon 操作。
          sv_password ""; // 設定客端連入 Sv 時所需的密碼(在成對的["]雙引號字元內);若設定為空則連線時不需密碼。

      // Sv 的部分網路設定
          net_queued_packet_thread "1";
          net_maxfilesize "64"; // 客端下載的檔案若超過此值(單位 MB)會被拒絕。

          sv_lan "0"; // 若想讓伺服器連線至網際網路,需要設定此值為"0"。
          sv_region "4"; //Region Codes: 設定 Sv 所在地提示:
      //      0- Us Eastcoast.
      //      1- US Westcoast.
      //      2- South America.
      //      3- Europe.
      //      4- Asia.
      //      5- Australia.
      //      6- Middle East.
      //      7- Africa.
      //      255- World?


          sv_allowdownload "1";
          sv_allowupload   "1";
          sv_downloadurl ""; // 如果你有提供 http 模式的檔案下載,可以在這輸入你的路徑。留空表示直接從 Sv 內容下載。

          sv_pure "0"; // 設定伺服器對客端的自訂內容管制,影響客端 Mod 的使用。
          sv_allow_wait_command "1"; // 允許客端使用 [wait] 命令。

          sv_cheats "0"; // 設定是否允許使用 Sv 的作弊指令。

          sv_alltalk "0"; // 設定 Sv 語音通訊使否使用全頻模式(即 Sv 內所有人可互相聊天)。
          tf_teamtalk "0"; // 設定隊友間語音通訊使否使用全頻模式(即死亡的人可以與活著的隊友互相聊天)。


          mapcyclefile    "mapcycle.txt";     // 設定 Sv 使用的地圖清單,路徑為[\\tf\\cfg\\mapcycle.txt]。
          motdfile     "motd.txt";         // 設定 Sv 使用的 MOTD,路徑為[\\tf\\cfg\\motd.txt]。
          motdfile_text   "motd_text.txt";    // 設定 Sv 使用的純文字 MOTD,路徑為[\\tf\\cfg\\motd_text.txt]。


          hostname "我的私人 TF2 伺服器"; // 伺服器名稱,請隨意自訂。

      //  exec    ".\\Server.01\\SvInit.01.cfg"; // 載入另外的檔案。
      //  say     "> [.\\server.cfg] was loaded."; // 在客端提示本檔案的載入完成。
          echo    "> [.\\server.cfg] was loaded."; // 在 Sv console 中提示本檔案的載入完成。

    8. 將 [server.cfg.txt] 檔案以 [另存新檔] (Save as...) 方式 (有的程式是在工具列或 [File] 子選單內提供 [Encoding] 選項設定),選用 [UTF-8 Without BOM] 編碼儲存。
    9. 輸入 WCmd:[rename "%SDSCDir%\\cfg\\server.cfg.txt" "server.cfg"],將 [server.cfg.txt] 改名為 [server.cfg] 以供 SrcDS 執行時使用。
  • 建立啟動 SrcDS 的批次檔案:
    1. 在 WCmd 以貼上方式輸入下列指令:

      set TargetFile="%USERPROFILE%\\Desktop\\ExecTF2SrcDSRun01.Cmd"
      echo @echo off>%TargetFile%
      echo set LastDir5yLoc4n=^%CD^%>>%TargetFile%
      echo set SteamCMDDir=%SCDir%>>%TargetFile%
      echo set SteamCMDExe=steamcmd.exe>>%TargetFile%
      echo set SrcDSDir=%SDSDir%>>%TargetFile%
      echo set SrcDSExe=srcds.exe>>%TargetFile%
      echo set SrcDSExePar5r= -console -nocrashdialog -game ^"tf^" -port ^"27015^" -secure -tickrate ^"66^" +map ^"pl_goldrush^" +maxplayers ^"24^">>%TargetFile%
      echo set SrcDSStartPar5r= /High /Wait>>%TargetFile%
      echo.>>%TargetFile%
      echo echo [^%date^%][^%time^%] Execute SrcDS as [start ^%SrcDSStartPar5r^% ^%SrcDSExe^% ^%SrcDSExePar5r^%]@[^%SrcDSDir^%]>>%TargetFile%
      echo cd /d ^"^%SrcDSDir^%^">>%TargetFile%
      echo start ^%SrcDSStartPar5r^% ^%SrcDSExe^% ^%SrcDSExePar5r^%>>%TargetFile%
      echo echo [^%date^%][^%time^%] SrcDS Stoped.>>%TargetFile%
      echo cd /d ^"^%LastDir5yLoc4n^%^">>%TargetFile%
      echo pause>>%TargetFile%
      echo @echo on>>%TargetFile%

    2. 你會在桌面上看到 [ExecTF2SrcDSRun01.Cmd] 的執行檔案,這就是可供你編輯或執行 SrcDS 的一個基本執行檔案了。
    3. 右擊該檔案,選用 [編輯] 開啟檔案(你也可以使用你想用的文字編輯程式)
    4. 檢查檔案內容並依需求修改:
      • [set SteamCMDDir=Q:\\Tool\\SteamCMD\\Run01] 設定 SteamCMD 的路徑位置。
      • [set SteamCMDExe=steamcmd.exe] 設定 SteamCMD 的執行檔名稱。
      • [set SrcDSDir=Q:\\Server\\TF2SrcDS\\Run01] 設定 SrcDS 的路徑位置。
      • [set SrcDSExe=srcds.exe] 設定 SrcDS 的執行檔名稱。
      • [set SrcDSExePar5r= -console -nocrashdialog -game "tf" -port "27015" -secure -tickrate "66" +map "pl_goldrush" +maxplayers "24"] 設定 SrcDS 的執行參數,其中:
        • [-port "27015"] 設定使用的網路連接埠。
        • [-secure] 設定啟用 VAC 功能。
        • [-tickrate "66"] 設定資料處理頻率。
        • [+map "pl_goldrush"] 啟始後設定使用地圖。
        • [+maxplayers "24"] 啟始後設定最大連線人數。
      • [set SrcDSStartPar5r= /High /Wait] 設定 SrcDS 的 start 啟動參數。
    5. 檢查/編輯完內容後(此檔編碼應為 BIG5ANSI),可把這檔案移到其他你想放的位置並用以執行(須以系統管理員身分執行,不然會異常!)。建議備份此檔案以備不時之需。
  • 建立更新 SrcDS 的批次檔案。
    1. 在 WCmd 以貼上方式輸入下列指令:

      set TargetFile="%USERPROFILE%\\Desktop\\UpdateTF2SrcDSRun01.Cmd"
      echo @echo off>%TargetFile%
      echo set LastDir5yLoc4n=^%CD^%>>%TargetFile%
      echo set SrcDSDir=%SDSDir%>>%TargetFile%
      echo set SrcDSExe=srcds.exe>>%TargetFile%
      echo set SteamCMDDir=%SCDir%>>%TargetFile%
      echo set SteamCMDExe=steamcmd.exe>>%TargetFile%
      echo set SteamCMDExePar5r= +login anonymous +force_install_dir ^"^%SrcDSDir^%^" +app_update 232250 validate +quit>>%TargetFile%
      echo.>>%TargetFile%
      echo echo [^%date^%][^%time^%] Execute SteamCMD as [^%SteamCMDExe^% ^%SteamCMDExePar5r^%]@[^%SteamCMDDir^%]>>%TargetFile%
      echo cd /d ^"^%SteamCMDDir^%^">>%TargetFile%
      echo ^%SteamCMDExe^% ^%SteamCMDExePar5r^%>>%TargetFile%
      echo echo [^%date^%][^%time^%] SteamCMD Stoped.>>%TargetFile%
      echo cd /d ^"^%LastDir5yLoc4n^%^">>%TargetFile%
      echo pause>>%TargetFile%
      echo @echo on>>%TargetFile%

    2. 你會在桌面上看到 [UpdateTF2SrcDSRun01.Cmd] 的執行檔案,這就是可供你編輯或更新 SrcDS 的一個基本執行檔案了。
    3. 右擊該檔案,選用 [編輯] 開啟檔案(你也可以使用你想用的文字編輯程式)
    4. 檢查檔案內容並依需求修改:
      • [set SrcDSDir=Q:\\Server\\TF2SrcDS\\Run01] 設定 SrcDS 的路徑位置。
      • [set SrcDSExe=srcds.exe] 設定 SrcDS 的執行檔名稱。
      • [set SteamCMDDir=Q:\\Tool\\SteamCMD\\Run01] 設定 SteamCMD 的路徑位置。
      • [set SteamCMDExe=steamcmd.exe] 設定 SteamCMD 的執行檔名稱。
      • [set SteamCMDExePar5r= +login anonymous +force_install_dir "%SrcDSDir%" +app_update 232250 validate +quit] 設定 SteamCMD 的執行參數。
    5. 檢查/編輯完內容後(此檔編碼應為 BIG5ANSI),可把這檔案移到其他你想放的位置並用以執行(建議以系統管理員身分執行。)。建議備份此檔案以備不時之需。
  • 以上為基本設置的簡要(?)操作,往後你可以使用剛剛的 [ExecTF2SrcDSRun01.Cmd] 與 [UpdateTF2SrcDSRun01.Cmd] 來進行執行與更新 TF2 ScrDS 了。
  • 最後,注意事項!
    1. 記得執行 SrcDS 前確認 TF2 client 未執行。
      (client,客端,這裡指玩遊戲的電腦端點)
      因為 SrcDS 預設使用網路 Port 27015 為通訊埠,而 TF2 client 本身具 Sv 運作能力故也會占用 Port 27015。如果 TF2 client 先佔用時 SrcDS 會不得不另找通訊埠使用,如此當其他的 TF2 client 用預設的 Port 27015 連入時會連不到 SrcDS 而是連到 TF2 client 因而導致異常。
    2. 我在批次執行檔案的結尾有放暫停(pause)的命令以供使用者在此時觀察 WCmd 歷程(用捷徑方式就會直接消失而看不到可能的錯誤訊息,所以我不想用),而且可以右擊使用管理員身分執行(或另用設定有管理員權限的連結)。雖然如此,但我還是建議使用具系統管理員權限的 WCmd 呼叫使用(這只是我的習慣,而且可以避免中途發生錯誤時 WCmd 會自動關閉而遺失錯誤資訊;你想無視掉也可以)

註解:

註解[01]
注意,在選取/標記狀態時常會造成程式暫停!暫停與否跟程式碼設計有關。所以在標記 SrcDS 時候,SrcDS 會被 WCmd 的選取/標記狀態導致暫停,進而造成客端一時的停止(因為收不到 SrcDS 的資料)並等待 SrsDS 回應。所以在 [\\tf\\logs\\] 內挖不到歷程記錄而一時有必要時,你可以用快捷選單的快速鍵來快速複製 SrcDS console 全部內容以縮短暫停時間:
[右擊視窗圖示]>[E]>[S]>[右擊視窗圖示]>[E]>[Y]
(流程示意: [快捷選單]>[編輯]>[全選]>[快捷選單]>[編輯]>[複製])

註解[02]: 給新手的警告。
要注意貼入多行指令後,執行時發生錯誤還是會繼續後續的指令,所以除非有必要或你知道你在做啥,不然還是逐行輸入比較安全!

註解[03]: WCmd 字碼頁的切換。
會提到這個的原因是因為 SteamCmd 執行時會使用 UTF-8 (code page 65001);如遇到意外而 WCmd 的字碼頁維持在 UTF-8 時,可輸入 [chcp 950] 以切換回繁體中文系統預設字碼頁(BIG5, code page 950)
如果是 WCmd 內容顯示 CP65001,而 WCmd:[chcp] 顯示 [950] 時,試試依序輸入: WCmd[chcp 65001], WCmd:[chcp 950];以使 WCmd 字碼控制/切換功能回復正常。
如果遇到更麻煩的如每次啟動都是在非預設字碼頁時,就可能要修改 Windows Registry 了;有需要時可找我問。(因為我上次 google 不到結果,後來自己檢查系統時才發現)

註解[04]: 個人習慣。
我自己倒是有在一些檔案內的註解中使用中文字元,主要是用以讓文字編輯軟體在開啟檔案時能自動檢測以 UTF-8 開啟/編輯檔案,另並測試 Source engine 的相容性。

註解[05]: WCmd 的環境變數概念。
在 WCmd 中,可使用 [set VarName=VarStr] 來建立變數值為[VarStr]而變數名為[VarName]的環境變數。如此往後要使用 [VarStr] 時,只要指令中使用 [%VarName%] 字串(注意,要呼叫變數值時,要用[%]含括住), WCmd 會先用 [VarStr] 取代掉 [%VarName%] 後再執行指令。例如:
WCmd:[set FirePath=C:\\Dir 01\\Dir 02\\Fire.txt], 設定環境變數。
(注意,使用 set 時不要把前面的變數名用[%]含括住,不然會變數名會被 WCmd 判斷找值來取代;除非你真要這麼做!)
WCmd:[echo "%FirePath%"], 顯示 ["C:\\Dir 01\\Dir 02\\Fire.txt"]
使用 [set] 要注意:若 [=] 前後有空白字元,會被識別為變數名/值的一部份。
例如 [set MyName = John],會建立變數值為 [ John] 而變數名為 [MyName ] 的環境變數。
如對 WCmd 語法有興趣,除了內建 help 外,也可參考 Windows CMD Shell Command Line Syntax @ ss64.com

註解[06]: 啟動 Windows 的自動偵測 Proxy 組態功能。
注意!此時若發生連線問題時,可試試後續步驟:請針對你 Windows 連到網際網路所使用的連線(例如你用 ADSL 撥接來連上網路,就要對那個 ADSL 設定。若 Windows 不用撥接而是由數據機自己撥接的,就要看數據機的運作機制或是在 Windows 的 LAN 部分設定,因為一般此種狀況下的網際網路連線是透過 LAN 中的數據機路由出去的。),將 Proxy 的自動偵測組態的功能啟動,讓 Windows 自動預啟 SteamCMD 連線時所需要的 API 功能(網域名稱轉換),這樣 SteamCMD 或許能正常連線。(當然還有其他方式可避免 DN 解譯失敗的問題,例如修改 hosts 檔案,不過我不建議就不提了。)

另,網路上是有人提到要順便把[安全性]中[網際網路]的安全等級調低,但我個人沒有調整這部分也認為沒必要;除非真的沒辦法才需試試,要記得調回來就好

註解[07]: WCmd 外觀變化的說明。
此時若有發生字型、視窗大小變化等外觀變化,只是因為 SteamCMD 將 WCmd 運作環境使用的字碼由 BIG5 (Code Page 950) 轉為使用 UTF-8 (Code Page 65001)。離開 SteamCMD 後就會回復正常了。當然你也可以在此時右擊視窗左上圖示,選取 [內容] 以修改顯示外觀。

註解[08]
當然你也可以在離開 SteamCMD 前繼續後續你想要的操作,不過本範例只是基礎教學,就不對後續的操作多做著墨了。

註解[09]: SteamCMD 的操作方式簡介。
除了在 SteamCMD 中輸入指令以安裝、更新伺服器程式外,還提供啟動參數控制或腳本控制的方式。在此舉出此兩種搭配 Windows 捷徑的方式,你依需求則一使用即可。
(我自己則還是偏好使用 WCmd 做操作。)

  • 方式01: 啟動參數控制
    1. 在桌面上右擊空白處,選取[新增]>[捷徑],內容輸入下面這行:

      "Q:\\Tool\\SteamCMD\\Run01\\steamcmd.exe" +login anonymous +force_install_dir "Q:\\Server\\TF2SrcDS\\Run01" +app_update 232250 validate +quit

    2. 輸入你想要的捷徑名稱(例如 [UpdateTF2SrcDSRun01])後選取[完成]。
    3. 往後你就可以用這捷徑來安裝或更新 TF2 SrcDS。
  • 方式02: 腳本控制
    1. 開啟 [Q:\\Tool\\SteamCMD\\Run01] 資料夾
    2. 建立名為 [UpdateTF2SrcDSRun01.Txt] 的文字檔案。
    3. 用文字編輯器編修內容(如對指令有興趣,可以在 SteamCMD 內應用 helpfind 這兩個指令。)

      //
      //     UpdateTF2SrcDSRun01.Txt
      //
      @ShutdownOnFailedCommand 1 //     set to 0 if updating multiple servers at once
      @NoPromptForPassword 1
      //login <username> <password>
      login anonymous
      force_install_dir "Q:\\Server\\TF2SrcDS\\Run01"
      app_update 232250 validate
      quit

    4. 將 [UpdateTF2SrcDSRun01.Txt] 檔案以 [UTF-8 without BOM] 編碼儲存。
    5. 在桌面上右擊空白處,選取[新增]>[捷徑],內容輸入下面這行:

      "Q:\\Tool\\SteamCMD\\Run01\\steamcmd.exe" +runscript "./UpdateTF2SrcDSRun01.Txt" >> Log_TF2Run01.txt

    6. 輸入你想要的捷徑名稱(例如 [UpdateTF2SrcDSRun01])後選取[完成]。
    7. 往後你就可以用這捷徑來安裝或更新 TF2 SrcDS。

註解[10]
其實用 SteamCMD 安裝 TF2 SrcDS 時,若找不到 SrcDS 資料夾時會自動嘗試建立該資料夾;但目錄名稱會變成全小寫(可能是為了避免一些識別錯誤),所以我先用 mkdir 指令建立目錄。

註解[11]
如需指令參數的詳細說明,可參考 SteamCMD

註解[12]
基於 SteamPipe自訂內容功能(其實就原理而言這是完全的誤稱,只是我現在喜歡這樣誤用)有著自訂檔案獨立於更新之外等好處,本次範例應用 SteamPipe 的自訂內容功能來進行;後續註解會有較為詳盡的解釋(* 註解[14])。另,資料夾名稱 ([TF2Sv01]) 可依自己喜好改用,本範例內容皆為個人喜好而已。

註解[14]: Custom 的目錄結構對應簡介。
在本範例中,[Q:\\Server\\TF2SrcDS\\Run01\\tf\\custom\\TF2Sv01] 節點是對應於 [Q:\\Server\\TF2SrcDS\\Run01\\tf]。所以檔案 [Q:\\Server\\TF2SrcDS\\Run01\\tf\\custom\\TF2Sv01\\cfg\\server.cfg] 便對應於 [Q:\\Server\\TF2SrcDS\\Run01\\tf\\cfg\\server.cfg];而 TF2 SrcDS 啟動時便會載入 [Q:\\Server\\TF2SrcDS\\Run01\\tf\\custom\\TF2Sv01\\cfg\\server.cfg] 的內容。
(那如果 [\\tf\\custom\\] 內的相異兩個資料夾下在相同對應位置有內容不同的同名檔案時?歡迎你自己測試後回報給我~我沒試過也懶的試這個。)

註解[15]
基於 SteamPipe自訂內容功能的特性,你也可以把地圖檔案放在資料夾 [Q:\\Server\\TF2SrcDS\\Run01\\tf\\custom\\TF2Sv01\\maps] 或另一個在[\\tf\\custom\\]內的資料夾中,只要路徑對應好就行(* 註解[14]), SrcDS 會自動存取,若有客端要下載地圖時也會順利運作。另,因為我測試 SourceMod 的當時,SourceMod 尚未完整支援/整合 SteamPipe 的自訂內容功能,所以你使用 SourceMod 與其下插件時最好還是照安裝說明指示的路徑安裝。而 MetaMod:Source 倒是可以放在 [\\tf\\custom\\] 內,沒啥問題。

註解[16]
其實,[server.cfg] 這個是 SrcDS 啟動後自動讀取並用以執行的腳本檔案(而且每次換地圖時會重新執行此檔案內容),所以內容可以放 SrcDS 啟動後你想讓他執行的指令而不限於 ConVar(Console Variable,也有被縮寫為 CVar,意指主控台的變數。) 的設定。
(另,SrcDS 也可以由啟動參數輸入初始化時用以執行的命令,例如[+maxplayers "24"])
若想知道其他的 ConVar 或命令可在 SrcDS console (主控台) 中使用 [help]、[find]、[find_ent] 等指令查詢(可參考 Developer Console # Commands and variables)
或參考 Category:Console_Variables,但注意內容可能混雜到第三方 Mod 的內容。
另也可參考精華區的內容。

註解[17]
設定中的檔案說明:
  1. 檔案[\\tf\\cfg\\mapcycle.txt]: 這是 TF2 SrcDS 的 CVar:[mapcyclefile] 所預設讀取的地圖循環清單檔案;若找不到 mapcyclefile 所指定的檔案時,會去讀取 [\\tf\\cfg\\mapcycle_default.txt] 的內容。
  2. 檔案[\\tf\\cfg\\motd.txt]: 這是 TF2 SrcDS 的 CVar:[motdfile] 所預設讀取的 MOTD (Message Of The Day, 今日訊息,剛進入伺服器時顯示的歡迎頁面) 檔案;若找不到 motdfile 所指定的檔案時,會去讀取 [\\tf\\cfg\\motd_default.txt] 的內容。這檔案可使用 HTML 語法,檔案大小有限制(1KB),若要使用中文字元記得選用 [UTF-8 Without BOM] 編碼儲存該檔案。
  3. 檔案[\\tf\\cfg\\motd_text.txt]: 這是 TF2 SrcDS 的 CVar:[motdfile_text] 所預設讀取的純文字版 MOTD 檔案;若找不到 motdfile_text 所指定的檔案時,會去讀取 [\\tf\\cfg\\motd_text_default.txt] 的內容。這檔案的檔案大小有限制(1KB),若要使用中文字元記得選用 [UTF-8 Without BOM] 編碼儲存該檔案。

最後,本串 #2 . 還有提供一些無關痛癢的參考資料,有興趣可以看一下。

更新紀錄:
  • [+][2013.07.26]: 增修檔案 [server.cfg] 的內容與相關註解。


板務人員:

767 筆精華,03/18 更新
一個月內新增 0
歡迎加入共同維護。


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】