Steamworks Belgeleri
Adım Adım: Başarımlar
Kısaca
Başarımları oyununuzdaki spesifik hedeflere ulaşan veya oyununuzla belirli şekillerde etkileşimde bulunan oyuncuları ödüllendirmek için kullanın.
Entegrasyon seviyesi
10 dakika ve 10 satırdan daha az kod. Steamworks SDK entegrasyonu gereklidir.

Giriş

Başarımlar, oyuncuları oyundaki etkileşimleri gerçekleştirmeye ve belirlenen hedeflere ulaşmaya teşvik etmenin ve oyuncuları ödüllendirmenin bir yolu olarak kullanılabilir. Başarımlar genellikle öldürülen düşman sayısını, sürülen kilometreleri, açılan sandıkları veya oyununuzdaki diğer yaygın eylemleri işaretlemek için kullanılır. Ayrıca oyuncularınızın oyununuzu oynamanın farklı yollarını keşfetmelerine yardımcı olmak için de kullanılabilir. Bu başarımlar kazanıldığında oyuncuların ekranının köşesinde bir pencere olarak belirecek ve o oyuncu için bir başarım sayfasında işaretlenecektir.

Oyununuz genişledikçe başarımları Başarım Setleri hâlinde düzenleyebilirsiniz. Setler, başarımları oyununuz için mantıklı olacak şekilde gruplandırmanıza, ana oyunun tamamlanmasını etkilemeden DLC'ler için başarımlar eklemenize ve kaldırılan içeriklere ait başarımları, kazanan oyunculardan geri almadan arşivlemenize olanak tanır. Ayrıntılı bilgi için aşağıdaki Başarım Setleri başlığına göz atabilirsiniz.

Not: Başarım Setleri şu anda beta sürecindedir. Beta sürecinde iyileştirmeler yapmaya devam edeceğimizden bu belge de değişiklikler oldukça güncellenecektir.

Teknik Genel Bakış

Aşağıda verilen adımları takip ederek 10 dakikada ve kod tabanınıza entegre edilecek 10 kod satırıyla temel Steam başarımlarını uygulamanıza entegre edebilirsiniz. Steamworks SDK, örnek bir uygulama olan ve Steam özelliklerinin kapsayıcılığını gösteren Spacewar ile birlikte gelir. Steam özelliklerinin tümünü çalışırken gözlemlemek istiyorsanız yapmanız gereken ilk şey bu uygulamayı incelemektir. Bu rehberde; süreci olabildiğince anlaşılır kılmak için Spacewar'da ve İstatistikler ve Başarımlar API'ında yer alan tüm detaylara girmeyip sadece Steam İstatistikleri ile ilgili temel bilgilere yer verdik. İstatistikler ve başarımlar arasında oldukça fazla kesişen nokta olduğunu lütfen aklınızda bulundurun. Bu nedenle, bu ikisini entegre edecekseniz birçok çağrı birleştirilebilir.

Başarım Setleri tamamen Steamworks'te yapılandırılır. Herhangi bir ek kod gerekli değildir. Oyununuz, bu rehberde açıklanan API adlarını ve çağrıları kullanarak bir setteki başarımları açar.

1. Adım - Oyununuzun başarımlarını tanımlamak

Başarımlar uygulamaya özgüdür ve Steamworks uygulama yöneticisi arka ucundaki Başarım Yapılandırması sayfasında ayarlanır. Aşağıdaki başarımlar listesi Steamworks örnek uygulaması olan Spacewar'dan alınmıştır:

spacewar_achievement_examplescreenshot.jpg

Başarım Düzenleyicisine Erişim

Başarımlar, başarım düzenleyicisinde oluşturulur ve yönetilir:
  1. Steamworks'te uygulamanızın açılış sayfasından Steamworks Ayarlarını Düzenle seçeneğini seçin.
  2. İstatistikler ve Başarımlar > Başarımlar seçeneğini seçin.
  3. Sayfanın üstündeki afişe tıklayarak yeni başarım düzenleyicisini açın.

Başarım düzenleyicisini kullanabilmek için uygulama bilgilerini düzenleme iznine sahip olmanız gerekir.

Düzenleyicide iki sekme bulunur:
  • Başarımları Yönet - Setleri ve başarımları oluşturmak, düzenlemek ve organize etmek için kullanılır.
  • Toplu İçe/Dışa Aktar - Toplu hâlde, başarımları CSV dosyası olarak içe/dışa aktarmak ve simgeleri yüklemek için kullanılır. Aşağıdaki Toplu İçe/Dışa Aktarma başlığına göz atabilirsiniz.

Düzenleyicinin üst kısmında, oyununuzun limitleriniz dışında kaç başarım ve set kullandığı gösterilir ve kendi başarımlar sayfanızda başarımlarınızın ön izlemesini görmeniz için bağlantılar bulunur.

Başarım Oluşturma ve Düzenleme

Başka bir sete atamadığınız sürece tüm başarımlarınız Ana oyun başarımları setine aittir. Bir başarım oluşturmak için, başarımın ait olacağı sette Başarım Oluştur seçeneğine tıklayın. Bir başarımı düzenlemek için, başarımlar tablosunda o başarımı seçin.

