Steamworks dokumentáció
Továbbfejlesztett részletes jelenlét

Áttekintés

Az új Steam Barátok és Csevegés kiadásával továbbfejlesztettük „részletes jelenlét” rendszerünk képességeit, hogy többet mutassanak az épp játszott játékokról. A játékos részletes jelenlétét olyasvalaminek tekintjük, amivel be lehet vonni a játékos barátait annak tevékenységébe. Például olyan barátok, akiknek megvan a játék, úgy vesznek részt, hogy tudják, mikor alkalmas az idő csatlakozni a játékhoz, vagy beszélni arról a játékossal, azoknak pedig, akiknek nincs meg a játék, felkeltheti az érdeklődését azáltal, hogy különféle részletes jelenlét szövegekkel találkoznak, amelyek többet mondanak nekik egy olyan játékról, amiről nem sokat tudnak.

A részletes jelenlét több környezetben is megjelenik.

Ebben a dokumentációban két olyan beállítást ismertetünk, amelyeket megadhatsz annak szabályzására, hogyan jelenik meg a játékod a játékosok barátlistáján:
  • Részletes jelenlét karakterlánc: olyan információk megjelenítésére szolgál a játékos állapotáról a játékodban, amiről barátaik esetleg tudni akarnak.
  • Barátcsoportosítás: olyan barátok csoportosítására szolgál, akik együtt játszanak a játékban.

Játék által vezérelt részletes jelenlét karakterlánc


A barátok egy szempillantással több információt láthatnak a játékokról.
A rendelkezésere álló rendszer testre szabható, így a csapatod tudja meghatározni, mely információk a legérdekesebbek egy játékos barátai számára.
A játékodnak meglesznek a saját konkrét adatai, amelyek a megfelelő bemutatandó információk lesznek a javított részletes jelenléthez. A kezdéshez azonban van néhány dolog, amit meg kell fontolni:

Többjátékos játékok

A többjátékos játék fajtájától függően eltérhetnek azok az információk, amelyek segítenek egy játékos barátainak tudni, mikor ugorjanak be. Egyes játékokat körökben játszanak, amelyeket az idő vagy a hátralévő játékosok határoznak meg, így ezt az információt a leghasznosabb megjeleníteni. Más többjátékos játékok akkor fejeződnek be, amikor elértek egy célt, és az e cél felé haladás mutatása lehet hasznos. Annak ismerete, hogy a játékosod melyik játékmódban vagy pályán van, szintén hasznos lehet segítségül a játékos barátainak eldönteni, hogyan lépjenek kapcsolatba a játékossal.

Egyjátékos játékok

Bár egyjátékos játékokhoz a játékos barátai nem csatlakoznak, baráti interakció továbbra is történhet, ha a mutatott információ arra készteti a barátot, hogy nézze a játékos játékát, vagy stratégiákról vagy a játék kiemelt pillanatairól beszéljen vele. Azt megmutató információk, hogy a játékos melyik zónában, fejezetben vagy pályán van, vagy hogy épp mit csinál a játékban, segíthetnek elérni e célokat.

* A Steam barátlistán és csevegésben megjelenítendő karakterlánc megadásához állítsd be a steam_display kulcs/érték párt a SetRichPresence-ben. További információk és példák az API-hívásokról a dokumentum végén találhatók.

Példák az adott esetben mutatható adatokra:
  • hátralevő idő,
  • eltelt idő,
  • még életben levő játékosok,
  • a pálya vagy zóna neve,
  • játékosszint,
  • játékososztály,
  • pontszám,
  • nehézség,
  • játékmód fajtája,
  • a szerveren szabad helyek,
  • a végzett cselekvés (pakli-összeállítás, felállásváltoztatás, a főmenüben stb.).
MEGJEGYZÉS: Ne feledd, hogy ennek a részletes jelenlét karakterláncnak el kell férnie egy sorban, és a játékosok neve alatt jelenik meg a barátlistában. Ha túl hosszú, a sor vége csonkítva lesz, vagy három pontban fog végződni.

Barátcsoportosítás


A további információsor mellett az új barátlista képes megjeleníteni az együtt játszó barátok csoportjait. Azok a barátok, akik egy társaságban, szerveren vagy meccsben vannak együtt, a játék kategóriájába lesznek csoportosítva egy őket összekötő vonallal. A csoportosítás meghatározásának módja a játékodtól és attól függ, mit a legészszerűbb megmutatni. Például a Dota 2-ben legfeljebb ötfős társaságok vannak, így a társaságot mutatjuk, amelyben játszanak, nem a teljes ötfős csapatot, amit a játék válogatott össze. A Counter-Strike-ban azonban lehet, hogy két barát játszik együtt egy szerveren, de ahelyett, hogy az egész szervert a társaság részeként mutatnák, csak az együtt játszó kölcsönös barátok vannak ugyanabba a Steam játékoscsoportba téve.

Amikor az együtt játszó barátok csoportosítva vannak, a többiek tudják, van-e hely csatlakozniuk.

* A játékosok csoportosításának megadásához a Steam barátlistán és csevegésben állítsd be a steam_player_group és steam_player_group_size kulcs/érték párokat a SetRichPresence-ben.

Steam API és lokalizáció



Alább található egy kódrészlet annak bemutatására, milyen egyszerű mindezt beállítani.

Kódrészlet
/*--------------------------- PÉLDA -------------------*/ const char *pchStatus; if ( bWinning && cWinners > 1 ) { pchStatus = "Döntetlen"; } else if ( bWinning ) { pchStatus = "Nyerésre áll"; } else { pchStatus = "Vesztésre áll"; } 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" ); // Példa barátok csoportosítására, amikor együtt játszanak if ( nPartyMemberCount > 1 && strPartyID ) { // Ha egynél több felhasználóból álló társaságban vagyunk, és van érvényes PartyID-nk, // akkor tájékoztatjuk a Steam részletes jelentlét rendszerét. steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", strPartyID ); steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", CNumStr( nPartyMemberCount ) ); } else { // Egyébként kiürítünk bármilyen információt, ami korábban ott volt, mert nem vagyunk társaságban. steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", nullptr ); steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", nullptr ); }

A fenti kód olyan lokalizációt használ, amely az alábbihoz hasonló angol tokeneket tartalmaz:

"lang" { "Language" "hungarian" "Tokens" { "#StatusWithoutScore" "{#Status_%gamestatus%}" "#StatusWithScore" "{#Status_%gamestatus%}: %SCORE%" "#Status_AtMainMenu" "A főmenüben" "#Status_WaitingForMatch" "Meccsre vár" "#Status_Winning" "Nyerésre áll" "#Status_Losing" "Vesztésre áll" "#Status_Tied" "Döntetlen" } }