Steamworks 文獻庫
Steam 經濟體

概覽

Steam 經濟體是一系列功能的總稱,讓多個遊戲的遊戲內物品可在同一個 Steam 共用體系中運作。 Steam 經濟體中的遊戲內物品可藉由小額交易購買、由 Steam 成就獲得、在遊戲內給予,或者在各類促銷活動中發放。 使用者可以在 Steam 社群中查看遊戲物品庫、在聊天會話中連結至物品,並與其他使用者交易物品。 Steam 提供了以上功能的使用者介面並負擔起背後作業,但物品依由遊戲全權掌控。

Steam 經濟體中的遊戲內物品稱為「資產」,代表使用者可以在遊戲內擁有的任何內容, 例如裝備、車輛、角色、寵物,和製作配方等等。 遊戲會告訴 Steam 如何向使用者顯示資產,但是資產的實際用途則由遊戲決定。 遊戲也需記錄使用者擁有哪些資產,並向玩家與客服人員傳達這些資訊。 遊戲也有權決定哪些資產可以交易、使用者受到怎樣的儲存空間限制,並為客服團隊提供上述所有內容的資訊。

各遊戲可使用 Steam 資產 API 來控制這些功能。 Steam 資產 API 是一組 Web API 的集合,讓您可在後端見到 Steam。 完整文獻如下:

條件

要讓遊戲加入 Steam 經濟體,需要滿足以下條件:

  • 遊戲的資產後端必須不儲存於遊戲用戶端中, 並需要位於資料中心的資料庫。 該資料中心可以是發行商或開發者所有的,也可通過雲端服務提供。 Steam 提供免費的物品庫服務,可用來永續儲存您的遊戲物品。
  • 遊戲必須制定一套脈絡 ID,定義使用者能存放資產的容器。
  • 遊戲必須為可交易給其他使用者的資產提供永久的 64 位元 ID。 該資產 ID 須至少不與其脈絡中其他 ID 重複。
  • 遊戲須通過網頁伺服器提供所有遊戲內資產的物品庫圖示。 這些圖示應為 96 x 96 和 200 x 200 大小的 jpg、png 或 gif 格式。 Steam 將提供把圖片傳給使用者所需的頻寬。
  • 遊戲至少必須實作後文所述的「Steam 交易」方法。
  • 遊戲還須實作「客服工具整合」中提及的方法。

深入閱讀

如果您計畫建立您自己的資產追蹤服務, 本文接下來將介紹所需的 Web API。
如果您計畫使用 Steam 物品庫服務,便無須繼續閱讀本文。

Steam 交易

Steam 交易系統使用網頁介面來進行交易與查看物品庫。 這些頁面填入了資產 API 中的 GetContexts, GetContextContents, GetAssetClassGetAssetClassInfo 的結果。 一旦雙方確認交易,涉及交易的所有遊戲都會執行三步確認。 Steam 的經濟體伺服器將處理三步確認的所有確認與復原邏輯, 由 TradeSetUnownedTradeSetOwned 這兩個方法變更遊戲中的所有權。
GETGetContexts/v0001傳回使用者的脈絡列表。
GETGetContextContents/v0001傳回使用者每項資產的類別與貨幣,用來顯示於交易或 Steam 社群中。
GETGetAssetClass/v0001傳回資產列表的類別與所有者,用來顯示於交易或 Steam 社群中。
GETGetAssetClassInfo/v0001傳回某項資產類別的使用者顯示資訊。
POSTTradeSetUnowned/v0001在經濟體伺服器需要遊戲移除使用者的資產或部分貨幣時呼叫。
POSTTradeSetOwned/v0001在經濟體伺服器需要遊戲將使用者不擁有的資產變更為擁有時呼叫。

客服工具整合

客服工具是 Steam 客服人員用於處理使用者資產問題(及其他 Steam 帳戶問題)的系統。實作這些 API,能讓兩種形式的客服工具存取遊戲資產。

客服工具通過兩個頁面存取 Steam 經濟體中的遊戲:經濟體與歷史記錄。 經濟體頁面使用 GetContextContentsGetAssetClassInfo 與脈絡中的資產互動。 歷史紀錄頁面則使用 GetUserHistoryGetHistoryCommandDetailsHistoryExecuteCommands。 兩個頁面都使用 SupportGetAssetHistory 的結果顯示資產詳細資料。 ContextCommand 用於讓客服人員執行脈絡與資產等級的操作。
POSTContextCommand/v0001執行來自客服工具的脈絡命令。
GETGetUserHistory/v0001傳回使用者的審核歷史記錄,用於客服工具中。
GETGetHistoryCommandDetails/v0001傳回一個歷史記錄命令的詳細列表給客服人員。
POSTHistoryExecuteCommand/v0001執行來自客服人員在使用者上施行的歷史紀錄命令。
GETSupportGetAssetHistory/v0001傳回資產的歷史記錄資訊,用於客服工具中。