AlanAçıklama
API AdıOyununuzun Steamworks API'ına ilettiği benzersiz ad (ör. ACH_WIN_ONE_GAME). Gereklidir.
Görünen AdOyunculara gösterilecek başarım adı. Yerelleştirilebilir.
AçıklamaOyunculara gösterilecek başarım açıklaması. Yerelleştirilebilir.
SimgelerKazanılan Başarım Simgesi ve Kazanılmayan Başarım Simgesi. Aşağıdaki Simgeler başlığına göz atabilirsiniz.
AyarlayanBaşarımları açabilecek olan taraf: İstemci, bir oyun sunucusu veya resmî oyun sunucusu.
İlerleme İstatistiğiBu başarımdaki ilerlemeyi göstermek için isteğe bağlı olarak kullanılan bir istatistik. İlerlemeyi %0 ile %100 arasında gösteren İstatistik Aralığı ile birlikte kullanılabilir.
GörünürlükGörünür başarımlar için Görünür ibaresini, açılana kadar ayrıntıları gizlenecek başarımlar içinse Spoiler ibaresini gösterir.
İsteğe Bağlı DurumBaşarım mevcutsa Mevcut ibaresini, başarım artık kazanılamıyorsa Arşivlendi ibaresini gösterir.
SetteBu başarımın ait olduğu set.

Başarımlar tablosu aynı zamanda her bir başarımın ID'sini, bulunduğu seti, ayarlayan tarafı ve global açılma oranını gösterir. Araç çubuğundaki Filtrele kutusunu kullanarak ada, açıklamaya veya API adına göre başarımları bulabilirsiniz.

Bir başarım silindiğinde, o başarımı hâlihazırda açmış olan kullanıcılar da dahil olmak üzere herkes için kaldırılır. Başarım oyuncular tarafından zaten kazanılmışsa, düzenleyicide başarımı silmek yerine arşivleme seçeneği önerilecektir. Aşağıdaki Arşivleme başlığına göz atabilirsiniz.

Simgeler

En iyi sonuçlar için başarım simgeleri 256 x 256 piksel ve PNG olmalıdır. Simgeler en küçük 64 x 64 olabilir ancak daha büyük boyutlar önerilir. Simgeler kare şeklinde olmalıdır. Büyük simgeler 256 x 256 boyutuna küçültülür. JPG formatı da kabul edilir.

Kazanılan başarım simgelerinin renkli, kazanılmayan başarım simgelerinin ise siyah beyaz olmasını tavsiye ederiz. Kazanılmayan başarım simgesini sizin oluşturmanıza gerek yoktur: Kazanılan başarım simgesinden siyah beyaz bir kazanılmayan başarım simgesi oluşturmak için başarım düzenleyicisinde Oluştur'a tıklayın veya toplu yükleme sırasında Kazanılmamış başarımların simgelerini otomatik oluştur seçeneğini kullanın. Oluşturulan simgeyi istediğiniz zaman kendi simgenizle değiştirebilirsiniz.

Yerelleştirme

Başarımlarınızı oyununuzun desteklediği her bir dilde görüntülemek ve düzenlemek için araç çubuğundaki Dil seçiciyi kullanın. Yerelleştirilmiş metni bulunmayan bazı diller için araç çubuğunda bir uyarı simgesi gösterilir ve yerelleştirilmiş metne sahip olmayan her başarım veya set, düzenleyicide işaretlenir.

Başarımlarınızın destekleyeceği dilleri seçmek için, araç çubuğundaki Dil seçeneğinin yanında bulunan Düzenle butonuna veya Toplu İçe/Dışa Aktar sekmesinde yer alan Dilleri Yapılandır seçeneğine tıklayın. Düzenleyicide ve başarım yerelleştirmesi CSV dosyalarında bu diller kullanılır. Başarımlarınızı API aracılığıyla sorguladığınızda Steam, istenen dildeki metni döndürür.

Limitler

ÖğeLimit
Uygulama başına başarım5.000 (Henüz incelenmemiş uygulamalar için 100)
Uygulama başına setAna oyun seti de dahil 40

Arşivlenen başarım sayısı, başarım limitine dahildir.

2. Adım - Başarımları hazırlamak

Aşağıdaki kod oyundan bağımsızdır ve oyununuza istediğiniz şekilde eklenebilir. Sınıf olduğu şekliyle işlevseldir fakat diğer ihtiyaçlarınıza uyum sağlayacak şekilde genişletilebilir. Bu kodun tamamı doğrudan Spacewar'un örnek StatsAndAchievements.cpp/h dosyalarından alınmıştır.

Üstbilgi Dosyası

Öncelikle Steam'den alınan başarım verilerini tutacak bir yapı tanımlıyoruz ve bu tür objelerin yaratılması için bir makro sağlıyoruz. Bu veri doğrudan Başarım Yapılandırması sayfasında bulunanlarla eşleşir.
#define _ACH_ID( id, name ) { id, #id, name, "", 0, 0 } struct Achievement_t { int m_eAchievementID; const char *m_pchAchievementID; char m_rgchName[128]; char m_rgchDescription[256]; bool m_bAchieved; int m_iIconImage; };

