Steamworks 文獻庫
開發人員用初步指南

概覽


Steam 輸入 API 旨在讓您輕鬆地在遊戲中完全支援 Steam 輸入裝置。 我們對於完全支援的定義如下:

  • 當遊戲顯示輸入提示時,使用的是正確的控制器專用字符
  • Steam 輸入配置畫面中,使用的是玩家在遊戲中執行的動作,而非按鍵或按鈕
  • 已為您支援的控制器發佈了官方配置
  • 您的遊戲並不限制使用者自訂控制方式。 這意味著遊戲允許同時以滑鼠,鍵盤或遊戲手把的任意混合進行輸入
  • 當您的遊戲要求鍵盤輸入時(例如為化身命名時),使用的是 API 來自動叫出文字輸入介面
  • 您的遊戲不需要滑鼠或鍵盤輸入啟動器——當然,沒有任何啟動器就更好了

為確保使用者在沙發上能獲得良好的體驗,我們另提出以下建議:

  • 讓您的介面在數公尺遠的地方都能清晰可見。 我們的準則:當您的遊戲在 1920 x 1080 解析度下執行時,字體大小應至少為 24 像素
  • 在使用者執行 Steam Big Picture 模式的情況下,預設以全螢幕模式執行遊戲(設定「SteamTenfoot」環境變數)
  • 額外加分:遊戲首次啟動時會自動偵測使用者的螢幕解析度,並配合螢幕調整解析度

常見使用案例

我會在推出遊戲新增 Steam 輸入 API 支援


好極了! 請按照實作 Steam 輸入 API 支援的技術性步驟操作。

我會在新增其它輸入程式庫時一併新增 Steam 輸入 API 支援


同時推出傳統的遊戲手把輸入和 Steam 輸入是完全沒問題的。如果您是在首次發行後才新增 Steam 輸入 API 支援,或在多個平台上推出遊戲,便會比較容易遇到這樣的情況。 以下是一些要留意的事項:

1. 慎加考慮類比動作的用途
我們稍後將會更詳細地說明這個主題,以下是簡短的摘要:
  • 您總應該包含滑鼠的動作方式,以供游標或精確的視角控制使用。 使用搖桿位置來進行方向瞄準的雙搖桿或運動遊戲,就可能不需要包含類滑鼠輸入
  • 如非必要,請避免使用系統滑鼠(「os_mouse」選項)。 為確保良好的使用者體驗,能夠分辨輸入是來自實體滑鼠還是來自控制器是很重要的
  • 您應該依賴設定器提供靈敏度(即不過濾收到的 Steam 輸入資料)為 Steam 輸入使用與系統滑鼠不一樣的專用靈敏度選項,二擇其一

2. 搖桿的自動瞄準應保持一致
如在 XInput 類比搖桿上套用了任何自動瞄準或瞄準輔助,請考慮在 Steam 輸入裝置上也一併套用,或至少套用至透過 Steam 輸入配置的傳統控制器模型。 您可以呼叫 GetInputTypeForHandle 來判斷控制器的型號類型,或實作個別的滑鼠方式和搖桿方式鏡頭動作。

3. 盡可能使用 SDL 2.0.8 或以上版本
若您在使用 SDL(Simple DirectMedia Layer),其中一個最受歡迎的跨平台遊戲收藏庫來處理輸入等等的操作,請確保使用最新的版本,或至少使用 2.0.8 或以上版本。 此版本允許 Steam 通知 SDL,以忽略透過 Steam 輸入設定的控制器輸入,從而避免產生二次輸入的錯誤。

4. 為 Xbox 控制器作好計劃
若您的遊戲已經推出並支援 XInput,建議在預設下把 Xbox 控制器保留在 XInput 路徑。 但如果是單機多人遊戲,請確保遊戲能夠同時接受兩個輸入路徑,或所有控制器都能選擇 Steam 輸入。

我希望讓不使用 Steam 輸入 API 的遊戲也能透過 Steam 輸入順暢地遊玩


首先,我們十分建議閱讀 Zach Burke 的《The Five Golden Rules of Input》

以下為那些規則的總結:

  1. 畫面上的圖示應與輸入裝置上的一致
  2. 滑鼠游標應與輸入裝置一致
  3. 所有裝置應永遠在運作狀態
  4. 方向鍵、類比搖桿,和滑鼠皆可用於選單導向
  5. 與手把失去連線時,應隨之暫停遊戲

