Her ekrana uygun oyunlar geliştirin

Android için oyun geliştirirken, oyundaki kullanıcı sayısı mümkün olan en iyi oyuncu deneyimini yaşayabilirsiniz. Ayrıca oyuncunun gerçek zamanlı daha iyi anlamanızı sağlar. Farklı oyuncu deneyimlerini destekleyerek Böylece, oyununuzun daha fazla kişiye ulaşmasını sağlayabilirsiniz.

Oyuncu deneyimindeki belirli farklılıklar şunlardır:

  • Cihaz form faktörleri: Telefonlar geleneksel Android sürümünü sunsa da için diğer form faktörlerindeki oyunlarla etkileşimde bulunmak mümkündür. ChromeOS cihazlar, oyununuzu gösteren bir Android kapsayıcısı çalıştırabilir. Tabletler . Android TV cihazlar daha fazla ayrıntı içeren ve daha sürükleyici deneyimleri destekler. Oyuncular şunları yapabilir: bir görüntülü reklam uzantısı aracı kullanarak çoklu pencere ortamının simülasyonunu yapabilir. Ve ne zaman Katlanabilir cihazlar sayesinde oyuncular oyun sırasında ekranın boyutunu değiştirebilir kabul edilir.
  • Etkileşim yöntemleri: Oyuncular bir cihazın simgesine dokunarak giriş sağlayabilirler ancak fare, dokunmatik alan, klavye veya kumandayı da kullanabilirler. . Bunun yanı sıra, görüntülü reklam uzantısı araçları ve katlanabilir cihazlar, oyuncuların oyununuzu daha büyük bir ekranda deneyimlemelerini sağlar. oynanabilirlik oturumları ve daha karmaşık arayüzler daha mantıklı.
  • Donanım desteği: Android destekli bazı cihazların donanımı arka kamera, GPS ve kamera gibi bir avuç içi cihazda ağ bağlantısı. Oyununuz mevcut donanıma uyum sağlamalıdır ve belirli özelliklerin kullanılamadığı durumları da sorunsuz bir şekilde ele alın.

Bu kılavuzda, farklı platformlar için oyun geliştirmeyle ilgili en iyi uygulamalar ve kullanıcı etkileşimlerini ifade eder. Bu kılavuzda yer alan bazı öneriler de Oyununuzu tasarlama ve etkili bir test stratejisi geliştirme.

Oyun tasarımıyla ilgili en iyi uygulamalar

Oyununuzun tasarımını ve mimarisini planlarken en iyi uygulamaları takip edin aşağıdaki bölümlerde açıklanmıştır.

Yapılandırma değişikliklerine manuel olarak yanıt verme

