Steamworks Belgeleri
Geliştirilmiş Detaylı Durum

Genel Bakış

Yeni çıkan Steam Arkadaş ve Sohbet arayüzü ile detaylı durum sistemimizi, oynanan oyunlarla ilgili daha fazla bilgi gösterecek şekilde geliştirdik. Bir oyuncunun detaylı durumunun o oyuncunun arkadaşlarıyla etkileşime girebilme yöntemlerinden biri olarak düşünüyoruz. Örneğin aynı oyuna sahip arkadaşlar bu özellik sayesinde ne zaman birbirlerinin oyunlarına katılabileceklerini ya da o oyun hakkında konuşabileceklerini bilirler. Aynı zamanda, bu oyunla ilgili detaylı durumları gören ve oyuna sahip olmayan arkadaşlar da hakkında pek bir şey bilmedikleri bu oyuna karşı ilgi duymaya başlayabilir.

Birkaç farklı bağlamda gösterilen detaylı durumlar

Bu dokümantasyonda oyununuzun arkadaş listesindeki görünümünü kontrol etmek için belirleyebileceğiniz iki ayardan bahsedeceğiz:
  • Zengin Durum Dizeleri: Bunlar oyuncunun, oyununuzdaki durumunu arkadaşlarına gösteren bilgileri gösterir.
  • Arkadaş Gruplandırması: Bu, aynı oyunda birlikte oynayan arkadaşları gruplandırmak için kullanılır.

Oyun Tarafından Kontrol edilen Detaylı Durum Dizesi


Arkadaşlar tek bir bakışta oyunlarla ilgili daha fazla bilgi edinebilirler
Mevcut sistem özelleştirilebileceği için ekibiniz gösterilecek bilgilerden hangisinin bir oyuncunun arkadaşları için daha ilgi çekici olacağına karar verebilir.
Oyununuzun detaylı durumda gösterilebilecek kendisine ait farklı verileri vardır. Başlangıç olarak şunları göz önünde bulundurabilirsiniz:

Çok Oyunculu Oyunlar

Çok oyunculu oyun türünüze bağlı olarak bir oyuncunun arkadaşlarının oyuna ne zaman katılabileceğini gösteren bilgiler değişiklik göstermektedir. Örneğin eğer oyununuzda maçlar belirli süreye sahip rauntlar hâlinde ya da geriye kalan oyuncu sayısına göre oynanıyorsa bunlar gösterebileceğiniz en yararlı bilgiler olacaktır. Bazı çok oyunculu oyunlar bir hedefe ulaşıldıktan sonra sona erdiği için bu oyunlarda hedefe kalan ilerlemeyi göstermek yararlı olabilir. Oyuncunuzun oynadığı oyun modunu veya haritayı göstermek de o oyuncunun arkadaşları tarafından onunla nasıl etkileşime geçeceklerine karar vermeleri açısından oldukça kullanışlı olabilir.

Tek Oyunculu Oyunlar

Her ne kadar tek oyunculu oyunlara oyuncunun arkadaşları katılamasa da eğer gösterilen bilgi arkadaşın oyunu izlemesine, oyuncuyla strateji konuşmasına ya da oynarken yaşadığı önemli olaylardan konuşmasına neden olabilecek bir bilgiyse arkadaş etkileşimi gene gerçekleşmiş olur. Oyuncunun yer aldığı bölgeyi, bölümü veya seviyeyi gösteren ya da oyuncun oyunda ne yaptığını belirten bilgiler bu hedeflerin başarılmasını sağlayabilir.

* Steam arkadaş listesinde ve sohbetinde gösterilecek dizeyi belirlemek için SetRichPresence'ta yer alan steam_display anahtarını/değerini ayarlayın. API çağrılarıyla ilgili daha fazla bilgi ve örnekler bu dokümanın en altında yer almaktadır.

Gösterilebilecek Verilere Dair Örnekler
  • Kalan süre
  • Geçen süre
  • Hayattaki oyuncular
  • Harita ya da bölge adı
  • Oyuncu seviyesi
  • Oyuncu sınıfı
  • Oyun skoru
  • Zorluk
  • Oyun modu türü
  • Sunucudaki boş yerler
  • Gerçekleştirilen eylemler (deste yapıyor, kadro değiştiriyor, ana menüde, vb.)
NOT: Detaylı durum dizelerinin tek bir satıra sığması gerektiğini ve arkadaş listesinde oyuncuların adlarının altında gösterildiğini aklınızda bulundurun. Eğer çok uzun olursa satırın sonu kesilir ya da eksiltilir.

Arkadaş Gruplandırması


İlave bilgi satırı dışında yeni arkadaş listesinde birlikte oyun oynayan arkadaşlar da artık gruplandırılabilir. Aynı partide, sunucuda veya maçta birlikte olan arkadaşlar, arkadaş listesinde o oyunun kategorisi altında gruplandırılır ve çizgiyle birbirlerine bağlı şekilde gösterilir. Gruplandırmanın gerçekleşmesi ve gösterilecek bilgilerin belirlenmesi oyununuza bağlıdır. Örneğin Dota 2'de 5 kişiye kadar olan partiler vardır ancak biz bu partilerden sadece önceden oluşturulan partileri arkadaş listesinde gösteriyoruz, oyun tarafından yapılan eşleştirme sonucu oluşan partileri değil. Örneğin Counter-Strike'da 2 arkadaş aynı sunucuda oynuyor olabilir ancak arkadaş listesinde birlikte gruplandırdığımız kişiler sadece önceden o Steam oyuncu grubuyla birlikte ortak arkadaşlardır, sunucuda yer alan herkes değil.

Birlikte oynayan arkadaşlar gruplandırıldığı zaman diğerleri de katılmak için odada yer olup olmadığını görebiliyor

* Steam arkadaş listesinde ve sohbetindeki oyuncu gruplandırmasını belirlemek için SetRichPresence'ta yer alan steam_player_group ve steam_player_group_size anahtarını/değerini ayarlayın.

Steam API'ı ve Yerelleştirme



Aşağıdaki kod örneğine bakarak bunu ayarlamanın ne kadar basit olduğunu görebilirsiniz.

Kod Parçası
/*--------------------------- ÖRNEK -------------------*/ 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" ); // Birlikte oynayan arkadaşların gruplandırılmasına dair bir örnek if ( nPartyMemberCount > 1 && strPartyID ) { // Birden fazla kullanıcının bulunduğu bir partideysek ve geçerli bir Parti ID'miz varsa // Steam'in Detaylı Durum sistemini bilgilendir. steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", strPartyID ); steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", CNumStr( nPartyMemberCount ) ); } else { // Öbür türlü burada yer alan bütün bilgileri temizle; partide değiliz. steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", nullptr ); steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", nullptr ); }

Yukarıdaki kod aşağıda yer alan İngilizce belirteçlerin de yer aldığı yerelleştirmeyi kullanır:

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