我們建議盡可能遵循以上良好的一般守則。 此外,我們希望強調:

手把和滑鼠輸入應可同時使用

大部份遊戲允許滑鼠輸入或遊戲手把輸入,但兩者不能同時使用,而這就是導致 Steam 輸入系統相容性問題的主因。

另外:

  1. 為所有類型的控制器設定建議的控制器配置
    如此一來 Steam 便不須在遊戲啟動時提示使用者選擇配置。 順帶一提,您不須為 Xbox 360 和 Xbox One 控制器分別提供配置——僅須提供其一即可,兩者的配置是兼容的。
  2. 為您不提供原生支援的控制器類型選擇使用 Steam 輸入
    如果不內建支援某些類型的控制器,您應該使用合作夥伴網站為這些控制器選用 Steam 輸入。 相關詳情請見此段落的結尾部分。
  3. 如果您不支援同時使用遊戲手把與滑鼠……
    ……至少讓搖桿的死區、加速,和靈敏度可供配置。 觸控板的搖桿模擬是由快速撥動虛擬搖桿實現的,因為對此類設定非常敏感。 為達到良好效果,便須允許高靈敏度、死區能至 0,以及直線的加速曲線。 《Shadow of War》的控制器即為很好的範例。
  4. 允許使用者透過選單選擇 Xbox 或 PS4 字符,或透過我們的 API 來偵測裝置類型
    當 Steam 傳送遊戲手把輸入時,遊戲會將其顯示為一般的 Xbox 控制器輸入,而非普通的裝置。 此功能很有用,因為這讓玩家能使用一般無法使用的裝置,但如此一般的 USB 裝置 ID 檢查等功能便無法使用,您將需要從 Steam 呼叫協助程式函式。 請特別留意,當使用者在用 Steam 遠端暢玩串流遊戲時,或選用了 Steam 輸入來重新設定裝置的話,即使是內建支援的控制器也可能會透過 Steam 輸入在遊戲中顯示。

您可以在 Steam 輸入遊戲手把模擬 - 最佳作法頁面上閱讀更多有關資訊。

文字輸入


螢幕上的文字輸入技術嚴格說來並不是 ISteamInput 的一部份,而是能在 ISteamUtils 下找到。

一些快速參考如下:

不論使用 Steam 輸入與否,這些內容仍然可能對您有用。

實作 Steam 輸入 API 支援


實作過程很簡單,需要的時間應該不會超過幾天。 所需四個步驟如下:

  1. 在文字編輯器中,建立一個遊戲內動作檔案,讓 Steam 知道玩家能在您的遊戲內將什麼動作綁定到控制器上。
  2. 在 Steam 中,使用 Steam 輸入設定器介面建立您的預設的配置。
  3. 在遊戲中,使用 Steam 輸入 API 來讀取控制器上的操作,檢索並顯示適當的字符。
  4. 使用新的二進位檔來更新您的遊戲 Depot ,並將您的配置發佈為官方配置。

第 1 步 - 建立遊戲內動作檔案


首先下載原始的遊戲內動作(IGA)檔案。 將檔案置於您的「\controller_config」路徑下(若此路徑不存在需先另建立)。 將檔案重命名為:「game_actions_X.vdf」,其中 X 是您遊戲的 Steam AppID。 若您不知道您遊戲的 Steam AppID 是什麼,登入您的 Steam 合作夥伴網站即可尋得。

現在,在您常用的文字編輯器中打開該檔案。 該檔案採用標準的 Valve 格式,我們稱為 KeyValues,它是一個簡單並容易閱讀的格式。 下載我們其中一個遊戲內動作檔案範本《Portal 2》IGA 作參考,亦可能對您有幫助。

詳情請見遊戲內動作檔案

檔案格式


IGA 檔案有一個「動作」區塊,列出您的遊戲中所有的遊戲內操作組合(IGAS)。 IGAS 描述玩家在一些遊戲情境下能採取的所有動作——例如當玩家在載具中、在步行、或在瀏覽選單系統時。 在每項 IGAS 中,Steam 輸入設定器介面都會提供一個分頁,讓玩家自訂動作如何綁定至控制器。