Android sistemi, yapılandırma değişikliği (örneğin ekran boyutu, ekran yönü veya giriş yöntemi gibi bir ayarı etkinleştirmediyseniz sistem varsayılan olarak yeniden başlatılır. mevcut etkinlik. Bir uygulama veya oyundaki durumu korumak için, varsayılan aramalar onSaveInstanceState() başlatmadan önce onRestoreInstanceState() yeniden başlatabilir. Ancak bu işlem, etkinliğin tüm ve kaynakları da içerir. Bu varsayılan davranış hakkında daha fazla bilgi edinmek için bkz. kullanım yapılandırması ile ilgili kılavuza değişiklikler başlıklı makaleyi inceleyin.

Normal bir oyun oturumunda birkaç yapılandırma değişikliği yapılır. Oyununuz sistemin her yapılandırma değişikliğini idare etmesine olanak tanırsa oyununuzun sahnesi yok edilir ve tekrar tekrar yeniden başlatılarak oyununuzun performansı düşebilir. İşte bu nedenle bu yapılandırma değişikliklerini kendiniz çözmenizi önemle tavsiye ederiz: gösterir.

Bu yapılandırma değişikliği mantığını oyununuza nasıl ekleyeceğinizi öğrenmek için Özel yapılandırma değişikliği oluşturma ile ilgili bölüm işleyiciler arasından seçim yapabilirsiniz.

Esnek bir mimari oluşturun

Oyununuzu mümkün olduğunca fazla cihazda desteklemek için uygulamalar:

  • Ayrı ayrı APK'lar yerine Android App Bundle'ları dağıtın. Android Uygulaması Paketler, farklı yapılardaki yapıları paketlemenizi çözünürlüğü ve x86, ARM gibi farklı mimari modellerini, tespit eder. Hatta Android App Bundle, sizin için daha yüksek boyut sınırlarını destekler. oyun; her temel APK 150 MB kadar büyük olabilir ve paketin kendisi çok fazla olabilir gigabayt büyüklüğünde.
  • x86 mimarileri için destek ekleyin. Bu adım, oyununuzun ARM'ı desteklemeyen cihazlarda performansı gösterilir. Çünkü artık bu cihazlar önce çevirmek zorunda kalmadan talimatları uygulayabileceksiniz.

Vulkan için destek ekleyin

Vulkan'ı destekleyerek oyununuz daha yüksek performans gösterebilir grafik performansıdır. Cihazların çoğu bu grafik API'sini destekler.

Özel yapılandırma değişikliği işleyicileri oluşturma

Oyununuzun kendi başına yaptığı yapılandırma değişikliği türlerini bildirmek için android:configChanges manifest dosyanızdaki bir ekranı temsil eden her <activity> öğesine özellik veya karmaşık bir arayüz oluşturuyor.

Aşağıdaki kod snippet'i, oyununuzun Google Cloud'un içindeki ekran boyutu, ekran yönü ve giriş yöntemi değişikliklerinin yüzdesi:

<activity ...
    android:configChanges="screenSize|orientation|keyboard|keyboardHidden">
</activity>

Beyan edilen yapılandırma değişiklikleri gerçekleştiğinde sistem artık farklı bir yöntemle onConfigurationChanged(). Bu yöntemde oyununuzun kullanıcı arayüzünü güncellemek için mantık ekleyin:

Ekran yapılandırma değişikliklerini işleme

Oyununuz her zaman ekran boyutu ve ekran yönü değişikliklerini manuel olarak işler screenSize ve orientation değerlerini sırasıyla android:configChanges özelliğini gönderin. Bu yeni değerleri sahnenizin içeriğini güncellemek ve oynatıcı giriş alanları. Oyun düzeninizi tasarlarken bunu düzgün şekilde kolayca güncelleyebilirsiniz. Farklı ekranları desteklemeyle ilgili kılavuza bakın boyutları altında bulabilirsiniz.

Oyununuzda onConfigurationChanged() uygulamasında, Configuration nesnesi ve pencere yöneticisinin Display nesnesini ekran boyutu ve ekran yönü için güncellenmiş değerleri belirler. tıklayın.

Aşağıdaki kod snippet'i, oyununuzun güncellenmiş ekran boyutunu nasıl edineceğinizi gösterir ve yön:

Kotlin

override fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)
    val density: Float = resources.displayMetrics.density
    val newScreenWidthPixels = (newConfig.screenWidthDp * density).toInt()
    val newScreenHeightPixels = (newConfig.screenHeightDp * density).toInt()

    // Get general orientation; either Configuration.ORIENTATION_PORTRAIT or
    // Configuration.ORIENTATION_LANDSCAPE.
    val newScreenOrientation: Int = newConfig.orientation

    // Get general rotation; one of: ROTATION_0, ROTATION_90, ROTATION_180,
    // or ROTATION_270.
    val newScreenRotation: Int = windowManager.defaultDisplay.rotation
}

Java

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    float density = getResources().getDisplayMetrics().density;
    int newScreenWidthPixels = (int) (newConfig.screenWidthDp * density);
    int newScreenHeightPixels = (int) (newConfig.screenHeightDp * density);

    // Get general orientation; either Configuration.ORIENTATION_PORTRAIT or
    // Configuration.ORIENTATION_LANDSCAPE.
    int newScreenOrientation = newConfig.orientation;

    // Get general rotation; one of: ROTATION_0, ROTATION_90, ROTATION_180,
    // or ROTATION_270.
    int newScreenRotation = getWindowManager().getDefaultDisplay()
            .getRotation();
}

Katlanabilir cihazın duruşunu değiştirmenin yapılandırmayı değiştireceğini unutmayın. Uygulamanız tam ekran modunda çalışsa bile. Bu nedenle uygulamanızın, ekran boyutunda veya pikselde yapılan değişiklikleri işlemesi gerekebilir. yoğunluğunu gösterir.

Oyuna özgü ekran kaliteleri

Aşağıdaki bölümlerde, oyununuzun ekrana nasıl tepki vereceğini nasıl ayarlayacağınız açıklanmaktadır Oyununuzun özelliklerine bağlı olarak boyut veya ekran yönü değiştiğinde:

Tam ekran modu

ChromeOS gibi bazı platformlarda Android uygulamaları ve oyunları pencereli olabilir. varsayılan olarak yeniden boyutlandırılabilir. Oyununuzun her zaman tam ekran modunda çalışması gerekiyorsa CANNOT TRANSLATE android:resizeableActivity özelliğini false değerine ayarlamak için kullanılır ve <activity> öğelerinizden birinde aşağıdaki gibi görünür: şu kod snippet'ini kullanabilirsiniz:

<activity ...
    android:resizeableActivity="false">
</activity>

Bunu önlemek için android:resizeableActivity özelliğini false olarak da ayarlayabilirsiniz. yapılandırma değişikliklerinin gerçekleşmesini önler. Bununla birlikte, oyununuz her zaman tam ekran modunda çalışmadığı sürece bu özelliği yalnızca geçici bir düzeltme olarak eklemeniz gerekir. izin alınmasını gerektiriyor.

Ekran yönü

Oyununuz bir cihazın sensörlerinin belirli bir yöne bağlı olmasını gerektiriyorsa şunun için bir değer belirtin: android:screenOrientation inç aşağıdaki kod snippet'inde gösterildiği gibi oyununuzun etkinliğini gösterir. Bu ayar, Oyununuzdaki bir sahnenin beklenmedik bir şekilde baş aşağı dönmesini önleyin.

<activity ...
    android:screenOrientation="landscape">
</activity>

Cihaza özgü ekran kaliteleri

Aşağıdaki bölümlerde, ekrana dayalı yapılandırma değişikliklerinin nasıl ele alınacağı açıklanmaktadır. belirli özelliklere sahip olduğunu görüyoruz.

En boy oranı

Bazı cihazlar farklı en boy oranlarını destekler. Örneğin, katlanabilir cihazlar katlanmış durumdayken 21:9 en boy oranını destekleyecek şekilde tasarlanmıştır. İşlenecek en boy oranındaki bu potansiyel çeşitliliği artırmak için aşağıdakilerden en az birini yapın:

  • Android 8.0 (API düzeyi 26) veya sonraki sürümleri hedefleyin.
  • Oyununuzun sahnesini ve arayüzünü yeniden boyutlandırılabilir hale getirin. Ayarla android:resizeableActivity Android 7.0 (API düzeyi 24) ve sonraki sürümleri çalıştıran cihazlarda true adresine.
  • Desteklenen maksimum en boy oranı tanımlayın. <meta-data> özelliği ilişkilendirildi oyununuzda android.max_aspect ayarını aşağıdaki gibi 2.4 yapın: kod snippet'ini eklemeniz gerekir. Bununla birlikte, en boy oranının %100'den daha büyük olduğunu Oyunun görünmesinin nedenini sinemaskop bir kontrol panelidir.

    <application>
    <meta-data android:name="android.max_aspect"
               android:value="2.4" />
    </application>
    

Birden fazla etkinlik aynı anda görülebilir

Birçok modern cihaz, bölünmüş ekran, pencere içinde pencere özelliği ve geniş görüntüleme alanı sağlar. Bu düzenlerden birini kullanırken sistem aynı anda birden fazla etkinliği görünür hale getirebilir.

Android 9 (API düzeyi 28) veya sonraki sürümleri çalıştıran cihazlarda aynı anda devam ettirilebilir. Bu davranışın çalışması için Ancak hem oyununuzun hem de cihazınızın OEM'sinin işlevi görür. Oyun genelinde destek eklemek için Oyununuzun manifest dosyasında android.allow_multiple_resumed_activities yerine true aşağıdaki snippet'te gösterildiği gibidir:

<application>
    <meta-data android:name="android.allow_multiple_resumed_activities"
               android:value="true" />
</application>

Daha sonra, hangisinin en iyi sonucu verdiğini görmek için oyununuzu farklı cihazlarda test edebilirsiniz. Çoklu devam ettirmenin düzgün çalışması için gereken OEM desteği.

Oyununuzu çok pencereli ekran eklemek için birden fazla pencerenin nasıl ekleneceğiyle ilgili kılavuza destek ile görüşün.

Farklı etkileşim modellerini ele alma

Oyununuz her zaman klavye varlığı ve klavye kullanılabilirliğini manuel olarak işler keyboard ve keyboardHidden değerlerini sırasıyla android:configChanges özelliğini gönderin. Oyununuzun birincil girişini güncellemek için bu yeni değerleri kullanabilirsiniz yöntemidir.

