Android oyunlarında skor tabloları

Bu kılavuzda, Android uygulamasında skor tablosu API'lerini kullanarak görsel skor tabloları oluşturma, oyuncuların skorlarını kaydetme ve bu skorları oyuncuların önceki oyun oturumlarındaki skorlarıyla karşılaştırma işlemleri açıklanmaktadır. API'leri com.google.android.gms.games ve com.google.android.gms.games.leaderboards paketlerinde bulabilirsiniz.

Başlamadan önce

Henüz yapmadıysanız lider tablolarıyla ilgili oyun kavramlarını incelemeniz faydalı olabilir.

Liderlik tabloları API'lerini kullanarak kod yazmaya başlamadan önce:

Liderlik tabloları istemcisini edinme

Skor tabloları API'sini kullanmaya başlamak için oyununuzun önce bir LeaderboardsClient nesnesi alması gerekir. Bunu, PlayGames.getLeadeboardsClient() yöntemini çağırıp etkinliği ileterek yapabilirsiniz.

Oyuncunun puanını güncelleme

Oyuncunun puanı değiştiğinde (ör. oyuncu oyunu bitirdiğinde) oyununuz, LeaderboardsClient.submitScore() işlevini çağırıp skor tablosu kimliğini ve ham puan değerini ileterek oyuncunun puanını skor tablosunda güncelleyebilir.

Aşağıdaki kod snippet'i, uygulamanızın oyuncunun puanını nasıl güncelleyebileceğini gösterir:

PlayGames.getLeaderboardsClient(this)
    .submitScore(getString(R.string.leaderboard_id), 1337);

İyi bir uygulama olarak, skor tablosu kimliğini strings.xml dosyanızda tanımlayabilirsiniz. Böylece oyununuz, kaynak kimliğine göre skor tablolarına referans verebilir. Oyuncu puanlarını güncellemek ve yüklemek için çağrı yaparken API kotanızı aşmamak için aşağıdaki en iyi uygulamaları da uyguladığınızdan emin olun.

Skor tablosu görüntüleme

Skor tablosunu göstermek için LeaderboardsClient.getLeaderboardIntent() çağrısı yaparak varsayılan skor tablosu kullanıcı arayüzünü oluşturmak üzere Intent alın. Oyununuz daha sonra startActivityForResult işlevini çağırarak kullanıcı arayüzünü gösterebilir.

Aşağıdaki kod snippet'i, uygulamanızın oyuncunun puanını nasıl güncelleyebileceğini gösterir. Kod snippet'inde RC_LEADERBOARD_UI, istek kodu için rastgele bir tam sayıdır.

private static final int RC_LEADERBOARD_UI = 9004;

private void showLeaderboard() {
  PlayGames.getLeaderboardsClient(this)
      .getLeaderboardIntent(getString(R.string.leaderboard_id))
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_LEADERBOARD_UI);
        }
      });
}

Sonuç döndürülmese bile API'nin çağıran paketin kimliğini alabilmesi için startActivityForResult kullanmanız gerekir. Varsayılan skor tablosu kullanıcı arayüzünün bir örneği aşağıda gösterilmiştir.