IGA 檔案內的 IGAS 項目應包含「title」索引碼和值,還有以下的子區塊:「StickPadGyro」、「AnalogTrigger」和「Button」。 「StickPadGyro」和「AnalogTrigger」區塊各包含一個 IGA 列表,玩家僅能將其分別分配至搖桿 / 觸控板 / 陀螺儀和類比板機鍵。 「Button」區塊包含只可綁定至數位輸入(如 ABXY 實體按鍵、在 ABXY 模式下的觸控板,或沒有用作 AnalogTrigger 動作的板機鍵)的 IGA。

設計您的 IGA

請花點時間思考一下您遊戲的功能性——遊戲包含多少種不同的模式? 在您希望有不同的控制方式的每個地方,都需要建立一套操作組合。 大部份遊戲至少有不同的「選單」和「遊戲內」的操作組合,但很多遊戲會需要更多。 您的遊戲有沒有任何特殊情況,例如需要操控載具,或有地圖或物品庫畫面等的專門遊戲內選單?將類似情況組成操作組合可能會有用。

但並非所有情況都需要組成獨立的操作組合,您亦可使用操作組合階層處理類似模式。 舉例來說,若可在遊戲內駕駛車和船的話,建議包含一個「載具」操作組合,並把一個「船」或「車」的操作組合階層置於上方。 操作組合階層會保留任何母操作組合的設定,而且能讓開發團隊和使用者更容易理解和編輯配置。

更多操作組合階層的詳情請見:操作組合階層

動作的數量限制

目前動作的最大數量為 16 項類比和 128 項數位動作。 請謹記操作組合之間可共用動作,因此大部分狀況下,您只需要最大動作數量的一部分即可。 當然,這並非硬性規定。如果您確實需要更大數量的動作,請聯繫我們。

Button 動作


「Button」動作的格式如下:

"<action name>" "#<localization key>"

<action name> 是與 Steam 輸入 API 對話時,在遊戲程式碼中需要提及這個動作時使用的內部名稱。 <localization key> 是在地化區塊的項目名稱(請見「新增在地化內容」)。 請確保在地化索引碼以「#」字元開始。

AnalogTrigger 動作


「AnalogTrigger」動作的格式與「Button」的一樣。 「AnalogTrigger」動作是遊戲將解譯為完全類比輸入的動作,例如載具加速。 若沒有這類輸入,請將此區塊留空。 Steam 輸入設定器介面會讓玩家分配任何「Button」動作至沒有用於「AnalogTrigger」動作的實體板機鍵。

StickPadGyro 動作


「StickPadGyro」動作的格式如下:

"<action name>" { "title" "#<localization key>" "input_mode" "<analog mode>" }

<action name><localization key> 跟「Button」格式中的對應索引碼一樣。 <analog mode> 會告訴我們如何解譯來自實體控制的資料,再將其資料透過 Steam 輸入 API 傳送至您的遊戲。

有效的 <analog modes> 為:

  • 「absolute_mouse」 - 預期動作與滑鼠類似時適用。 適用於第一或第三人稱視角,或使用實際的滑鼠游標
  • 「joystick_move」 - 使用動作來移動角色時適用

「absolute_mouse」 vs 「joystick_move」

當為第一或第三人稱遊戲或任何主要使用游標的遊戲建立視角輸入時,務必包含一個「absolute_mouse」類型動作,把它當成滑鼠來回應差異,因為實踐優質的陀螺儀瞄準和觸控板輸入需要 1:1 的資料,這一點非常重要。 Steam 輸入能為您把搖桿輸入從遊戲手把轉換成「absolute_mouse」樣式輸入,但因為遊戲套用了加速曲線和感應死區,所以無法反向轉換。

若希望與遊戲主機組建有完全同位的搖桿瞄準,那包含一個「joystick_move」樣式動作是沒問題的,但請測試以確保您可以同時接收來自 「absolute_mouse」「joystick_move」的輸入,使 PlayStation 和 Switch 控制器都能在使用搖桿的同時使用陀螺儀瞄準。 建議也為「重置視角」設立一個數位動作,以重新置中鏡頭的垂直位置。 若您為 XInput 控制器啟用了自動瞄準,請透過 Steam 輸入 API 將相同邏輯套用至搖桿輸入,並考慮將較小量的自動瞄準套用至觸控板 / 陀螺儀瞄準。

