Skip to content

SteamTokenDumperPlugin zh TW

ArchiBot edited this page Dec 6, 2023 · 18 revisions

Steam Token 輸出外掛程式

SteamTokenDumperPlugin​是由我們所開發的ASF官方​外掛程式,它可以使您透過分享組合包權杖、應用程式權杖及Depot金鑰,來對​SteamDB​專案提供貢獻。 關於所收集的資料的進一步說明,以及為什麼SteamDB需要這些資訊,可以在SteamDB的​Token Dumper​頁面上查看。 如上所述,提交的資料不包含任何敏感資訊,也不存在安全/隱私風險。


啟用外掛程式

ASF在釋出時附帶了​SteamTokenDumperPlugin​外掛程式,但是外掛本身預設是停用的。 您可以將ASF全域設定屬性​SteamTokenDumperPluginEnabled​設定成​true​來啟用外掛程式,採用JSON語法:

{
  "SteamTokenDumperPluginEnabled": true
}

在開啟ASF程式時,外掛程式會以標準ASF日誌的形式通知您它是否已成功啟用。 您也可以在設定檔生成器網頁工具中啟用外掛程式。


技術細節

啟用後,本外掛程式將會收集您在ASF中執行的Bot有權存取的組合包權杖、應用程式權杖及Depot金鑰。 資料收集模組包含被動與主動常式,它們應盡可能減少資料收集所造成的額外負擔。

為了完成預期的使用場景,除了上述的資料收集常式以外,提交常式負責確定哪些資料需要定期提交至SteamDB。 這個常式將在您啟動ASF最多​1​個小時後啟動,之後每​24​小時重複一次。 本外掛程式會盡量減少需要傳送的資料量,因此某些外掛程式收集到的資訊會被認為是無用提交而被略過(例如應用程式更新但並未更改存取權杖)。

本外掛程式使用了儲存於​config/SteamTokenDumper.cache​的持續快取資料庫,其用途類似於ASF的​config/ASF.db​。 這個檔案用於記錄收集到及要提交的資料,並盡可能減少下次ASF執行時必須完成的工作量。 刪除此檔案會使程序從頭開始,如果可以,應避免這種情形。


資料

ASF會在請求中包含貢獻者的​steamID​,即您在ASF中設定的​SteamOwnerID​。若您並未設定它,則會選擇擁有最多許可的Bot的Steam ID。 被宣告的貢獻者可能會因持續貢獻而從SteamDB獲得一些額外的好處(例如網站上的貢獻排名),但這完全是由SteamDB所決定。

無論如何,SteamDB的工作人員預先感謝您的協助。 提交的資料可以使SteamDB運作,特別是追蹤組合包、應用程式及Depot的資訊。若沒有您的協助,這些將不復存在。


指令

STD外掛程式提供額外的ASF指令⸺​!std [Bots]​⸺使您能夠依需求觸發所選Bot的重新整理及提交。 使用本指令毋須啟用設定,它使您能夠跳過自動收集與提交,並能讓您手動控制整個過程。 它一直都能在啟用設定的情形下使用,如此只會將原先就有的收集及提交過程提前進行。

我們建議使用​!std ASF​,將觸發所有可使用的Bot的重新整理。 但若您需要,也能指定要觸發哪些Bot。


進階設定

我們的外掛程式支援進階設定,這對於希望依據自己的偏好調整內部結構的人可能會很有用。

進階設定在​ASF.json​中有下列結構:

{
  "SteamTokenDumperPlugin": {
    "Enabled": false,
    "SecretAppIDs": [],
    "SecretDepotIDs": [],
    "SecretPackageIDs": [],
    "SkipAutoGrantPackages": true
  }
}

所有選項解釋如下:

Enabled

bool​型別,預設值為​false​。 這個屬性與上述​SteamTokenDumperPluginEnabled​根級屬性的作用相同,可以相互代替,給那些希望在自己的結構中擁有整個外掛程式相關設定的人所使用(這些人很可能已經使用了下列所述的其他進階屬性)。


SecretAppIDs

ImmutableHashSet<uint>​型別,預設值為空。 這個屬性使外掛程式不解析指定的​appIDs​,若它們已被解析,則不提交權杖。 這個屬性對於有權存取有關未發布物品的敏感資訊的人非常有用,特別是開發人員、發行商或Beta封閉測試人員。


