Televizyon ekranında mobil oyuna yeni gelebilecek pek çok husus yer alıyor birlikte çalışır. Bu alanlar arasında reklamın büyük boyutu, kontrol şeması ve tüm oyuncuların görüntüleyen kişilerdir.
Ekran
TV ekranı için oyun geliştirirken göz önünde bulundurmanız gereken iki temel husus vardır: Oyununuzu yatay yönde tasarlamak ve düşük gecikmeye destek sunmaktır.
Yatay ekranı destekle
TV her zaman yataydır: Döndüremezsiniz ve dikey yönde görüntü alamazsınız. Her zaman tasarlayın TV oyunlarınızın yatay modda görüntülenmesi gerekir.
Otomatik düşük gecikme modu
Belirli ekranlar, grafik işleme sonrası süreci gerçekleştirebilir. İşleme sonrası, grafikleri iyileştirir ancak gecikmeyi artırabilir. HDMI 2.1'i destekleyen yeni ekranlarda otomatik düşük gecikme modunu (ALLM) seçin. ALLM ile ilgili daha fazla bilgi için HDMI 2.1 spesifikasyonuna bakın. Diğer ekranlar benzer davranışa sahip bir oyun modunu destekleyebilir.
Android 11 ve sonraki sürümlerde bir pencerede otomatik düşük gecikme modu veya oyun izni istenebilir modun, mümkünse minimum işleme sonrası işlem isteği yapılarak kullanılmasını sağlayın. Bu özellik, özellikle düşük gecikmenin mümkün olan en iyi grafiklere sahip olmaktan daha önemli olduğu oyun ve video konferans uygulamaları için faydalıdır.
Minimum son işleme özelliğini etkinleştirmek veya devre dışı bırakmak için Window.setPreferMinimalPostProcessing()
işlevini çağırın veya pencerenin preferMinimalPostProcessing
özelliğini true
olarak ayarlayın. Tüm ekranlar minimum son işleme özelliğini desteklemez. Belirli bir ekranın bu özelliği destekleyip desteklemediğini öğrenmek için Display.isMinimalPostProcessingSupported()
yöntemini çağırın.
Giriş cihazları
TV'lerde dokunmatik arayüz olmadığından, kontrollerinizi doğru şekilde belirlemek ve oyuncuların bunları sezgisel ve eğlenceli bulmasını sağlamak daha da önemlidir. Denetleyicileri yönetmek, birden fazla denetleyiciyi takip etme ve bağlantıyı düzgün bir şekilde yönetme gibi dikkat edilmesi gereken başka sorunlar da ortaya çıkarır. Oyunlar da dahil olmak üzere tüm TV uygulamaları sağlamak için çok önemlidir. TV kumandalarını kullanma hakkında daha fazla bilgi için TV kumandalarını yönetme başlıklı makaleyi, TV kumandalarını oyunlarda kullanma hakkında daha fazla bilgi için Oyun kumandaları ile ilgili işlemleri yapma başlıklı makaleyi okuyun.
Klavye düzenleri
Android 13 (API düzeyi 33) ve sonraki sürümlerde klavye düzenlerini belirlemek için şunları kullanabilirsiniz:
getKeyCodeForKeyLocation()
Örneğin, oyununuz WASD tuşlarını kullanarak hareket etmeyi destekliyor olabilir ancak bu, A ve W tuşları farklı konumlarda olan bir AZERTY klavyesinde düzgün çalışmayabilir. Tuş kodlarını buradan
belirli konumlarda istediğiniz anahtarlar için:
val inputManager: InputManager? = requireActivity().getSystemService() inputManager?.inputDeviceIds?.map { inputManager.getInputDevice(it) } ?.firstOrNull { it.keyboardType == InputDevice.KEYBOARD_TYPE_ALPHABETIC } ?.let { inputDevice -> keyUp = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_W) keyLeft = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_A) keyDown = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_S) keyRight = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_D) }
InputManager inputManager = requireActivity().getSystemService(InputManager.class); InputDevice inputDevice = Arrays.stream(inputManager.getInputDeviceIds()) .mapToObj(inputManager::getInputDevice) .filter( device -> device.getKeyboardType() == InputDevice.KEYBOARD_TYPE_ALPHABETIC) .filter(Objects::nonNull) .findFirst() .orElse(null); if (inputDevice != null) { keyUp = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_W); keyLeft = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_A); keyDown = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_S); keyRight = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_D); }
Bu örnekte, AZERTY klavyede keyUp
değeri
KeyEvent.KEYCODE_Z
, keyLeft
KeyEvent.KEYCODE_Q
olarak ayarlandı,
keyDown
ve keyRight
ise KeyEvent.KEYCODE_S
olarak ayarlanır
ve KeyEvent.KEYCODE_D
. Artık bunlar için önemli etkinlik işleyiciler oluşturabilirsiniz
ve beklenen davranışı nasıl uygulayacağınız hakkında daha fazla bilgi edinin.
Manifest
Android manifest dosyasında oyunların içermesi gereken bazı özel şeyler var.
Oyununuzu ana ekranda gösterme
Android TV ana ekranında, oyunlar normal uygulamalardan ayrı bir satırda gösterilir.
Oyununuzun oyun listesinde görünmesi için
Uygulama manifest'inizde "true"
olarak ayarlanmış android:isGame
özelliğini
<application>
etiketiyle ilgili bir değişikliktir. Örnek:
<application ... android:isGame="true" ... >
Oyun denetleyicileri için destek beyan etme
Oyun kumandaları, TV cihazının kullanıcıları tarafından kullanılamayabilir veya etkin olmayabilir. Kullanıcıları oyununuzun oyun kumandasını desteklediğini doğru şekilde bilgilendirmek için uygulama manifestinize aşağıdaki girişi eklemeniz gerekir:
<uses-feature android:name="android.hardware.gamepad" android:required="false"/>
Not: android:hardware:gamepad
desteğini belirtirken
android:required
özelliğini "true"
ile ilişkilendirin. Bunu yaparsanız kullanıcılar şunları yapamaz:
uygulamanızı TV cihazlarına yükleyin.
Manifest girişleri hakkında daha fazla bilgi için Uygulama manifesti.
Google Play oyun hizmetleri
Oyununuzda Google Play Games Hizmetleri entegre edilmişse başarılar, oturum açma ve oyunları kaydetme ile ilgili bazı hususları göz önünde bulundurmanız gerekir.
Başarılar
Oyununuz en az beş (kazanılabilir) başarı içermelidir. Yalnızca oyunu kontrol eden bir kullanıcı desteklenen bir giriş cihazından başarıları kazanabilmeniz gerekir. Başarılar ve bunların nasıl uygulanacağı hakkında daha fazla bilgi için Android'de Başarılar başlıklı makaleyi inceleyin.
Oturum açma
Oyununuz, başlangıçta kullanıcının oturum açmasını sağlamaya çalışacaktır. Oyuncu oturum açmayı arka arkaya birkaç kez reddederse oyununuz isteği durdurur. Oturum açma hakkında daha fazla bilgiyi Android'de oturum açma özelliğini uygulama başlıklı makalede bulabilirsiniz.
Kaydediliyor
Depolamak için Google Play Hizmetleri'ndeki Kaydedilmiş Oyunlar'ı kullanın elde edersiniz. Oyununuzun, kullanıcı oyun kayıtlarında yer almak üzere tarafından benzersiz bir şekilde tanımlanabilir: Oynatıcı ister telefon ister TV kullanıyor olsun, oyunun kayıt bilgilerini aynı kullanıcı hesabından alabilmelidir.
Ayrıca, oyununuzun kullanıcı arayüzünde oyuncunun yerel olarak silme ve
depolanan verileri içerebilir. Bu seçeneği oyunun Settings
ekranına yerleştirebilirsiniz. Play Hizmetleri'ni kullanarak kayıtlı oyunları uygulamayla ilgili ayrıntılı bilgi için Android'de Kayıtlı Oyunlar başlıklı makaleyi inceleyin.
Çık
Kullanıcının oyundan sorunsuz bir şekilde çıkmasına olanak tanıyan tutarlı ve bariz bir kullanıcı arayüzü öğesi sağlayın. Bu öğeye D-pad gezinme düğmeleriyle erişilebilir. Çıkış yapmak için ana sayfa düğmesine güvenmek yerine bunu yapın. Bu düğme, farklı kumandalarda tutarlı ve güvenilir değildir.
Web
Android TV için oyunlarda web'e göz atmayı etkinleştirme. Android TV, web tarayıcısını desteklemez.
Not: Sosyal medya hizmetlerine giriş yapmak için WebView
sınıfını kullanabilirsiniz.
Ağ Ürünleri
Oyunlar, optimum performans sağlamak için genellikle daha yüksek bant genişliğine ihtiyaç duyar ve pek çok kullanıcı bunu tercih eder Ethernet'i kablosuz ağa bağlayabilirsiniz. Uygulamanız hem kablosuz ağı hem de Ethernet'i kontrol etmelidir bağlantılar. Uygulamanız yalnızca TV için kullanılıyorsa 3G/LTE hizmetini kontrol etmeniz gerekmez. mobil uygulama için