使用「absolute_mouse」作為 StickPadGyro 動作輸入時,有一個可選用的設定。 若您把「os_mouse」索引碼設定為「1」,玩家的輸入將會傳送至作業系統以及您的遊戲。 若您有該以此動作控制的可見作業系統滑鼠游標,這設定會很有用。

範例如下:

"menu_mouse" { "title" "#Menu_Mouse_Title" "input_mode" "absolute_mouse" "os_mouse" "1" }

警告

  1. 我們強烈不建議將「os_mouse」選項用於控制視角。 請留意,如果您的遊戲中有特定部分難以靠補釘修正,仍然可以擁有僅用於選單中的獨立類比動作,而非位於 遊戲內操作組合中。
  2. 使用「os_mouse」會導致您的控制器輸入受遊戲內滑鼠靈敏度控制,且只能用於單人單機的玩家。

第 1.1 步 - 新增在地化內容


在您的 IGA 檔案內的「在地化」區塊包含一列語言,而每個語言皆為一個包含在地化索引碼和值的區塊。 例如:

"localization" { "english" { "Action_Jump" "Jump" "Action_Camera" "Camera" } "german" { "Action_Jump" "Springen" "Action_Camera" "Kameraansicht" } }

然後在您的 IGA 檔案裡,將希望使用的在地化索引碼指定給相對的動作,作為動作的名稱,並在開頭加上「#」字元。 以下為一些使用上方在地化索引碼的範例動作:

"StickPadGyro" { "Camera" { "title" "#Action_Camera" "input_mode" "absolute_mouse" } } "Button" { "Jump" "#Action_Jump" }

若於在地化區塊中找不到遊戲執行的語言,英文將用作遞補語言。 若沒有英文,將直接顯示原字串。 欲了解更多有關支援的語言的詳情,請見完全支援的語言

第 1.2 步 - 標題和描述


配置還需要一個在地化的標題和描述。 如果您只會為遊戲建立一個單一的官方配置,則不需要擔心這一點,我們會提供一個預設的標題和描述,您可以完全跳過此步驟。 但如果您希望有多個遊戲官方配置,那您將需要為配置提供在地化標題和描述。

配置標題和描述應與其餘的在地化索引碼列在一起。 標題索引碼需以 「Title_」開頭,而描述索引碼需以「Description_」開頭。 範例如下:

"localization" { "english" { "Title_Config1" "Official Configuration" "Description_Config1" "This config was created by the developers of Game X." "Title_Config2" "Official Southpaw Configuration" "Description_Config2" "This config was created by the developers of Game X, and is setup for Southpaw users." "Action_Jump" "Jump" "Action_Camera" "Camera" } }

發佈配置時(請見第 4 步 – 發佈),您將可選擇使用這些在地化標題和描述。

第 2 步 - 建立預設配置


建立好 IGA 檔案後,請確保將其置於正確的路徑,並確認名稱與遊戲的 AppID 相符,然後就可以開始建立配置。

用 Big Picture 模式執行 Steam,前往您遊戲的遊戲詳情頁面。

選擇「管理遊戲」,然後選擇「控制器配置」。此時若收到任何錯誤訊息,是因為系統在您的 IGA 檔案裡偵測問題,您將需先修正問題——最常見的錯誤是漏掉引號或括號。

若沒有收到任何錯誤,您將會看到您遊戲的空白控制器配置,而所有遊戲內的動作應已在配置中。 運用使用者介面建立一個預設配置。 請確保您為所有的遊戲內操作組合都設定預設值,而不是只為第一個設定。

完成配置後,請先設為私人並保存。 先不要發佈,因為您的遊戲目前還未準備好接收 IGA。

第 3 步 – Steam 輸入 API


請確定您有最新版本的 Steamworks API——前往 Steamworks 初步指南頁面即可取得。

Steam 輸入會為每個不同應用程式提供專用的按鍵配置,以決定控制器將使用哪個按鍵配置來執行,Steam 亦會追蹤前景的視窗。 這可能會讓控制器的偵錯變得更難,因為當您在偵錯工具中遇到中斷點時,控制器的配置會改變。 有兩種方法可讓 Steam 鎖定視窗以便偵錯,其一是執行下列的 Steam URL:
steam://forceinputappid/<您遊戲的 AppID 或 0,後者將重設至正常運作>

或在您的 Steam 捷徑中加入下列指令參數:
-forcecontrollerappid <您遊戲的 AppID>

