Dokumentasi Steamworks
Rich Presence yang Ditingkatkan

Ringkasan

Dengan adanya rilisan terkini fitur Teman dan Obrolan Steam, kami telah meningkatkan kemampuan dari sistem rich presence untuk menampilkan lebih banyak tentang game yang dimainkan. Kami melihat rich presence pemain adalah cara untuk melibatkan teman dari pemain dalam aktivitas mereka. Misalnya, teman yang memiliki game terlibat dengan mengetahui waktu yang tepat untuk bergabung ke game atau dengan membicarakannya dengan sesama pemain, dan mereka yang tidak memiliki game-nya mungkin tertarik dengan menemukan berbagai rich presence yang memberi tahu mereka lebih banyak tentang game yang mereka kurang ketahui.

Rich Presence ditampilkan dalam beberapa konteks

Dalam dokumentasi ini, kami akan membahas dua pengaturan yang dapat kamu tentukan untuk mengontrol bagaimana game-mu muncul di daftar teman pemain:
  • Rich Presence String – digunakan untuk menampilkan informasi tentang status pemain di game-mu yang mungkin ingin diketahui oleh teman mereka
  • Pengelompokan Teman – digunakan untuk mengelompokkan teman-teman yang sedang bermain bersama dalam game

String Rich Presence yang dikontrol game


Teman dapat melihat info lebih lanjut tentang game secara sekilas
Sistem yang diterapkan dapat disesuaikan sehingga timmu dapat menentukan informasi mana yang paling menarik bagi teman pemain.
Game-mu akan memiliki data khusus sendiri yang akan menjadi informasi yang tepat untuk ditampilkan dengan rich presence yang ditingkatkan. Namun, untuk memulai, silakan pertimbangkan hal-hal berikut ini:

Game Multipemain

Informasi yang membantu teman pemain mengetahui kapan harus bergabung dapat bervariasi, tergantung dari jenis game multipemainnya. Beberapa game dimainkan dalam ronde yang ditentukan oleh waktu atau oleh jumlah pemain yang tersisa, sehingga informasi tersebut paling berguna untuk ditampilkan. Game multipemain lainnya selesai setelah tujuan tercapai. Menunjukkan progres menuju tujuan tersebut dapat berguna. Mengetahui mode game atau map mana yang digunakan pemainmu juga dapat berguna dalam membantu teman-teman pemain untuk membuat keputusan tentang cara terlibat dengan pemain.

Game Pemain Tunggal

Meskipun teman tidak dapat bergabung dalam game pemain tunggal, keterlibatan teman masih dapat terjadi jika informasi yang ditampilkan mengarahkan teman untuk menonton pemain bermain, mengobrol dengan mereka tentang strategi, atau mengobrol tentang bagian menarik dari bermain game tersebut. Informasi yang menunjukkan zona, babak, atau level tempat pemain berada, atau apa yang sedang dilakukan pemain dalam game dapat membantu mencapai tujuan ini.

* Untuk menentukan string yang ditampilkan di daftar Teman dan Obrolan Steam, atur key/nilai steam_display di SetRichPresence. Info lebih lanjut dan contoh panggilan API terdapat di akhir dokumen ini.

Contoh data untuk ditampilkan (jika berlaku)
  • Waktu tersisa
  • Waktu berlalu
  • Pemain yang hidup
  • Nama Map atau Zona
  • Level Pemain
  • Kelas Pemain
  • Skor Game
  • Kesulitan
  • Jenis mode game
  • Spot terbuka di server
  • Tindakan yang dilakukan (deckbuilding, perubahan daftar, pada menu utama, dll.)
CATATAN: Perlu diingat bahwa string rich presence ini harus muat dalam satu baris dan ditampilkan di bawah nama pemain di daftar teman. Jika terlalu panjang, akhir baris akan terhapus atau terpotong.

Pengelompokan Teman


Seiring dengan baris informasi tambahan, Daftar Teman baru dapat menampilkan kelompok teman yang bermain bersama. Teman-teman yang berada dalam party, server, atau pertandingan bersama akan dikelompokkan dalam kategori game dengan garis yang menghubungkan. Cara pengelompokannya akan bergantung pada game-mu dan apa yang paling masuk akal untuk ditampilkan. Sebagai contoh, di Dota 2 terdapat party hingga 5 orang, maka kami akan menunjukkan party yang sedang dimainkan, bukan tim penuh (5 pemain) yang di-matchmaking oleh game. Namun, di Counter-Strike, 2 teman mungkin bermain di server bersama-sama. Namun, alih-alih menampilkan seluruh server sebagai bagian dari party, hanya teman bersama yang bermain bersama akan dikelompokkan di Grup Pemain Steam yang sama.

Saat teman yang bermain bersama dikelompokkan, orang lain akan mengetahui jika terdapat slot bagi mereka untuk bergabung

* Untuk menentukan pengelompokan pemain di daftar Teman dan Obrolan Steam, atur key/nilai steam_player_group dan steam_player_group_size di SetRichPresence.

API Steam & Pelokalan



Di bawah ini adalah contoh kode untuk menunjukkan betapa sederhana mengaturnya.

Templat Kode
/*--------------------------- CONTOH -------------------*/ 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" ); // Contoh pengelompokan teman saat mereka bermain bersama if ( nPartyMemberCount > 1 && strPartyID ) { // Jika berada dalam party dengan lebih dari satu pengguna dan memilih ID Party yang valid, maka // beri tahu sistem Rich Presence Steam. steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", strPartyID ); steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", CNumStr( nPartyMemberCount ) ); } else { // JIka tidak, hapus semua informasi sebelumnya; tidak bergabung dalam party. steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", nullptr ); steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", nullptr ); }

Kode di atas menggunakan pelokalan yang menyertakan token bahasa Inggris seperti berikut ini:

"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" } }