SecretDepotIDs

ImmutableHashSet<uint>​型別,預設值為空。 這個屬性使外掛程式不解析指定的​depotIDs​,若它們已被解析,則不提交金鑰。 這個屬性對於有權存取有關未發布物品的敏感資訊的人非常有用,特別是開發人員、發行商或Beta封閉測試人員。


SecretPackageIDs

ImmutableHashSet<uint>​型別,預設值為空。 這個屬性使外掛程式不解析指定的​packageIDs​(也稱為​subIDs​),若它們已被解析,則不提交權杖。 這個屬性對於有權存取有關未發布物品的敏感資訊的人非常有用,特別是開發人員、發行商或Beta封閉測試人員。


SkipAutoGrantPackages

bool​型別,預設值為​true​。 這個屬性的作用類似於​SecretPackageIDs​,在啟用後,會使下列所述的解析常式跳過具有​AutoGrant​的​EPaymentMethod​的套裝。 Steamworks​會使用​AutoGrant​付款方式自動為開發人員帳號授與組合包。 雖然這不像其他的​Secret​選項一樣明確指定ID,因此不能保證能符合預期(因為您可能還擁有其他非​AutoGrant​的組合包,而仍不想提交),但它應該足以跳過大多數的(可能非全部的)私密組合包。 這個選項預設為啟用,因為實際上能存取​AutoGrant​組合包的人幾乎不會希望公開洩漏這些資訊,因此使用​false​值得情形非常有限。


詳細解說

最基礎的概念是每個Steam帳號都擁有一套組合包(授權、訂閱),對應它們的​packageID​來分類(也稱為​subID​)。 每個組合包可能含有數個應用程式,對應各自的​appID​。 每個應用程式可能包含數個Depot,對應各自的​depotID​。

├── sub/124923
│     ├── app/292030
│     │     ├── depot/292031
│     │     ├── depot/378648
│     │     └── ...
│     ├── app/378649
│     └── ...
└── ...

我們的外掛程式包含兩個考慮跳過物品的常式:解析常式及提交常式。

解析常式負責解析上述的樹狀結構。 透過提前將組合包/應用程式/Depot加入黑名單,您能有效地在樹狀結構中切斷指定的分支及葉節點,而不需要額外指定其剩餘部分。 在上述範例中,若組合包​124923​被忽略,不論是透過​SecretPackageIDs​或​SkipAutoGrantPackages​,且在您所擁有的組合包中,只有這個能夠鏈結到AppID ​292030​,則AppID ​292030​也不會被解析。依據定義,若沒有其他可被解析的應用程式鏈結至Depot ​292031​及​378648​,那麼它們也不被解析。 但是,請注意如果外掛程式已解析了樹,那麼就只會停止更新給定的物品(例如新增的應用程式),而不會「忘掉」已被解析過的現有物品(例如您在加入黑名單前就被找到存在於組合包中的應用程式)。 若您剛剛啟用了一些忽略選項,且希望確保ASF不會遍歷已解析過的樹,您或許可以考慮刪除一次外掛程式儲存快取的​config/SteamTokenDumper.cache​檔案。

提交常式負責提交已被解析物品的組合包權杖、應用程式權杖及Depot金鑰(透過上述的解析常式)。 在這裡,您的黑名單會立即生效,因為即使外掛程式已解析了資訊,但若您將其加入黑名單,提交常式實際上就不會把它提交給SteamDB,無論是否已被解析。 請注意,在此處我們不再與樹有任何關連,提交常式不會知道應用程式的資訊是來自這個或那個組合包,所以它只會跳過特定的、已加入黑名單中的物品,而不會考慮它們的相關性。

對於大部分的開發人員及發行商來說,啟用​SkipAutoGrantPackages​應已足夠滿足需要。若有額外需要,可以使用​SecretPackageIDs​,它能有效地從起始分支切斷,並且只要沒有其他組合包鏈結至相同的應用程式,能保證裡面包含的應用程式及Depot都不會被提交。 若您需要雙重保險,您還可以使用​SecretAppIDs​,即使有其他未加入黑名單的組合包鏈結至應用程式,它也會被跳過解析。 一般情形不需要使用​SecretDepotIDs​,除非您有特殊需要(例如提交組合包及應用程式資訊時跳過特定的Depot),或您想要多加一層以獲得三重保險。

Clone this wiki locally