備註:

上述的「Steam 捷徑」是指連結 Steam 用戶端本身的捷徑。 命令列參數必須傳入 Steam 用戶端,而非您的遊戲。

您亦可下載官方控制器字符圖像或其 PSD 原始檔案。 上述資源僅供希望自己設計圖像的人,用作基礎圖像使用。 否則,您可以直接使用 API 取得任何控制器輸入的適當圖像的直接檔案路徑(圖像檔案會隨 Steam 用戶端發佈)。

第 3.1 步 - API 概覽


您在第 1 步的遊戲內動作檔案內指定的遊戲內動作和操作組合,乃 Steam 輸入 API 的建立基礎。

完整的 API 參考資料請見 ISteamInput 介面

功能性概覽如下:

安全介面

呼叫 ISteamInput::RunFrame 時會收集控制器資料, 通常 SteamAPI_RunCallbacks 每幀會收集一次。 可是,若您啟用了版本安全介面,並發現未能獲得良好的輪詢資料,您將需要每偵都呼叫 ISteamInput::RunFrame

您可以查看程式碼中是否有這項 #define 來判斷是否啟用了版本安全的介面:
VERSION_SAFE_STEAM_API_INTERFACES

第 3.2 步 - 輸入處理


ISteamInput::GetDigitalActionData 傳回的數位動作資料非常簡單易明:

bState:在控制器傳送動作時(按鈕按下、板機拉動……等)則狀態為 true

而從 ISteamInput::GetAnalogActionData 傳回的類比動作資料相比下只是稍微複雜一點:

x、y:將取決於您在 IGA 擋案中分配的遊戲動作模式。 - 「absolute_mouse」:x & y 將是滑鼠座標和前一個座標的位置差 - 「joystick_move」:x & y 將是 -1 和 1 之間的值,用來表示搖桿目前位置

在編輯程式碼時,請確保您不會阻礙使用者同時組合不同類型的輸入。 一個常見錯誤為當遊戲看到滑鼠和鍵盤輸入時,便開始忽略遊戲手把輸入,或反之。

第 3.3 步 - 畫面中的字符

如要在畫面上顯示控制器提示,便需要取得與遊戲內動作綁定的物理來源。 由於玩家可能將一個以上的物理來源與同一個動作綁定,因此最好讓使用者介面循環顯示每個來源。 ISteamInput::GetDigitalActionOriginsISteamInput::GetAnalogActionOrigins 將傳回指定動作的來源數量,並填入其收到的 originsOut 陣列。

ISteamInput::EControllerActionOrigin 列舉可以用來將每個來源與其關聯的圖像重新對應。 使用來源列舉呼叫此函式時,將會從 Valve 的官方圖集(位於 Steam 用戶端的安裝資料夾)傳回關聯字符的 .png 或 .svg 本機檔案路徑。 此方法支援 Steam 輸入能識別的所有硬體裝置(PlayStation 控制器將顯示 PlayStation 的按鍵,而 Xbox 控制器將顯示 Xbox 的按鍵,以此類推)。 更好的是,未來可持續沿用此方法——Valve 加入對新硬體的支援時,此函式將自動擷取更新後的字符,您無需用新的字符資產重新編譯遊戲。

您可以提供自己的圖像作為控制器字符,但因為 Steam 輸入會持續加入對新裝置的支援,而令新裝置無法與遊戲相容的唯一阻礙就是字符圖像破損或缺失,我們強烈建議加上未來能繼續沿用的辦法。 以下任一方法皆可:

不斷輪詢!

別忘了玩家隨時都有可能更改他們的配置。 為幫助解決這問題,我們確保讓 ISteamInput::GetDigitalActionOriginsISteamInput::GetAnalogActionOrigins 這兩個函式僅需消耗極少的資源。

在您的螢幕顯示提示時,請勿快取原始來源並重複顯示第一個結果。 我們建議您重新收集每一幀的來源,並顯示對應的提示。 如此一來,如果玩家在看到提示後決定更改其配置,在他們離開配置畫面返回時,提示將自動更新對應的來源。

第 4 步 – 發佈


可以順利使用控制器進行遊戲後,就準備好可以發佈了。 您需要發佈新的遊戲更新,並將自己的配置設為官方配置。 玩家首次啟動遊戲時,便會自動載入官方配置。 如此一來,玩家啟動遊戲後便能直接輕鬆遊玩,完全無需前往配置畫面。

