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ın ölçek faktörünü ve yönünü güncelleyin. Sizin için performans açısından, bazı durumlarda oyununuzun kullanıcı arayüzünü yalnızca bir boyut.
- Oynatıcının kullanması için en uygun giriş yöntemini belirleyin.
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 cihazlardatrue
adresine. Desteklenen maksimum en boy oranı tanımlayın.
<meta-data>
özelliği ilişkilendirildi oyununuzdaandroid.max_aspect
ayarını aşağıdaki gibi2.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.
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:
ChromeOS Performansı Analiz Aracı, ChromeOS M75 veya sonraki sürümlerde kullanılabilir.