Genel Bakış
Steam, otomatik olarak kendi içerisinde sıralama yapan ve kalıcı sıralama listelerini desteklemektedir. Bu sıralama listeleri, oyununuzdaki genel ve arkadaş sıralama listelerini oyunun içinde ve topluluk internet sayfanızda göstermek için kullanılabilir. Steamworks kullanan her oyun toplamda 10.000'e kadar sıralama listesi oluşturabilir ve bu listelerden her biri oyuncunun skoru listeye girdiği anda çağrılabilir.
Bir oyuncunun bir sıralama listesinde sadece tek bir girdisi olabilir. Sıralama listelerine girecek oyuncu sayısı için bir limit yoktur. Her girdi sıralama listesi için bir skor (int32) ve isteğe bağlı olarak 64 adete kadar ilişkilendirilmiş int32 verisi içerir. İlişkili veriler, kullanıcının sıralama listesine girmesini sağlayan oyun oturumuna özgü belirli bilgileri saklamak için kullanılabilir. Bu veri Steam tarafından düzenlenmez ya da ayrıştırılmaz ve kullanıcı için yeni bir sıralama listesi girdisi oluşturulduğu zaman değiştirilir.
Bütün sıralama listesi işlevleri ISteamUserGameStats.h'de yer almaktadır ve Steamworks örneğinde iki adet örnek sıralama listesi mevcuttur. Ayrıca, Steamworks Oyun Yöneticisi kısmına giderek oyununuzun sıralama listelerini görüntüleyebilir ve yönetebilirsiniz.
Başlamadan Önce
Bütün asenkron sıralama listesi işlevleri Steam API çağrısı sonucu olarak bir tanıtıcı değer döndürür. Bu sonuçları nasıl alacağınızı öğrenmekle ilgili daha fazla bilgi için Başlarken dokümanında yer alan Çağrı Sonucu kısmına bakın.
Sıralama Listesi Oluşturmak
Sıralama listeleri uygulamaya özeldir ve Steamworks partner sitesinde yer alan Oyun Yöneticisi sayfasından ya da API aracılığıyla kurulur.
Site Aracılığıyla Oluşturmak
Steamworks Uygulama Yöneticisi'ndeki app ID'niz için bir sıralama listesi oluşturmak veya yönetmek için
Stats & Başarımlar -> Sıralama Listeleri sekmesine gidin.
Bir sıralama listesinin tanımlanabilmesi için aşağıdaki alanlar tamamlanmalıdır:
- Ad - Dâhili geliştirme süreci için mantıklı olacak bir ad girin.
- Topluluk Adı - Eğer sıralama listesi Topluluk Merkezi'nde gösterilecekse buraya herkese görünecek bir ad girin. Eğer bir ad girilmezse sıralama listesi görünmeyecektir.
- Sıralama Yöntemi - Sıralama listesi sıralaması için bir düzen belirleyin. Konuma bağlı bir sıralama listesi için yükseleni kullanın. Yüksek skorlar için azalanı kullanın.
- Gösterilecek Veri Türü - Sıralama listesinde gösterilecek veri türlerini belirler. Sayısal, saniye veya milisaniyeden birini seçin.
- Yazmalar - Eğer "Güvenilir" olarak ayarlanırsa sıralama listesi skorları istemciler tarafından belirlenemez ve sadece SetLeaderboardScore WebAPI ile belirlenir. Varsayılan değeri false'tur.
- Okumalar - Eğer bu, "Arkadaşlar" olarak belirlenirse oyun sadece kullanıcının arkadaşlarının sıralama listesi skorlarını okur. Bütün skorlar WebAPI tarafından her daim okunabilir. Varsayılan değeri false'tur.
API Aracılığıyla Oluşturmak
Steamworks Uygulama Yöneticisi aracılığıyla oyununuz için sıralama listeleri oluşturabileceğiniz gibi
ISteamUserStats::FindOrCreateLeaderboard çağırarak programsal bir şekilde de oluşturabilirsiniz. Steam'deki bütün Steamworks kullanan oyunların sıralama listeleri benzersiz bir adla tanımlanır. Sıralama listesi adı sadece Steamworks API'ı tarafından kimlik saptama amacıyla kullanılır ve Steam Topluluğu'ndaki kullanıcılara gösterilmez. Sıralama listesi oluştururken şunları seçmeniz gereklidir:
- Sıralama Yöntemi -
k_ELeaderboardSortMethodAscending
(en üstteki girdi en düşük skora sahip girdidir) veya k_ELeaderboardSortMethodDescending
(en üstteki girdi en yüksek skora sahip girdidir).
- Gösterilecek Veri Türü -
ELeaderboardDisplayType
, sıralama listesi skorunun neyi temsil ettiğini belirtmek için kullanılır ve sadece gösterilen sıralama listesi skorlarını biçimlendirmek için topluluk tarafından kullanılır.
App Admin ile sıralama listelerinizi oluşturmayı tercih ederseniz
ISteamUserStats::FindLeaderboard kullanarak sıralama listenizin tanıtıcı değerini çağırabilirsiniz. FindLeaderboard ve FindOrCreateLeaderboard asenkron yöntemlerdir;
ISteamUserStats::LeaderboardFindResult_t çağrı sonucuyla belirtilmiş bir sıralama listesinin sıralama listesi tanıtıcı değerini döndürür.
Sıralama listesi oluşturulduktan sonra sıralama yöntemini ve gösterilecek veri türünü Oyun Yöneticisi üzerinden değiştirebilirsiniz. Mevcut bir sıralama listesi için FindOrCreateLeaderboard çağrıldığı zaman sıralama yöntemi ve gösterilecek veri tür parametreleri yok sayılır.
NOT: Eğer sıralama listesi Topluluk Merkezi'nde gösterilecekse sıralama listesini tanımlarken Topluluk Adı alanına da bir ad girmelisiniz. Eğer bir ad girilmezse sıralama listesi görünmeyecektir.
Skor Yüklemek
Sıralama listesi skoru yüklemek için
ISteamUserStats::UploadLeaderboardScore çağırın ve hedef sıralama listesinin tanıtıcı değerini (FindLeaderboard ile çağrılır), kullanıcının skorunu ve isteğe bağlı olarak ilişkili oluşturulmuş bütün verileri iletin. Eğer kullanıcının sıralama listesi skoru güncellendiyse
ISteamUserStats::UploadLeaderboardScore'a iletilen ilişkili veriler daha önce saklanmış verilerin yerini alacaktır. Bir kullanıcının sıralama listesi skorunu yüklerken iki güncelleme yönteminden birini seçebilirsiniz:
- ISteamUserStats::k_ELeaderboardUploadScoreMethodKeepBest - Steam, kullanıcının yeni skorunu saklanmış mevcut sıralama listesi skoruyla karşılaştırır ve kullanıcının en iyi skorunu (yükselen sıralama listeleri için en düşük skor; azalan sıralama listeleri için en yüksek skor) saklar.
- ISteamUserStats::k_ELeaderboardUploadScoreMethodForceUpdate - Steam, kullanıcının sıralama listesindeki skorunu daima en yenisiyle değiştirir.
- ISteamUserStats::UploadLeaderboardScore asenkron bir çağrıdır ve yüklemenin sonucu LeaderboardScoreUploaded_t çağrı sonucunda döner. Sonuçta, eğer kullanıcının skoru değiştiyse bununla ilgili bir işaret ve yeni genel sıralaması yer alır. Steamworks sıralama listeleri yüklenen yeni skorları göstermek için hemen güncellenir ve yeni girdi sıralaması da DownloadLeaderboardEntries aracılığıyla çağrılabilir.
Kullanıcı Tarafından Oluşturulan İçeriği Eklemek
Skor yüklendikten sonra girdiye, kullanıcı tarafından oluşturulan içerik ekleme seçeneğiniz vardır. Bunu yapmak için
ISteamUserStats::AttachLeaderboardUGC çağırmanız yeterlidir. Bu içerik kullanıcının başardığı skorun başarılma anını gösteren bir tekrar ya da karşısında yarışıp kazandığı kullanıcının bir hayaleti olabilir. Eklenen tanıtıcı değer, girdi çağrıldığı zaman kullanılabilir olur ve bu, diğer kullanıcılar tarafından indirilebilirdir. Kullanıcı tarafından oluşturulan içerikleri oluşturmak ve indirmek için Steam Cloud dokümantasyonuna bakın.
Temel Cloud dosyası kullanıcı tarafından değiştirilse de silinse de, içerik eklendikten sonra kullanılabilir kalacaktır.
Sıralama Listesi Girdilerini Çağırmak
ISteamUserStats::FindLeaderboard ile çağrılan sıralama listesi tanıtıcı değeri kullanılarak
ISteamUserStats::DownloadLeaderboardEntries aracılığıyla sıralama listesi girdileri çağrılabilir.
GetDownloadedLeaderboardEntry'den indirilen bütün girdileri çağırdıktan sonra girdi verisi boşa çıkacaktır ve LeaderboardScoresDownloaded_t'deki SteamLeaderboardEntries_t artık geçerli olmayacaktır.
Sıralama Listesi Bilgilerini Çağırmak
FindLeaderboard'tan dönen tanıtıcı değeri kullanarak sıralama listesiyle ilgili çeşitli bilgileri almak için şunları kullanabilirsiniz:
ISteamUserStats::GetLeaderboardNameISteamUserStats::GetLeaderboardEntryCountISteamUserStats::GetLeaderboardSortMethodISteamUserStats::GetLeaderboardDisplayType