網頁購買

您可以實作以下 API,讓使用者通過網頁在您的遊戲中購買物品。
POSTStartWebAssetTransaction/v0001為使用者發起指定物品的交易。 呼叫 ISteamMicroTxn/InitTxn,讓 Steam 設定交易並取得轉送 URL。
POSTFinalizeWebAssetTransaction/v0001在使用者為交易中的物品付款後呼叫。 在給予使用者物品之前,應該呼叫ISteamMicroTxn/FinalizeTxn
GETGetAssetPrices/v0001傳回使用者可購買的物品價格與類別。

Steam 退款

Steam 的退款政策保障使用者在 48 小時內,只要購入的物品都沒有被消耗、更改,或轉移,皆可退款。 如果您希望採納此政策,您需要實作以下 API。
GETQueryRefundAllowed/v0001檢查遊戲內購買每項物品的狀態時呼叫。
POSTRefundPurchase/v0001自動退款或客服人員退款成功時呼叫。

外來資產

如果您的遊戲從其他遊戲導入資產,呼叫 GetExportedAssets 即可取得資產。
GETGetExportedAssets/v0001傳回從 Steam 上另一個遊戲匯出的物品列表。

介面版本控制

為了能使用未來版本的資產 API,經濟體伺服器將為呼叫的每個 URL 追加一個版本編號。 目前所有方法都為版本 1,因此將在 URL 後增加「/v0001」。 如果您的資產伺服器 URL 為 https://api.mygame.com/assetapi,那麼 GetContexts 方法將以 https://api.mygame.com/assetapi/GetContexts/v0001 的方式呼叫,後面再加上方法指定的 GET
參數。

API 金鑰

如果您在遊戲的技術細節中的「經濟」分頁中設定了 API 金鑰,經濟體伺服器進行每個呼叫時都將傳入該金鑰。
金鑰將出現在 GET 或 POST(視要求類型而定)方法的「key」參數中。 當您收到呼叫時,請驗證該金鑰與您在「經濟體」分頁中設置的一致,以確定該呼叫確實來自經濟體伺服器。

常見問答

問: Steam 經濟體是什麼?

答: Steam 平台的內建功能,包括安全可靠的交易、全球真實貨幣市場、Steam 社群中遊戲外物品的詳細自我檢查等。 您可以選擇使不使用各項功能。

問:參與 Steam 經濟體有什麼好處?

答: 啟用了經濟體的遊戲中物品比專屬於一個遊戲生態系統的物品更有價值、更能使顧客滿意。

玩家可以將物品連結到 Steam 個人檔案與聊天中,為遊戲和遊戲中的物品帶來更多免費的曝光。 對於支援交易的遊戲,物品不止對所有者來說有價值,也為其他活躍玩家及潛在的新玩家帶來價值。 例如,使用 Steam 經濟體的遊戲,對其他已啟用經濟體的遊戲(如《絕地要塞 2》和《Dota 2》)的玩家來說,都立即變得更有吸引力且更有價值。

此外,您可以利用我們既有的交易 / 貨幣交易與支援的基礎架構,未來也能免費使用新的功能。

問:參與經濟體有哪些要求?

答: 遊戲的資產後端必須不儲存於遊戲用戶端中,也就是物品伺服器。 並需要位於資料中心的資料庫。
該資料中心可以是發行商或開發者所有的,也可通過雲端服務提供。 Steam 也提供免費的物品庫服務,可永續儲存您的遊戲物品。 該後端必須實作少量的 Web API,以便 Steam 能與之通信。

問:我能只參與一部分的經濟體,而非全部嗎?

答: Steam 所呼叫的 Web API 提供了單一的通用介面,得以查看 Steam 社群內物品、跨遊戲交易,和 Steam 社群市場。 您可以籠統地禁用整個功能(例如,啟用交易但禁用所有市場交易),或者控制各個物品(例如,所有物品可以通過社群查看,部分可以交易,但只有特定物品能在市場上架)。 您可以隨時更改每個物品的設定。

問:Valve 有沒有可用於 Steamworks 的永續物品後端?

答: 您可以使用 Steam 物品庫服務