Ardından bütün Steam İstatistik API'ı çağrılarını saracak ve bütün Steam geri çağrılarını yapacak yardımcı bir sınıf tanımlıyoruz.
class CSteamAchievements { private: int64 m_iAppID; // Geçerli AppID Achievement_t *m_pAchievements; // Başarım verileri int m_iNumAchievements; // Başarım sayısı bool m_bInitialized; // API'ı kullanmaya hazır mıyız? public: CSteamAchievements(Achievement_t *Achievements, int NumAchievements); ~CSteamAchievements(); bool Initialize(); bool SetAchievement(const char* ID); STEAM_CALLBACK( CSteamAchievements, OnUserStatsStored, UserStatsStored_t, m_CallbackUserStatsStored ); STEAM_CALLBACK( CSteamAchievements, OnAchievementStored, UserAchievementStored_t, m_CallbackAchievementStored ); };

Kod Dosyası

Kurucu

Parametreler - Kurucu, bir başarı dizininden dizinin uzunluğunu da içeren bir işaretleyici alır. Bu dizinin biçimi daha sonra ana oyunun koduyla dolacaktır.
Dönüş - Mevcut Değil
Eylem - Kurucu birçok üyeyi başlatır ve aynı zamanda şu anda çalıştırdığımız AppID'yi de alır. Buna ek olarak, Steam'e yapılan asenkron çağrıları işleyebilmek için geri çağrı yöntemlerine bağlanır. Son olarak, API'ın hazır olduğunu kontrol etmek için ilk Initialize() çağrısı yapılır.
CSteamAchievements::CSteamAchievements(Achievement_t *Achievements, int NumAchievements): m_iAppID( 0 ), m_bInitialized( false ), m_CallbackUserStatsStored( this, &CSteamAchievements::OnUserStatsStored ), m_CallbackAchievementStored( this, &CSteamAchievements::OnAchievementStored ) { m_iAppID = SteamUtils()->GetAppID(); m_pAchievements = Achievements; m_iNumAchievements = NumAchievements; m_bInitialized = Initialize(); }

Initialize()

Parametreler - Hiçbiri
Dönüş - Çağrının başarılı olup olmadığını temsil eden bir boole değer. Çağrı başarısız olmuşsa bunun en muhtemel sebebi Steam'in başlatılmamış olmasıdır. Bu çağrıyı yaparken Steam istemcisinin çalışıyor olduğundan ve önceden SteamAPI_Init'in çağrıldığından emin olun.
Eylem - Steam'in yüklendiğinden ve bir kullanıcının oturum açmış olduğundan emin olur.
bool CSteamAchievements::Initialize() { // Steam yüklü mü? Aksi takdirde istatistik elde edemeyiz. if ( NULL == SteamUserStats() || NULL == SteamUser() ) { return false; } // Kullanıcı giriş yaptı mı? Yapmamışsa istatistik elde edemeyiz. if ( !SteamUser()->BLoggedOn() ) { return false; } return true; }

SetAchievement()

Parametreler - Ayarlamak istediğiniz başarımın tanıtıcı dizisi (ör. "ACH_WIN_ONE_GAME")
Dönüş - Çağrının başarılı olup olmadığını temsil eden bir boole değer. Eğer çağrı başarısız olmuşsa bunun sebebi Steam'in başlatılmamış olmasıdır.
Eylem - Bu yöntem bir başarımı kazanılan başarım olarak değiştirir ve sonuçlarını Steam'e gönderir. Bir başarımı birden fazla kez belirleyebilirsiniz. Böylece henüz elde edilmemiş başarımları belirlemek zorunda kalmazsınız. Bu iki geri çağrıyı tetikleyen asenkron bir çağrıdır: OnUserStatsStored() ve OnAchievementStored().
bool CSteamAchievements::SetAchievement(const char* ID) { // Steam'den bir geri çağrı aldık mı? if (m_bInitialized) { SteamUserStats()->SetAchievement(ID); return SteamUserStats()->StoreStats(); } // Aksi takdirde başarımları belirleyemeyiz. return false; }

OnUserStatsStored()

Parametreler - Mevcut Değil
Dönüş - Hiçbir şey
Eylem - Bu yöntem, Steam'de istatistik saklamaya çalıştığınız zaman çağrılan bir geri çağrıdır.
void CSteamAchievements::OnUserStatsStored( UserStatsStored_t *pCallback ) { // diğer oyunlardan gelen istatistikler için geri çağrılar alabiliriz, bunları yok say if ( m_iAppID == pCallback->m_nGameID ) { if ( k_EResultOK == pCallback->m_eResult ) { OutputDebugString( "Stored stats for Steam\n" ); } else { char buffer[128]; _snprintf( buffer, 128, "StatsStored - failed, %d\n", pCallback->m_eResult ); OutputDebugString( buffer ); } } }

OnAchievementStored()

Parametreler - Mevcut Değil
Dönüş - Hiçbir şey
Eylem - Bu yöntem, başarımları başarılı bir şekilde Steam'de sakladığınız zaman çağrılan bir geri çağrıdır.
void CSteamAchievements::OnAchievementStored( UserAchievementStored_t *pCallback ) { // diğer oyunlardan gelen istatistikler için geri çağrılar alabiliriz, bunları yok say if ( m_iAppID == pCallback->m_nGameID ) { OutputDebugString( "Stored Achievement for Steam\n" ); } }

3. Adım - Oyununuza entegre etmek

Aşağıda oyununuzun uygun yerlerine entegre etmeniz gereken kod parçalarının tam bir listesi yer almaktadır.

Tanımlamalar ve Küresel Değişkenler

Aşağıda "Achievements" ile derlemek üzere gerekli olan "include" değerleri vardır; oyunumuza özgü başarımların sıralaması ve yardımcı objemiz için küresel bir işaretleyici. Başarımların Steamworks'teki yönetici sayfasındakilerle eşleştiğini unutmayın.
... #include "steam_api.h" // Başarımlarımızı tanımlamak enum EAchievements { ACH_WIN_ONE_GAME = 0, ACH_WIN_100_GAMES = 1, ACH_TRAVEL_FAR_ACCUM = 2, ACH_TRAVEL_FAR_SINGLE = 3, }; // Başarımlar ve durumlarıyla ilgili veri tutan başarım dizini Achievement_t g_Achievements[] = { _ACH_ID( ACH_WIN_ONE_GAME, "Winner" ), _ACH_ID( ACH_WIN_100_GAMES, "Champion" ), _ACH_ID( ACH_TRAVEL_FAR_ACCUM, "Interstellar" ), _ACH_ID( ACH_TRAVEL_FAR_SINGLE, "Orbiter" ), }; // "Achievements" öğesine küresel erişim CSteamAchievements* g_SteamAchievements = NULL; ...

Başlatma

SteamAPI_Init'e yapılan çağrı Steam'i tamamen başlatır ve bu çağrı diğer her şeyden önce yapılmalıdır. Eğer bu çağrı başarılı olursa, başarımlar dizininden geçerken dizinin boyutuyla birlikte bir yardımcı obje oluştururuz.
... // Steam'i başlat bool bRet = SteamAPI_Init(); // Steam başarılı bir şekilde başladıysa "SteamAchievements" objesini oluştur if (bRet) { g_SteamAchievements = new CSteamAchievements(g_Achievements, 4); } ...

Geri Çağrıların İşlenmesi

Bütün Steam geri çağrılarını işleyebilmemiz için düzenli olarak yeni mesajlar göndermeliyiz. Bunun başarılabilmesi için şu çağrıyı oyunun döngüsüne eklemelisiniz.
... SteamAPI_RunCallbacks(); ...

Başarımların Tetiklenmesi

Başarım tanımlayıcısı içeren tek bir çağrıyla bir başarım tetiklenebilir.
... if (g_SteamAchievements) g_SteamAchievements->SetAchievement("ACH_WIN_100_GAMES"); ...

Not: Steam, bir DLC'ye erişimi olmayan bir oyuncunun bu DLC setindeki bir başarımı veya arşivlenen bir setteki bir başarımı kazanmasını engeller. Oyununuzun, DLC başarımlarını yalnızca ilgili DLC'ye sahip oyunculara kazandırdığından ve arşivlenen başarımların kazanılamaz hâle geldiğinden emin olun. Ayrıntılı bilgi için aşağıdaki Başarım Setleri başlığına göz atabilirsiniz.

Kapatma

SteamAPI_Shutdown'a yapılan çağrı muhtemelen kodunuzda zaten mevcuttur. Steam'i kapatır ve uygulamadan çıkmadan önce çağrılması gereklidir. Son olarak da oluşturduğumuz yardımcı objeyi siliyoruz.
... // Steam'i kapat SteamAPI_Shutdown(); // "SteamAchievements" objelerini sil if (g_SteamAchievements) delete g_SteamAchievements; ...

4. Adım - Test etmek ve sorun gidermek


Oyununuza kod eklemeden istatistikleri ayarlamak veya silmek için Steam istemcisi konsolunu kullanabilirsiniz. "steam.exe -console" ile çalıştırın ardından:
  • achievement_clear <appid> <achievement name>
  • reset_all_stats <appid>

Ön İzleme ve Yayınlama

Başarım düzenleyicisinde yaptığınız değişiklikler, uygulamanızın taslak yapılandırmasına kaydedilir. Değişiklikleri yayınlamak için, diğer Steamworks ayarlarında olduğu gibi, Steamworks Ayarlarını Düzenle bölümünde Yayınla sekmesini kullanın.

Başarımlarınızı yayınlamadan önce, düzenleyicinin üst kısmındaki bağlantıyı kullanarak kendi Steam başarımlar sayfanızda ön izleyebilirsiniz. "Sadece geliştirici" setlerini kullanarak yeni başarımları oyunculara göstermeden test edebilirsiniz.

Başarımları tamamen etkinleştirmek ve yayınlamaya yönelik yapılacaklar listenizi tamamlamak için, mağaza sayfanızın "Temel Bilgiler" bölümündeki Desteklenen Özellikler altında bulunan Steam Başarımları seçeneğini de işaretlemeniz gerekir. Yayınlamaya yönelik yapılacaklar listesini tamamlamak için, her başarımın yapılandırdığınız her dilde bir adı ve simgesi olmalıdır.

Başarım Setleri

Başarım setleri, oyununuzdaki başarımları adlandırılmış gruplar hâlinde düzenlemenize, oyuncuların her set için tamamlama durumunu takip etmenize ve oyuncuların tamamlama durumunu etkilemeden zaman içinde başarımlar eklemenize veya kaldırmanıza olanak tanır. Başarım setleri ile:
  • Başarımları oyun moduna, karaktere, bölüme veya etkinliğe göre gruplayarak oyununuz için en mantıklı şekilde düzenleyebilirsiniz.
  • Yalnızca ilgili DLC'ye sahip oyuncuların tamamlama durumunu etkileyecek DLC başarımları ekleyebilirsiniz.
  • Kaldırılan içeriklere ait başarımları ve setleri, ilgili başarımları kazanmış olan oyunculardan silinmeyecek şekilde arşivleyebilirsiniz.
  • Oyunculardan gizlenen, "sadece geliştirici" setleri aracılığıyla başarımlar oluşturup test edebilirsiniz.
  • CSV ve görsel dosyalarını kullanarak başarım tanımlarını, set atamalarını, simgeleri ve yerelleştirmeyi toplu bir şekilde yönetebilirsiniz.

Ana Oyun Seti

Her oyunun ana oyun başarımları seti vardır. Başka bir sete atanmamış başarımlar ana oyun setine aittir. Bu nedenle, herhangi bir ek set oluşturmazsanız tüm başarımlarınız ana oyun setinde yer alacaktır. Çoğu oyun için bu set, başarımların büyük çoğunluğunu içerir.

Ana oyun seti yeniden adlandırılamaz, silinemez veya yeniden sıralanamaz. Boş olmadığı sürece her zaman ilk sırada görüntülenir. Boşsa görüntülenmez ancak yine de başarım seti limitine dâhil edilir.

Özel Setler

Başarımlarınızı düzenlemek için ek setler oluşturabilirsiniz. Her setin oyunculara gösterilen bir adı ve isteğe bağlı bir kısıtlaması vardır:

KısıtlamaSetteki başarımları kazanabilecek kullanıcılar
Oyunu oynayan tüm kullanıcılarOyunu oynayabilen herkes.
(DLC) sahipleriYalnızca seçilen DLC'yi oynayabilen oyuncular.

Oyuncular her set için ilerlemelerini ayrı olarak görebilir ve setin tamamlanma durumu, oyunun geri kalanından bağımsız olarak takip edilir.

DLC Setleri

Yalnızca DLC sahiplerinin erişebileceği setler DLC seti olarak tanımlanır. DLC setleri:
  • Tüm oyuncular tarafından oyunun başarımlar sayfasında görüntülenebilir fakat sadece DLC sahipleri bu başarımları kazanabilir.
  • Ana oyunun veya başka bir setin tamamlanma durumunu etkilemez.
  • DLC yayınlanana kadar oyunculardan gizli kalır. Bu sayede, yeni DLC'ler yayınlanmadan önce başarımları yapılandırabilir ve test edebilirsiniz.
  • Başarımlar sayfasında DLC'nin mağazasına ait oyun görselini ve bağlantıyı kullanır. DLC'nin yayınlanmış bir mağaza sayfası yoksa, ana oyuna ait oyun görseli ve mağaza bağlantısı kullanılır ve düzenleyici sizi bu konuda bilgilendirir.
  • DLC'nin mağaza sayfasındaki başarımlar panelinde gösterilir.

Set adı "DLC" ön ekiyle görüntülenecektir. Bu nedenle ada "DLC" ifadesini eklemenize gerek yoktur.

"Sadece Geliştirici" Setleri

Sadece geliştirici olarak işaretlenmiş bir set, uygulamanın yayınlanıp yayınlanmadığına bakılmaksızın yalnızca uygulamanın geliştiricileri tarafından görülebilir. "Sadece geliştirici" setlerindeki başarımları yalnızca geliştiriciler açabilir. "Sadece geliştirici" setleri, yeni başarımlar oluşturmak ve bunları yayınlanmadan önce test etmek için kullanışlıdır.

Arşivleme

Bazen bir oyun modu değiştirilebilir, sezonluk bir etkinlik sona erebilir veya bir başarım artık kazanılamaz hâle gelebilir. Oyuncuların kazandığı başarımları silmek yerine arşivleyebilirsiniz.
  • Arşivlenen başarımlar, onları kazanan oyuncular tarafından görülebilir ve profillerinde sergilenebilir. Arşivlenen bir başarımı kazanmamış olan oyuncular bu başarımı göremez ve başarım, ait olduğu setin tamamlanma durumunu etkilemez.
  • Arşivlenen setler, yalnızca daha önce o setten bir başarım kazanmış olan oyuncular tarafından görülebilir. Arşivlenen bir setteki hiçbir başarım kazanılamaz. Arşivlenen bir setteki başarımları kazanmış olan oyuncular, o setin tüm başarımlarını görebilir.

Arşivleme işlemi, oyununuzu değiştirmez. Bir başarımı arşivlediğinizde, oyununuzun bu başarımı artık kazandırmadığından emin olun.

Spoiler İçeren Başarımlar

Daha önce gizli olarak işaretlenmiş başarımlar artık spoiler içeren başarımlar olarak adlandırılıyor. Oyununuzun içeriğini açık etmemek için, spoiler içeren başarımların adı ve açıklaması yalnızca oyuncular başarımı açtıklarında veya ilgili başarımı görmeyi seçtiklerinde gösterilecektir. Spoiler içeren ve arşivlenen başarımlar, mağaza sayfanızdaki başarımlar panelinde gösterilmez.

Tamamlanma Durumu

Tamamlanma durumu her set için ayrı olarak takip edilir:
  • Oyuncular, bir setteki tüm başarımları kazanarak seti tamamlar. Arşivlenen ve henüz kazanılmamış başarımlar, setin tamamlanması için gerekli değildir.
  • Bir oyuncu bir seti tamamladığında, o set tamamlanmış olarak kalır. Sonradan ilgili sete yeni başarımlar eklense dahi bu durum değişmez.
  • DLC setleri, yalnızca oyuncu o DLC'ye sahipse tamamlanma durumunu etkiler.

Oyuncular Steam profillerinde kaç oyun ve set tamamladıklarını gösterebilir. Bir oyuncu oynadığı oyuna ait herhangi bir seti tamamladığında ilgili oyun, oyuncunun profilindeki "Tamamlayıcı Vitrini" için kullanılabilir.

Set Oluşturma

  1. Başarımları Yönet sekmesinde Yeni Set Oluştur butonuna tıklayın.
  2. Bir Set adı girin. Bu set adı, oyunculara gösterilir.
  3. Kısıtlamalar altında, Oyunun tüm oyuncuları öğesini seçin ya da seti yalnızca ilgili DLC'ye sahip kullanıcılarla sınırlamak için bir DLC seçin. DLC listesi, oyununuz için listelenen DLC'leri ve bunların App ID'lerini içerir.
  4. İsteğe bağlı olarak seti Sadece geliştirici olarak işaretleyebilirsiniz.
  5. Seti kaydedin.

Başarım içermeyen bir set, kimseye gösterilmeyecektir.

Setleri Düzenleme

İlgili setin menüsünü açın ve adını, kısıtlamalarını ya da "sadece geliştirici" durumunu değiştirmek veya seti Arşivlendi olarak işaretlemek için Seti düzenle öğesini seçin.

Her setin görünürlüğü düzenleyicide gösterilir:

GörünürlükAnlamı
GörünürOyuncular bu seti görebilir.
Kısıtlamalar nedeniyle gizliSetin "sadece geliştirici" olarak ayarlanmış olması veya DLC'nin henüz çıkmaması gibi nedenlerle oyuncular bu seti henüz göremez.
Yayınlandığında görünür olacakDeğişikliklerinizi yayınladığınızda oyuncular bu seti görebilecek.

Setleri Yeniden Sıralama

Araç çubuğundaki Setleri Yeniden Sırala öğesine tıklayın, ardından setlerinizi sürükleyip bırakarak oyuncuların bu setleri göreceği sırayı belirleyin. Ana oyun setinin sırası değiştirilemez.

Setleri Silme

Setin menüsünü açın ve Seti sil öğesini seçin. Bir seti silebilmeniz için öncelikle içindeki tüm başarımları taşımanız veya silmeniz gerekir. Bir seti, oyuncuların kazandığı başarımları silmeden kaldırmak için ilgili seti arşivleyebilirsiniz.

Başarımları Setler Arasında Taşıma

Tek bir başarımı taşımak için Sette alanını değiştirin. Aynı anda birden fazla başarımı taşımak için Toplu Taşı seçeneğini kullanın:
  1. Başarımlar tablosu başlığındaki Toplu Taşı seçeneğine tıklayın.
  2. Taşımak istediğiniz başarımları işaretleyin. Seçilen başarımların sayısı sayfanın altında gösterilir.
  3. Taşınacak mevcut bir seti seçin veya yeni bir set oluşturmak için Yeni Set Oluştur... öğesini seçin.
  4. Taşı seçeneğine tıklayın.
Örneğin, "Toplu Taşıma" modunu etkinleştirebilir, arama alanını kullanarak başarımları API adına göre filtreleyebilir ve ardından bir gruptaki görünür tüm başarımları seçip taşımak için sütun başlıklarındaki kutucuğa tıklayabilirsiniz. Bu yöntem oldukça basittir ve size büyük ölçüde zaman kazandırabilir.

Düzenleyici, oyuncuları etkileyebilecek bir taşıma işleminden önce sizi bilgilendirecektir:
  • Başarımlar görünür bir setten gizli veya yayınlanmamış bir sete taşınırsa, bu başarımları kazanmış olan oyunculardan gizlenirler.
  • Başarımlar oyuncuların ilerleme kaydettiği bir sete taşınırsa, oyuncuların tamamlanma durumu olumsuz etkilenebilir.

Not: Yayınlanmış bir sete başarım eklemek oyuncuların tamamlama durumunu bozmaz ancak bu durum tamamlama bilgisinin garip bir şekilde görüntülenmesine neden olabilir. Bunun yerine yeni bir set ekleyebilirsiniz.

Toplu İçe/Dışa Aktarma

Toplu İçe/Dışa Aktar sekmesi, başarımlarınızı dosyalar hâlinde yönetmenize olanak tanır: CSV dosyalarını dışa aktarabilir, dosyaları bir elektronik tabloda düzenleyebilir ve simgelerinizle birlikte geri yükleyebilirsiniz.

İşlem Sırası

  1. Mevcut verilerinizi indirmek için Başarım Tanımlarını Dışa Aktar (CSV), Yerelleştirmeyi Dışa Aktar (CSV) ve/veya Set Yerelleştirmesini Dışa Aktar (CSV) seçeneğine tıklayın.
  2. Dosyaları düzenleyin. Üstbilgi satırları, spoiler (true veya false) gibi her sütunu açıklayan parantez içinde notlar içerir. Dosyayı yüklediğinizde bu notlar yok sayılır.
  3. .csv ve .png dosyalarınızı yükleme kutusuna sürükleyin veya Dosya Seç... butonuna tıklayın. Aynı anda birden çok dosya yükleyebilirsiniz.
  4. Herhangi bir hata olmaması için Yüklenen Dosyalar listesini gözden geçirin. Bir dosyayı kaldırmak, bu dosyanın katkıda bulunduğu her şeyi geri alır. Bir dosyayı değiştirmek için dosyayı düzeltip yeniden yükleyin.
  5. Bekleyen Değişiklikler'i gözden geçirin. İçe aktarılan verileri kaydet butonuna tıklayana kadar hiçbir şey kaydedilmez.

Oyununuzun henüz bir başarımı yoksa, dışa aktarılan tanım ve yerelleştirme dosyaları, EXAMPLE_ ile başlayan birkaç örnek satır içeren şablonlar olur. Bunların üzerine yazabilir, silebilir veya içe aktarma işleminin nasıl çalıştığını görmek için şablonu olduğu gibi yükleyebilirsiniz.

Başarım Tanımları CSV Dosyası

<appid>-achievements-definitions.csv olarak dışa aktarılır. Her satırda bir başarım tanımlanır.

SütunAçıklama
api_nameGerekli, benzersiz. Oyundan API'a iletilen ad.
setidİsteğe bağlı. Mevcut bir setin ID'si. Ana oyun seti için boş bırakın.
permissionClient, GameServer veya OfficialGameServer.
spoilertrue veya false.
archivedtrue veya false.
progress_stat_nameİsteğe bağlı. Mevcut bir istatistiğin, ilerleme çubuğunda kullanılacak adı. İlerleme çubuğu göstermek istemiyorsanız boş bırakın.
progress_stat_minSayı. İstatistiğin kendi minimum değerinden düşük olamaz. İstatistik tam sayı ise, bu değer tam sayı olmalıdır.
progress_stat_maxSayı. progress_stat_min değerinden büyüktür ve istatistiğin kendi maksimum değerinden yüksek olamaz. İstatistik tam sayı ise, bu değer tam sayı olmalıdır.

Bir başarım tanımları CSV dosyası yüklediğinizde, başarımlar API adına göre mevcut başarımlarınızla karşılaştırılır:
  • Eklenecek - Mevcut bir API adıyla eşleşmeyen satırlar, yeni başarımlar olarak eklenir. Mevcut bir başarımın API adını değiştirmek istiyorsanız, ilk olarak düzenleyicide değiştirin, aksi hâlde eski veriler kaldırılacaktır.
  • Değiştirilecek - Değerleri değişmiş olan mevcut başarımlar güncellenir.
  • Değiştirilmeyen - Değerleri değişmemiş olan mevcut başarımlar olduğu gibi bırakılır.
  • CSV'de eksik - Dosyada bulunmayan mevcut başarımlar, Bu başarımları sil seçeneği işaretlenmediği sürece korunur. Kaldırılan başarımları geri ekleyemeyeceğiniz için başarımları kaldırırken dikkatli olun.

Not: Başarım adları ve açıklamaları, tanımlar CSV dosyasının bir parçası değildir. Bunları belirlemek için başarım yerelleştirmesi CSV dosyasını kullanın.

Not: Bir ilerleme istatistiğinin önceden mevcut olması ve başarımla aynı izne sahip olması gerekir. Yeni istatistikler oluşturmak için önce istatistiklerinizi düzenleyin.

Başarım Yerelleştirmesi CSV Dosyası

<appid>-achievements-localization.csv olarak dışa aktarılır. Her başarım için iki satır bulunur. Biri başarımın adı, diğeri ise açıklamasıdır.

SütunAçıklama
api_nameGerekli. Başarım tanımları CSV dosyasındaki bir ​​api_name değeriyle veya mevcut bir başarımla eşleşmelidir. Bu sütundaki API adları büyük/küçük harf duyarlıdır.
fieldname veya description.
(her dil için bir sütun)O dili belirten metin; ör. english, french, german.

Dil sütunları, başarımlarınız için yapılandırılan dillerle eşleşir. Yerelleştirmeye yeni başlıyorsanız, dışa aktarılan CSV dosyasının ilgili dil sütunlarını içermesi için öncelikle istediğiniz dilleri yapılandırın.

Bir başarım tanımları CSV dosyası ile başarım yerelleştirmesi CSV dosyasını birlikte yüklerseniz, tanım dosyasında eksik olan başarımların yerelleştirme bilgileri güncellenmeyecektir.

Başarım Seti Yerelleştirme Dosyası (CSV)

<appid>-achievement-sets-localization.csv olarak dışa aktarılır. Her satırda bir set adı tanımlanır.

SütunAçıklama
setidGerekli. Mevcut bir setin ID'si.
(her dil için bir sütun)İlgili dildeki set adı. english alanı gereklidir.

Burada yerelleştirilebilmeleri için önce setlerin düzenleyicide oluşturulması gerekir. Ana oyun setinin adı değiştirilemez.

Simge Dosyaları

Simge dosyalarını, başarım API adının sonuna _ACHIEVED veya _UNACHIEVED gelecek şekilde adlandırın. Örneğin; LEVEL_20_ACHIEVED.png ve LEVEL_20_UNACHIEVED.png. Simgeler, eşleşen başarıma otomatik olarak atanır.

Yüklendiğiniz tüm kazanılan başarım simgelerinin siyah beyaz kazanılmayan başarım versiyonlarını oluşturmak için Kazanılmamış başarımların simgelerini otomatik oluştur seçeneğini işaretleyin.

Bir başarım tanımları CSV dosyasını simgelerinizle birlikte yüklerseniz, simgeler yalnızca o CSV dosyasındaki başarımlara atanır. Simgeleri ayrı olarak yüklemek istiyorsanız başarım tanımları CSV dosyası olmadan yükleyebilirsiniz.

Oyunculara Görünen Şeyler

Başarımlar Sayfası

Oyuncular, başarımlarınızı Steam başarımlar sayfasında, Steam istemcisinde ve Steam Topluluğu internet sitesinde görebilirler. Başarımlar sayfası:
  • DLC setleri de dahil olmak üzere her set için ilerleme ve tamamlanma durumunu gösterir.
  • Oyuncuların kendi başarımlarını maksimum üç arkadaşlarının başarımlarıyla karşılaştırmalarına olanak tanır.
  • Her başarımın global açılma oranını gösterir ve nadir başarımları öne çıkarır.
  • Oyuncuların başarımları aramalarına ve açılma durumu veya sete göre başarımları filtrelemelerine olanak tanır.

Oyunculara, oyununuzun başarımları için doğrudan bir bağlantı verebilirsiniz:

URLİçerik
https://steamcommunity.com/achievements/<appid>Oyununuzun başarımları. Belirli bir oyuncunun ilerleme durumunu içermez. Oyuncunun oyuna sahip olma durumuna bakılmaksızın kullanılabilir.

Mağaza Sayfaları

Mağaza sayfanızdaki başarımlar paneli, oyununuzdaki başarımları gösterir ancak "Spoiler" ve "Arşivlendi" kategorisindeki başarımları içermez. DLC mağaza sayfası, ilgili DLC setindeki başarımları gösterir.

Profiller

Oyuncular, tamamladıkları oyun ve set sayısını profillerindeki "Başarım Vitrini" bölümünde gösterebilir ve herhangi bir oyunun setini tamamladıktan sonra oyunları "Tamamlayıcı Vitrini" bölümünde sergileyebilirler.

Öneriler

  • Yeni içerikler için yeni setler ekleyin. Oyuncuların hâlihazırda tamamladıkları bir sete başarım eklemek, set tamamlanmış olarak işaretleneceği ancak açılmamış başarımlar içereceği için kafa karışıklığı yaratabilir. DLC, güncelleme, yeni mod vb. gibi yeni içerikler için yeni bir set oluşturmak, oyuncuların ilerleme durumunu takip etmelerini kolaylaştırır.
  • Silmek yerine arşivleyin. Oyuncular bir başarımı kazanmışsa, bu başarımı silmek yerine arşivleyin. Böylece oyuncular, kazandıkları başarımları koruyabilirler.
  • DLC başarımları için DLC setlerini kullanın. Böylece ana oyunun tamamlanma durumu, DLC'lerin tamamlanma durumundan ayrı tutulur ve o DLC'ye sahip olmayan oyuncular da ana oyununuzu tamamlayabilir.
  • Kısa ve açıklayıcı set adları kullanın. Set adları, Steam istemcisi de dahil olmak üzere oyunculara birçok yerde gösterilir.
  • Set adlarını yerelleştirin. Başarım seti yerelleştirme dosyası (CSV) veya düzenleyici aracılığıyla, oyununuzun desteklediği her dil için set adlarını yerelleştirin.
  • "Sadece geliştirici" setleriyle test yapın. Yeni başarımları oyunculara sunmadan önce "sadece geliştirici" setleriyle test edin.

Sıkça Sorulan Sorular

Başarım setlerini kullanmak için oyunumu veya Steamworks SDK'i güncellemem gerekiyor mu?

Hayır. Setler Steamworks üzerinden yapılandırılır ve oyununuz, daha önce olduğu gibi aynı API adlarını ve çağrıları kullanarak başarımları açar.

Mevcut başarımlarım ne olacak?

Hepsi ana oyun setinde. Başka bir set oluşturmazsanız, oyuncular başarımlarınızı yeni başarımlar sayfasında tek bir liste olarak görecektir.

Yeni başarımlar eklersem oyuncuların tamamlama durumu olumsuz etkilenir mi?

Bir seti tamamlamış olan oyuncuların bu tamamlama durumu korunur. Ancak yayınlanmış bir sete başarım eklemek, o seti henüz bitirmemiş oyuncuların tamamlama sürecini uzatacaktır. Bu nedenle yeni içerikler için yeni setler eklemenizi tavsiye ediyoruz.

Bir başarımı arşivlemek ile silmek arasındaki fark nedir?

Arşivlenen başarımlar, onları kazanan oyuncular tarafından görülebilir ve henüz kazanmayan oyuncuların tamamlama durumunu etkilemez. Silinen başarımlar herkes için kaldırılır.

Bir başarım yayınlandıktan sonra bu başarımı farklı bir sete taşıyabilir miyim?

Evet ancak yapacağınız taşıma işlemi başarımı kazanmış oyunculardan gizleyecekse veya oyuncuların tamamlama durumunu etkileyecekse düzenleyici sizi bilgilendirecektir.

Kaç set oluşturabilirim?

Ana oyun seti de dâhil en fazla 40.