Dokumentacja Steamworks
Ekonomia Steam

Wprowadzenie

Ekonomia Steam to nasza nazwa zestawu funkcji, który pozwala przedmiotom z wielu gier działać w jednym wspólnym systemie na Steam. W Ekonomii Steam przedmioty w grze można kupić poprzez mikrotransakcje, zdobyć dzięki osiągnięciom Steam, otrzymać w grze lub dostać w ramach różnego rodzaju promocji. Użytkownicy mogą wyświetlać swój ekwipunek w Społeczności Steam, wysyłać linki do przedmiotów na czatach i handlować przedmiotami z innymi użytkownikami. Steam zapewnia interfejs użytkownika i wykonuje całą pracę odnośnie implementacji tych funkcji, ale pozostawia grze całkowitą kontrolę nad przedmiotami.

W Ekonomii Steam przedmioty w grze są nazywane zasobami (assets) i reprezentują cokolwiek, co użytkownik może posiadać w grze, np. wyposażenie, pojazdy, postacie, zwierzęta, schematy wytwarzania itd. Gra informuje Steam, jak wyświetlić zasoby użytkownikowi, ale ich działania są określane przez samą grę. Zadaniem gry jest również śledzenie, który użytkownik jest właścicielem których zasobów i przekazanie tych informacji zarówno użytkownikom, jak i pracownikom pomocy technicznej. Innym obowiązkiem gry jest określanie, jakie zasoby można wymieniać, ustalanie ograniczeń pojemności ekwipunku nakładanych na użytkowników oraz udostępnianie informacji o ww. aspektach pracownikom pomocy technicznej.

Każda gra kontroluje to poprzez implementację API zasobów Steam. Jest to zbiór WebAPI pozwalających Steam na wgląd do back-endu. Pełna dokumentacja dla API zasobów Steam znajduje się poniżej.

Wymagania

Aby dodać grę do Ekonomii Steam, należy spełnić kilka warunków.

  • Gra musi mieć back-end zasobów, który nie jest przechowywany w kliencie gry. Konieczne będzie posiadanie pewnego rodzaju bazy danych przechowywanej w centrum danych, które może być własnością wydawcy lub producenta albo zapewnione przez serwis hostingowy w chmurze. Steam oferuje darmową usługę ekwipunku, która może zostać wykorzystana jako trwałe miejsce do przechowywania przedmiotów dla twojej gry.
  • Gra musi definiować zestaw ID kontekstu określających kontenery, w których użytkownicy mogą przechowywać zasoby.
  • Każda gra musi ustalić trwałe 64-bitowe ID dla każdego zasobu, który może zostać użyty w wymianie z innym użytkownikiem. To ID zasobu musi być unikalne w kontekście posiadającym jego zasób.
  • Gra musi zapewnić ikony ekwipunku dla wszystkich zasobów w grze poprzez serwer sieciowy. Ikony powinny być dostępne w rozmiarach 96x96 oraz 200x200 w formacie JPG, PNG lub GIF. Steam zapewni przepustowość potrzebną do dostarczenia tych obrazków użytkownikom.
  • Gra musi posiadać implementację przynajmniej metod handlu Steam opisanych poniżej.
  • Gra powinna również posiadać implementację metod z integracji narzędzia pomocy technicznej.

Czytaj dalej, tylko jeśli...

Planujesz stworzyć swój własny serwis do śledzenia zasobów. W pozostałej części tego dokumentu przedstawiono wymagany interfejs Web API.
Jeśli planujesz skorzystać z usługi Ekwipunku Steam, nie musisz czytać dalej.

Handel Steam

System handlu na Steam używa interfejsu sieciowego do przeprowadzania wymian oraz wyświetlania ekwipunku. Te strony internetowe są wypełnione wynikami GetContexts, GetContextContents, GetAssetClass i GetAssetClassInfo w API zasobów. Gdy obydwaj użytkownicy potwierdzą wymianę, nastąpi trójfazowe zatwierdzenie wyniku we wszystkich grach, których dotyczy wymiana. Cała logika zatwierdzania i cofania wymiany jest ustalana na serwerze ekonomii na Steam. Działania te prowadzą do zmiany statusu posiadania za pomocą metod TradeSetUnowned oraz TradeSetOwned.
GETGetContexts/v0001Zwraca listę kontekstów użytkownikowi.
GETGetContextContents/v0001Zwraca klasę zasobów dla każdego zasobu użytkownika i waluty, która ma być wyświetlana w oknie wymiany lub w Społeczności Steam.
GETGetAssetClass/v0001Zwraca klasę zasobu i właściciela dla listy zasobów wyświetlanych w oknie wymiany lub w Społeczności Steam.
GETGetAssetClassInfo/v0001Zwraca widoczne dla użytkownika informacje o pojedynczej klasie zasobów.
POSTTradeSetUnowned/v0001Wywoływana, gdy serwer Ekonomii Steam wymaga od gry, by usunęła zasób lub część waluty z ekwipunku użytkownika.
POSTTradeSetOwned/v0001Wywoływana, gdy serwer Ekonomii Steam wymaga od gry zmiany istniejącego „nieposiadanego” zasobu w ekwipunku użytkownika na „posiadany”.

Integracja narzędzia pomocy technicznej

Narzędzie pomocy technicznej to system wykorzystywany przez pracowników Pomocy technicznej Steam do rozwiązywania problemów z zasobami użytkowników (a także innymi problemami związanymi z kontami Steam). Wdrożenie tych API umożliwi obu formom narzędzia pomocy technicznej dostęp do zasobów w grze.

Narzędzie pomocy technicznej uzyskuje dostęp do gier w Ekonomii Steam za pomocą dwóch stron: „Economy” (ekonomia) i „History” (historia). Strona ekonomii współdziała z zasobami w kontekście z GetContextContents i GetAssetClassInfo, a strona historii używa GetUserHistory, GetHistoryCommandDetails oraz HistoryExecuteCommands. Obie strony będą wyświetlać szczegóły zasobów z wynikami z SupportGetAssetHistory. ContextCommand umożliwia pracownikom pomocy technicznej wykonywanie działań na poziomie kontekstów i zasobów.
POSTContextCommand/v0001Wykonuje polecenie kontekstowe z poziomu narzędzia pomocy technicznej.
GETGetUserHistory/v0001Zwraca historię działań kontrolnych dla użytkownika do użycia w narzędziu pomocy technicznej.
GETGetHistoryCommandDetails/v0001Zwraca pracownikowi pomocy technicznej szczegółową listę działań poleceń dla danej komendy historii.
POSTHistoryExecuteCommand/v0001Wykonuje zestaw działań poleceń historii na użytkowniku dla pracownika pomocy technicznej.
GETSupportGetAssetHistory/v0001Zwraca informacje o historii zasobu w narzędziu pomocy technicznej.

Zakupy internetowe

Możesz umożliwić użytkownikom kupowanie przedmiotów w twojej grze z poziomu strony internetowej poprzez implementację następujących API:
POSTStartWebAssetTransaction/v0001Rozpoczyna transakcję w imieniu użytkownika dla określonych przedmiotów. Wywołuje ISteamMicroTxn/InitTxn, by Steam mógł skonfigurować transakcję i otrzymać URL do przekazania dalej.
POSTFinalizeWebAssetTransaction/v0001Wywoływane, gdy użytkownik płaci za przedmioty określone w transakcji. Powinno wywoływać ISteamMicroTxn/FinalizeTxn przed próbą przekazania przedmiotów użytkownikowi.
GETGetAssetPrices/v0001Zwraca ceny i kategorie przedmiotów, które użytkownicy mogą kupić.

Zwroty pieniędzy na Steam

Zgodnie z polityką zwrotów Steam użytkownikom przysługuje prawo do zwrotu pieniędzy za zakup przedmiotów w ciągu 48 godzin od dokonania zakupu, jeśli zakupiony przedmiot nie został użyty, zmodyfikowany lub wymieniony. Jeśli chcesz wziąć udział w tej polityce, musisz zaimplementować następujące API:
GETQueryRefundAllowed/v0001Wywoływane w celu sprawdzenia statusu każdego przedmiotu dla danego zakupu w grze.
POSTRefundPurchase/v0001Wywoływane, gdy zwrot pieniędzy zostanie zatwierdzony automatycznie lub przez pracownika pomocy technicznej.

Obce zasoby

Jeśli gra importuje zasoby z innej gry, będzie mogła wywołać GetExportedAssets do odzyskania zasobów.
GETGetExportedAssets/v0001Zwraca listę przedmiotów eksportowanych do innej gry na Steam.

Wersje interfejsu

Aby umożliwić przyszłe wersje API zasobów, serwer Ekonomii Steam doda numer wersji do każdego wywoływanego przez niego adresu URL. W tej chwili wszystkie metody są pierwszą wersją, więc dopisek „/v0001” zostanie dodany do każdego linku. Jeśli więc adres URL twojego serwera zasobów to https://api.mygame.com/assetapi, wówczas metoda GetContexts zostanie wywołana jako https://api.mygame.com/assetapi/GetContexts/v0001 z określonymi parametrami GET
dla tej metody.

Klucze API

Jeśli określisz klucz API w zakładce „Ekonomia” w sekcji szczegółów technicznych twojej gry, to ten klucz będzie przekazywany do każdego wywołania wykonywanego przez serwer ekonomii.
W zależności od typu żądania, klucz będzie zawarty w parametrze zwanym „key” w metodzie GET lub POST. Po otrzymaniu żądania upewnij się, że ten klucz odpowiada temu ustawionemu w zakładce „Ekonomia”, aby upewnić się, że żądanie rzeczywiście pochodzi z serwera Ekonomii Steam.

Najczęściej zadawane pytania

P: Czym jest Ekonomia Steam?

O: Platforma Steam posiada wbudowane funkcje dla bezpiecznej i niezawodnej wymiany, globalny rynek społeczności używający prawdziwych walut, szczegółową pozagrową introspekcję przedmiotów poprzez Społeczność Steam i wiele więcej. Możesz korzystać z dowolnej lub wszystkich oferowanych funkcjonalności.

P. Jakie korzyści wynikają z korzystania z Ekonomii Steam?

O: Przedmioty w grach z włączoną ekonomią są cenniejsze od przedmiotów używanych w ekosystemach pojedynczych gier, co zwiększa zadowolenie klientów.

Gracze mogą pokazywać swoje przedmioty poprzez czat oraz swoje profile Steam. Zapewnia to dodatkową reklamę zarówno dla gry, jak i powiązanych z nią przedmiotów. W grach obsługujących handel przedmioty są cenne nie tylko dla ich obecnych właścicieli, ale także dla wszystkich aktywnych graczy i potencjalnych początkujących. Oznacza to przykładowo, że wszystkie gry korzystające z Ekonomii Steam natychmiastowo stają się bardziej interesujące i bardziej wartościowe dla graczy innych gier z istniejącą ekonomią (np. Team Fortress 2 i Dota 2).

Oprócz tego możesz za darmo wykorzystać naszą istniejącą infrastrukturę do wymian lub transakcji z użyciem waluty, pomocy technicznej oraz zaimplementować dowolną funkcjonalność w przyszłości.

P: Jakie wymagania należy spełniać, aby uczestniczyć w ekonomii?

O: Twoja gra musi mieć back-end zasobów (czyli serwer przedmiotów), który nie jest przechowywany w kliencie gry. Konieczne będzie posiadanie pewnego rodzaju bazy danych przechowywanej w centrum danych.
Może być ono własnością wydawcy lub producenta albo zapewnione przez serwis hostingowy w chmurze. Steam oferuje darmową usługę ekwipunku, która może zostać wykorzystana jako trwałe miejsce do przechowywania przedmiotów dla twojej gry. Ten back-end musi posiadać implementację niewielu WebAPI, by Steam mógł się z nim komunikować.

P. Czy mogę uczestniczyć tylko w niektórych częściach ekonomii?

O: Funkcje WebAPI wywoływane przez Steam zapewniają jeden wspólny interfejs do widoku przedmiotów w Społeczności Steam, wymiany między różnymi grami oraz Rynku Społeczności Steam. Masz kontrolę nad podstawowym poziomem możliwości włączenia lub wyłączenia danych funkcji (np. włączenie handlu, ale wyłączenie transakcji na rynku) lub też bardziej szczegółowym (np. wszystkie przedmioty można wyświetlić przez Społeczność Steam, niektóre wymienić, a tylko niektóre wystawić na rynku). Możesz zmieniać ustawienia dla każdego przedmiotu w każdej chwili.

P: Czy Valve posiada trwały back-end przedmiotów, którym można posłużyć się w ramach Steamworks?

O: Do tego celu służy usługa Ekwipunku Steam.