建議的流程如下:

第 4.1 步 - 更新遊戲

  • 將 Steam Depot 更新為您最新版本的遊戲

第 4.2 步 - 發佈配置

  • 以 Big Picture 模式執行 Steam,然後前往您在控制器配置中建立的預設配置
  • 按下「Y」鍵,然後點擊畫面下方的「另存為」
  • 選擇欲使用的在地化名稱和說明,並將其改為「公開」資料,然後按下「發佈」按鈕
  • 確認訊息中將有公開配置的檔案 ID。 請將 ID 複製或儲存下來

第 4.3 步 - 設為官方配置

  • 在 Steamworks 合作夥伴網站中開啟遊戲頁面
  • 點選「應用程式」分頁下的「Steam 輸入」

    steamworks_steam_input.png

  • 捲動至「Steam 輸入範本」。 選擇下拉選單中的「自訂配置」 (若僅希望選用常用舊版模式的模板,不打算添加原生支援,也可以從此處選擇)

    steamworks_steam_input_custom_config.png

    然後點選下方的「新增自訂配置」

    steamworks_steam_controller_custom2.png

  • 將公開配置的檔案 ID 貼上框內,然後點擊「確定」

    steamworks_steam_controller_custom3.png

  • 如同以往,在合作夥伴網站中發佈應用程式變更

若有需要,也可以為遊戲指定多個官方配置。 例如可以考慮建立供左撇子使用的官方配置。

若希望這麼做,請先建立多個配置,然後分別按照第 4.2 步進行發佈。然後,在步驟 4.3 中將所有配置的檔案 ID 貼上框內,用半形的英文逗號(,)隔開。 列表中第一個配置的優先順序最高,新玩家將預設採用第一個配置。 別忘了為所有配置提供名稱和說明

官方配置發佈後,就會出現在「自訂配置」區塊:

steamworks_steam_input_branch_settings.png

這裡可以取得每個配置的直接連結、查看對應的控制器類型、控制用於哪個測試分支,或將配置完全移除。 建立了新的官方配置後,就可以用這裡的新增或移除功能來取代原有配置。

讓控制器支援 Steam 輸入


接下來需要設定哪些控制器種類使用 Steam 輸入。若使用 Steam 輸入 API,請務必勾選「任何未來的裝置」。如此一來,Steam 推出新的控制器支援後,無須調整設定就能直接使用。

steamworks_steam_input_optin_settings.png

勾選方框後,對應的控制器類型將使用 Steam 輸入,而非自有的標準遊戲手把輸入協議。

更新官方配置

更新配置有兩種方法。
  1. 若要進行中斷性變更,例如新增 / 移除一組新的操作組合,或是新增必須綁定的動作,則為每種支援的控制器類型上傳新的配置,並移除舊配置。 您也應使用建立該配置的帳戶登入 Steam 輸入配置瀏覽器,點擊以將之標示為已刪除:

    steamworks_remove_community_config.png
  2. 若要進行可選變更,像是為您的動作名稱在地化增添新語言,或是新增不需在每個配置中都綁定的可選動作,則上傳單一的新配置並勾選「使用動作區塊」核取方塊,以確保該配置的動作區塊於選定的分支中會優先使用。

    steamworks_steam_input_use_action_block.png

提示

選單專用動作

我們建議各位為選單控制建立另一個遊戲內操作組合,不要直接套用遊戲主要的操作組合。 大多數顧客不需要修改這個選單控制組合,但對於需要的玩家(例如部分殘障人士)來說,這是一種提供相關功能的便利方法。

自訂圖示

Steam 輸入系統也可以建立多種螢幕選單樣式。 將 .png 圖示放在 <主遊戲目錄>/TouchMenuIcons/*.png 中,就會在遊戲的觸控選單或放射狀選單的列表中顯示於最前面。 如此一來,就能用對應特定動作的圖示來設定畫面上的放射狀選單或觸控選單,而無需編寫遊戲或使用者介面方面的程式碼。 就算預設配置不包含放射狀或觸控選單,我們仍然建議開發者採用這種作法。 由於使用者在修改配置時也能使用官方圖示素材,因此可以製作出漂亮又符合遊戲風格的選單。