Dokumentacja Steamworks
Rozszerzenia funkcji rich presence

Wprowadzenie

Dzięki najnowszej wersji zaktualizowanego klienta z funkcjami czatu i listy znajomych udało nam się zwiększyć możliwości funkcji „rich presence”. Dzięki temu pojawiła się możliwość wyświetlania większej ilości informacji o uruchamianych grach. Funkcja „rich presence” jest uważana za sposób na zainteresowanie znajomych gracza jego poczynaniami. Znajomi gracza dowiedzą się np. kiedy dołączyć do danej gry i otrzymają możliwość przedyskutowania jej rożnych aspektów z graczem. Gracze, którzy nie są właścicielami gry, zainteresują się nią, widząc stringi funkcji „rich presence” dotyczące gry, o której zapewne nie wiedzą jeszcze za wiele.

Funkcja „rich prresence” jest wyświetlany w kilku kontekstach

W tej dokumentacji omówimy dwie konfiguracje, które możesz zdefiniować, aby kontrolować sposób wyświetlania twojej gry na liście znajomych danego gracza:
  • String funkcji „rich presence” — służy do wyświetlania statusu użytkownika w grze.
  • Grupowanie znajomych — służy do grupowania znajomych, którzy grają razem.

Ciąg funkcji „rich presence” kontrolowany przez grę


[docimg = rp3_1.jpg]Znajomi zobaczą więcej informacji o grach nawet podczas pobieżnego zapoznania się ze stroną[/docimg]
Obecny system można zmieniać zgodnie z tym, jakie informacje mogą wg ciebie okazać się najciekawsze dla znajomych gracza.
Twoja gra będzie zawierała dane, które będą potrzebne do wyświetlania z rozszerzoną funkcją „rich presence”. Ale najpierw musisz pamiętać o następujących kwestiach:

Gry wieloosobowe

W zależności od rodzaju gry wieloosobowej informacje, które pomogą znajomym rozpoznać, kiedy dołączyć do gry, mogą się różnić od siebie. Niektóre gry zawierają rundy, które są ograniczone w czasie lub ograniczoną liczbę graczy, która może dołączyć do rozgrywki, więc te informacje będą najważniejsza do wyświetlenia. Inne gry wieloosobowe dobiegają końca, gdy osiągnięty zostanie określony cel, więc informacja o poczynionych postępach może być istotna w tym wypadku. Informacje o trybie lub mapie, z której korzysta gracz, mogą być również przydatne dla jego znajomych, tak by mogli podjąć decyzję o udziale w grze.

Gry dla jednego gracza

W grze dla jednego gracza znajomi nie mogą dołączyć do gry, można jednak wzbudzić ich zainteresowanie, jeśli wyświetlana informacja zachęci ich do obejrzenia rozgrywki, omówienia zastosowanej przez gracza strategii lub wyjątkowo udanych zagrań. Informacje na temat strefy, rozdziału, poziomu gracza lub jego bieżącej aktywności mogą pomóc w osiągnięciu tego celów.

* Aby określić ciąg znaków wyświetlany na liście znajomych i czacie Steam, ustaw parę klucz-wartość steam_displayw SetRichPresence. Dodatkowe informacje i przykłady wywołań API znajdują się na końcu dokumentu.

Przykładowe dane do wyświetlenia
  • Pozostały czas
  • Czas, który upłynął
  • Wciąż żyjący gracze
  • Nazwa mapy lub strefy
  • Poziom użytkownika
  • Klasa gracza
  • Wynik w grze
  • Trudność
  • Tryb w grze
  • Dostępne miejsca na serwerze
  • Podjęte działanie (konfiguracja talii, zmiana składu, w menu głównym itd.)
UWAGA: Pamiętaj, że wiersz statusu funkcji „rich presence ”powinien mieścić w jednym wierszu i być wyświetlany pod nazwą gracza na liście znajomych. Jeśli przekracza długość jednego wiersza, nie zostanie wyświetlony w całości.

Grupowanie znajomych


Wraz z dodatkowymi informacjami, nowa lista znajomych wyświetla grupy znajomych grających razem. Znajomi grający razem w tej samej drużynie, na tym samym serwerze lub meczu będą grupowani według łączącej ich kategorii w grze. Grupowanie będzie zależało od twojej gry i odpowiedniego sposobu na dobre zobrazowanie. Na przykład w grze Dota 2 zespoły składają się z maksymalnie 5 osób, więc wyświetlany będzie tylko zespół jako całość, a nie jego pełny skład. W grze Counter-Strike 2 znajomi mogą grać na tym samym serwerze, ale zamiast pokazywać serwer jako część zespołu, tylko znajomi grający razem zostaną umieszczeni we wspólnej grupie graczy Steam.

Kiedy grający razem znajomi są w jednej grupie, inni będą widzieć, czy jest miejsce, aby dołączyć

* Aby określić ustawienia dla grupy graczy z listy znajomych i czacie Steam, ustaw steam_player_group i steam_player_group_size w {LINK USUNIĘTY}]SetRichPresence[/url].

Steam API i lokalizacja



Aby zademonstrować, jak prosta jest jego konfiguracja, poniżej zamieszczamy przykładowy kod.

Fragment kodu
/*--------------------------- SAMPLE -------------------*/ const char *pchStatus; if ( bWinning && cWinners > 1 ) { pchStatus = "Tied"; } else if ( bWinning ) { pchStatus = "Winning"; } else { pchStatus = "Losing"; } SteamFriends()->SetRichPresence( "gamestatus", pchStatus ); bool bDisplayScoreInRichPresence = true; if ( bDisplayScoreInRichPresence ) { char rgchBuffer[32]; sprintf_safe( rgchBuffer, "%2u", uMyScore ); SteamFriends()->SetRichPresence( "score", rgchBuffer ); } SteamFriends()->SetRichPresence( "steam_display", bDisplayScoreInRichPresence ? "#StatusWithScore" : "#StatusWithoutScore" ); // Sample of grouping friends together when they play together if ( nPartyMemberCount > 1 && strPartyID ) { // If we're in a party of more than one user, and we have a valid PartyID then // inform Steam's Rich Presence system. steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", strPartyID ); steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", CNumStr( nPartyMemberCount ) ); } else { // Otherwise, clear out whatever information we had there before; we're not in a party. steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", nullptr ); steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", nullptr ); }

Powyższy kod używa lokalizacji z ciągami w języku angielskim, jak poniżej:

"lang" { "language" "english" "tokens" { "#StatusWithoutScore" "{#Status_%gamestatus%}" "#StatusWithScore" "{#Status_%gamestatus%}: %SCORE%" "#Status_AtMainMenu" "At the main menu" "#Status_WaitingForMatch" "Waiting for match" "#Status_Winning" "Winning" "#Status_Losing" "Losing" "#Status_Tied" "Tied" } }