Oyununuzu birden fazla kullanıcı girişini destekleyecek şekilde yapılandırırken şunları göz önünde bulundurun:

  • Cihazlar yerine giriş yöntemlerini algılar. Bu anlayış, kullanıcı deneyimini iyileştirmek, belirli bir cihaz kullanıyor olabilir.
  • Manuel olarak işlenenler listenize keyboardHidden özelliğini ekleyin. yapılandırma değişiklikleridir. Bu şekilde oyununuz, klavyenin ne zaman fiziksel olarak cihaza bağlı ancak kullanılamıyor.
  • Şu anda kullanılabilen giriş yöntemlerini belirleyin. Bunun için şu numarayı arayın: getInputDeviceIds() her yapılandırma değişikliğinden sonra uygulanabilir.

    Genellikle oyuncunun oyununuzla nasıl etkileşimde bulunacağını belirleyebilirsiniz tercih ettikleri giriş cihazına göre:

    • Oyuncular hızlı oyun oynamak için genellikle klavye veya oyun kumandası kullanır düğme sıraları.
    • Oyuncular daha karmaşık oyunlar için genellikle dokunmatik ekran veya dokunmatik alan kullanırlar hareketler.
    • Oyuncular genellikle daha yüksek hassasiyetli giriş yapmak için fare kullanır.
    ziyaret edin.

Aşağıdaki bölümlerde, belirli giriş türleri için en iyi uygulamalar sunulmaktadır. cihazlar.

Klavye

Oyununuz için klavye düzeni oluştururken oyuncunun gezinme şeklini göz önünde bulundurun ve oyununuzun ayarlarıyla nasıl etkileşime girdiğini gösterir.

WASD tuşları veya ok tuşları genellikle karakter hareketini kontrol etmek için idealdir. Her bir önemli eylem veya beceri için özel bir anahtar atamak en iyisidir. kontrol edilebilen bir karakterin oyununuzda uygulayabileceği bir beceridir. daha iyi bir oyuncu deneyimi için oyununuza özel anahtar bağlamaları için destek ekleyebilirsiniz.

Oyuncular ayrıca oyununuzun menülerini açıp bu menüler arasında gezinebilmelidir. klavyeyi kullanmayı deneyin. Esc tuşu, bir sahneyi duraklatmak ve menüsü gösteriliyor.

Oyununuzda klavye girişini destekleme konusunda daha fazla bilgi için kılavuza bakın klavyeyle gezinmeyi destekleme konusunda ve klavyenin nasıl kullanılacağıyla ilgili rehber işlemler hakkında daha fazla bilgi edinin.

Oyun kumandası

Oyununuzda kumanda girişini yönetme hakkında daha fazla bilgi için kılavuza bakın hakkında daha fazla bilgi edinin.

Fare veya dokunmatik alan

Oyununuz fare veya dokunmatik alan aracılığıyla oyuncu girişini destekliyorsa cihazla, oyununuzu oynamanın dışında başka şekillerde etkileşimde bulunurlar. İnsanların İşaretçi yakalama isteğinde bulunurken tüm fare girişinin oyuna yönlendirilir. Dolayısıyla, oyununuz ihtiyaç duyduğu bilgilere sahip olduktan sonra kullanıcıların oyun ekranlarında standart fare kontrolünü yeniden kullanabilmeleri için olanak tanır.

Android 8.0 (API düzeyi 26) ve sonraki sürümleri çalıştıran cihazlarda İşaretçi yakalama işlemine yardımcı olması için Capture API'yi kullanın. Tepki veren oyunlarda yüksek hassasiyetli girdiyi seçerseniz işaretçinin mevcut koordinatlarını getX() ve getY() yöntem.

Fare girişi ve dokunmatik alan girişi desteği ekleme hakkında ek bilgi için öğrenmek için dokunma ve işaretçi takibi yapma rehberine ve hareketlerin nasıl ele alınacağına ilişkin kılavuzun Çoklu dokunma hareketleriyle ilgili daha fazla bilgi edinin.

Oyununuzu test etme

Oyununuzu kullanıma sunmadan önce, .

Test planınızı güncelleyin

Oyununuzun işlevselliğini doğrularken aşağıdaki test durumlarını dahil edin:

  • Oyununuzu içeren pencereyi simge durumuna küçültün ve ekranı kaplayacak şekilde büyütün. (Aşağıdaki durumlarda geçerli değildir: oyununuz her zaman tam ekran modundadır.)
  • Ekran boyutunu değiştirin.
  • Ekran yönünü değiştirin. (Oyununuzda sabit bir tıklayın.)
  • Klavye ve fare gibi giriş cihazlarını bağlayıp bağlantısını kesin.
  • Oyununuz destekliyorsa çoklu devam ettirme yapın.

Ayrıca oyununuzun kalite kontrol sistemini de güncelleyerek daha fazla oyuncu deneyimi için optimizasyon yapabilirsiniz.

Oyununuzu test etmeyle ilgili en iyi uygulamalar için Test kılavuzu.

Test ve hata ayıklama araçlarını kullanma

Platformun desteklediği çeşitli araçları kullanarak testler gerçekleştirebilirsiniz: