Tüm form faktörlerinde doğal girişi etkinleştir

Klavye ve fare bulunan masaüstü bilgisayar. Ekranda oyun oynanıyor. Yön kontrolü ve fare için dokunmatik ekran girişleri gösteriliyor.
Şekil 1. Klavye, fare ve dokunmatik ekran girişleri.

Android cihazlar çeşitli şekil ve boyutlardadır. Telefon, tablet, PC, TV, araba veya XR kulaklığı gibi cihazlarda oynamak isteyen oyuncularınıza oyununuzu sunarak erişiminizi genişletin. Burada şunları öğreneceksiniz:

  • Fare ve klavye desteği, oyununuzu PC ve ChromeOS kullanıcılarına sunmanın yanı sıra büyük ekranlı cihazlarda oynanabilirliği nasıl artırabilir?
  • Oyun kumandası entegrasyonu ile en sadık oyuncularınızı bulundukları yerde nasıl karşılayabilirsiniz?
  • Hareket halindeyken hassas ve duyarlı oyun deneyimi için kalem desteği ekleme.
  • TV kumandasını destekleme ve oyuncuların sahip olduğu en büyük ekranı (TV'leri) kullanmalarına olanak tanıma.
  • Giriş yöntemleri arasında geçiş yapmayla ilgili tasarım hususları.
  • Form faktörü farklı oyunların, oyuncuların giriş tercihlerini desteklemek için yaptığı işlemler.
  • Ve çok daha fazlası.

Otomatik uyumluluk

Android, mümkün olduğunda dokunmadan otomatik uyumluluğa sahiptir. Örneğin:

  • dispatchTouchEvent/onTouchEvent, tıklamalar veya ekran kalemi girişi için bile hareket etkinlikleriyle yanıt verir. Yani araç türünü işaretlemezseniz dokunma işleme mantığınız fare ve ekran kalemi ile çalışmalıdır.
  • İşlenmemiş bazı gamepad ve TV denetleyici etkinlikleri klavye etkinlikleri olarak yeniden yayınlanır.
  • Play Games ve ChromeOS gibi PC benzeri form faktörleri, varsayılan olarak fare tıklamalarından dokunma üretir. Yedek olarak kullanılabilecek dokunmatik ekran olmayabileceğinden bu, temel düzeyde bir uyumluluk sağlar.

  • Fare ve kalem etkinlikleri, dokunma geri aramalarına gönderilir.

  • İşlenmemiş oyun kumandası ve TV kumandası etkinlikleri klavye etkinlikleri olarak yeniden yayınlanır.

  • Play Games ve ChromeOS gibi PC benzeri form faktörleri, dokunmatik ekran girişi beklenen oyunlarla uyumluluğu en üst düzeye çıkarmak için varsayılan olarak fare etkinlikleri yerine dokunma etkinlikleri oluşturur.

En iyi kullanıcı deneyimi için otomatik uyumluluğu kullanmak yerine dokunmatik olmayan girişler için doğrudan destek uygulayın.

Tüm form faktörlerini destekleme

Android, her geçen gün daha fazla cihazda kullanılmaktadır. Oyuncularınız telefonlarını büyük ekranlı tablete dönüştürebilir, Android özellikli TV'lerini açabilir, Chromebook'larında bir Android oyunu açabilir veya araçlarını şarj ederken hızlı bir oyun başlatabilir. Bu sayede, oyuncularınızı her zamankinden daha fazla yerde ve daha fazla ekranda oyun oynamaya teşvik edebilirsiniz. Oyununuzun, oyuncularınızın bulunduğu yerlerde oynanabilir olduğundan emin olmanız yeterlidir:

Form faktörü Tipik varsayılan giriş Dokunmatik ekran Fare ve klavye Gamepad Ekran kalemi1 5 yönlü D-pad
Telefon Dokunmatik ekran Evet Evet Evet Evet Evet
Büyük ekran Dokunmatik ekran Evet Evet Evet Evet Evet
PC2 Fare ve klavye Hayır Evet Evet Hayır Hayır
ChromeOS3 Dokunmatik alan, fare ve klavye Bazen Evet Evet Evet Evet
TV 5 yönlü D-pad Hayır Evet Evet Hayır Evet
Cars4
(Automotive OS)
Dokunmatik ekran Evet Evet Evet Hayır Evet
İzle5 Dokunmatik ekran Evet Hayır Hayır Hayır Hayır

Bu tablo, her form faktöründe beklenen girişi vurgulayarak yeni giriş mekanizmaları için destek önceliğini belirlemenize yardımcı olmayı amaçlamaktadır. Şunları göz önünde bulundurun:

  • Tek bir varsayılan giriş mekanizması kullanmaktan kaçının. Aksi takdirde, dokunmatik olmayan çalışmalarınızın erişimi yanlışlıkla kısıtlanabilir. Örneğin, çoğu oyuncu ChromeOS oyunlarını fare ve klavyeyle oynamak istese de bazı oyuncular cihaz profillerine bağlı olarak dokunmatik ekran desteği isteyebilir.
  • Giriş mekanizmalarını form faktörlerine kilitlemekten kaçının. Android, çok çeşitli çevre birimleriyle çalışır ve karma cihazlar giderek daha popüler hale geliyor. Telefon derlemenizden klavye desteğini kaldırırsanız oyuncunun çıkarılabilir klavyeyle birlikte gönderilen bir tableti varsa oyununuz eksik hissedilebilir.

Fare girişi

Oyuncuların en büyük ve en sürükleyici ekranı, ChromeOS dizüstü bilgisayar, Android tablet veya PC olabilir. Oyuncular genellikle bu cihazlarda fareyle oyun oynamayı bekler. Fare desteği eklemek, oyuncu etkileşiminizi artırabilir. Android, aşağıdakiler dahil olmak üzere masaüstü işletim sistemlerinde yaygın olan tipik özellikleri destekler:

  • Sol, sağ ve orta tıklamanın yanı sıra geri ve ileri gibi ekstra düğmeler için destek
  • Kaydırma tekerleği algılama
  • Fare hareketinin mutlak veya göreli (işaretçi yakalama olarak da bilinir) raporlanması
  • Özel işaretçi simgeleri tanımlama

Aşağıdakiler için form faktörüne özel kılavuzlar mevcuttur:

Dokunmatik alan girişi

Android'de dokunmatik yüzey girişi yakalama, fare desteğinden biraz farklıdır. requestPointerCapture() işlevini çağırdığınızda, dokunmatik yüzeydeki dokunuşlara ham erişim isteğinde bulunursunuz. Yani her dokunma için etkinlikleri, dokunmatik ekrandan çoklu dokunma etkinliklerini aldığınız şekilde alırsınız. Tek fark, koordinatların ekranın koordinat alanında değil, dokunmatik alanın koordinat alanında olmasıdır. Android'in yerleşik dokunmatik alan hareket algılama ve avuç filtreleme özellikleri bu modda devre dışıdır. Örneğin, kullanıcı bir parmağını dokunmatik yüzeyde hareket ettirirken başparmağını da sol alt köşede tıklamaya hazır halde tutuyorsa mantığınızda hangi parmağın hareketinin kullanılacağını (ör. kamerayı hareket ettirmek için) belirlemek oyununuza bağlıdır.

Bu, yerleşik dokunmatik alanlara sahip oyun kumandanlarının, güçlü hareket tabanlı girişler için dokunmatik ekrana benzer şekilde kullanılabileceği anlamına gelir.

Oynatıcınızın işaretçi yakalama sırasında fare mi yoksa dokunmatik yüzey mi kullandığını belirlemek için InputDevice.SOURCE_TOUCHPAD için InputDevice#getSources() veya MotionEvent#getSource() kaynak değerlerini kontrol edin.

Klavye girişi

Klavye desteği, neredeyse tüm Android cihazlarda kullanılabilir. Geliştirdiğiniz oyun türüne bağlı olarak, oyununuza klavye desteği eklemenin avantajları arasında oyununuzu daha erişilebilir hale getirerek oyuncu tabanınızı büyütmek ve oyununuzu daha sürükleyici ve sezgisel hale getirmek yer alır.

Klavye desteğiyle oyun deneyiminizi iyileştirmenin bazı yaygın yolları:

  • Dokunmatik olmayan cihazlarda çoklu dokunma mekanizmaları klavyeyle eşlenmelidir. Hareket etme ve atlama gibi aynı anda iki veya daha fazla dokunma gerektiren oyunlarda, bu işlemlerin klavye tuşlarına basma ile eşlenmesi, büyük ekranlarda ve dokunmatik olmayan ekranlarda oynanabilirliği artırır.
  • Menüleri klavyeyle gezinilebilir hale getirin. Menülerinize ve statik oyun öğelerinize ok tuşları ve Enter gibi düğme gezinme öğeleri eklemek, oyunların TV'lerde oynanmasını sağlar ve tüm form faktörlerinde erişilebilirliğinizi artırır.
  • Ekrandaki işlemler için kısayol tuşları ekleyin. Oyuncuların ekranda dokunabileceği her şeyi bir klavye hareketiyle eşleyin. Bir strateji oyununda birim seçme veya bir aksiyon oyununda envanter alanlarını etkinleştirme gibi işlemlere hızlı erişim, oyuncuların oyununuza olan ilgisini canlı tutar.

QWERTY klavyeler oldukça yaygın olsa da birçok farklı popüler düzen olduğunu ve bir düzende tek bir tuş vuruşuyla yazılan bazı karakterlerin başka bir düzende tuş kombinasyonuyla yazılabileceğini unutmayın.

Oyununuzda işlem yapmak için tuşların göreli konumu kullanılıyorsa (ör. hareket etmek için W, A, S ve D gibi ok tuşları) bir QWERTY tuşunun konumunu KeyEvent.getKeyCode() içindeki bir tuş koduyla eşlemek için InputDevice.getKeyCodeforKeyLocation() kullanın. Oynatıcının düzeni değişirse onInputDeviceChanged() çağrılır.

GameActivity'deki TextInput, bir oyuna metin girişi eklerken oyun içi metin oluşturma motorunuzu kullanmaya devam ederek IME girişini, aksan işaretlerini veya düzendeki bölgeye özgü diğer varyasyonları güvenilir bir şekilde işlemek için bir mekanizma sağlar. Bu sayede, klavye girişini doğrudan işleme veya ekran dışında bir EditText widget kullanmanın yol açtığı birçok sorundan kaçınabilirsiniz.

Oyun kumandası girişi

Tipik bir gamepad'in resmi. Bir yön çubuğu, a, b, x ve y etiketli dört yüz düğmesi, iki analog çubuk ve dört tetikleyiciye sahiptir. Görselde sayılar var ancak bu sayfada bunlara referans verilmemiş.
Şekil 2. Oyun kumandası girişleri.

Oyun kumandaları, bağlantı ve bağlantı kesme etkinlikleri, dokunma desteği, jiroskoplar dahil olmak üzere gelişmiş giriş desteği ve varsa ışık rengi gibi çıkış desteği de dahil olmak üzere Android'de resmi olarak desteklenir.

Uygulama geliştiriciler, View veya Activity geri çağırma işlevleri aracılığıyla gamepad girişlerini dinleyebilir. Ancak oyun geliştiricilerin, aşağıdaki özellikleri sunan Oyun Kumandası Kitaplığı'nı kullanmaları önerilir:

  • Kendi oyun motorunuza entegrasyonu kolaylaştırmak için C++ ile yazılmıştır.
  • Tüm gamepad özelliklerini tek bir API'de merkezileştirir
  • Oyun kumandasının düğmelerindeki sembollerin anlamını açıklayarak oyununuzun etiketlerinin oyuncunun oyun kumandasıyla eşleşmesini sağlar.
  • Düğmelerin bazı gamepad'lerde analog giriş, diğerlerinde ise ikili giriş olduğu durumlarda gamepad etkinliklerinin raporlanmasını birleştirir
  • Yeni gamepad'ler için eski Android cihazlarda sınırlı ileriye dönük uyumluluk sağlar

Ekran kalemi girişi

Bir çizim uygulamasını gösteren resim. Ekran kalemi ile çizilebilen şekilleri gösteren fırçalar açıktır.
Şekil 3. Fırça paleti içeren çizim uygulaması.

Android, basınç, yön, eğim, fareyle üzerine gelme ve avuç içi algılama dahil olmak üzere çoğu cihazda gelişmiş ekran kalemi desteğine sahiptir. Uyumluluğu artırmak için dokunma geri çağırmalarına gönderilen ekran kalemi etkinlikleri, ancak motor mantığınız bu etkinlikleri filtrelemesi ihtimaline karşı ekran kalemi cihazla test edilmesi önemlidir. Tam entegrasyon, küçük dokunma hedeflerinin bulunduğu veya serbest biçimli çizimin doğal hissettirildiği oyunlarda avantaj sağlar.

Oluşturma işlemi ekran kalemi hareketinin gerisinde kaldığında gecikme, bir parmak tarafından engellendiğinde veya klavye, fare ya da gamepad gibi ekrandan bağlantısı kesildiğinde olduğundan daha belirgindir. Bu nedenle Android, kalem hareketinden ekranda görüntülenmesine kadar 4 ms'lik düşük bir gecikme süresiyle vuruşları oluşturmak için düşük gecikmeli bir ardışık düzen sağlar. Oyununuzun bu özellikten yararlanarak doğrudan gerçek dünyaya bağlı hissetmesini sağlamak için üç yöntem vardır:

  • Jetpack Ink kitaplığı, herhangi bir Android projesine duyarlı vuruş oluşturma eklemek için kullanışlı bir araç seti sağlar.
  • Çizgi oluşturma için Kotlin bileşenine dayanamayan veya bu bileşeni kullanmak istemeyen oyunlar için C++ kaynak kodunun tamamı kullanılabilir. Bu sayede geliştiriciler ihtiyaç duydukları özellikleri doğrudan teknolojilerine entegre edebilir.
  • Tam özel entegrasyon gerektiren oyunlarda, hem duyarlılığı hem de kontrolü en üst düzeye çıkarmak için özel oluşturma mantığını doğrudan ön arabellekte yürütmek mümkündür.

TV Denetleyicileri

Android için TV kumandasının resmi. D-pad, seçim düğmesi, mikrofon veya asistan düğmesi, geri düğmesi ve ana sayfa düğmesi gösterilir.
Şekil 4. TV kumandası.

Android TV cihazlarda, dört ana yönü ve bir Tamam düğmesini içeren 5 yönlü D-pad'i bulunan bir uzaktan kumanda bulunur. Android'in yerleşik widget sistemini kullanan uygulamalar bunları varsayılan olarak destekler ancak geliştiricilerin TV cihazlarında uyumluluğu korumak için oyunlarının özel widget'larını test etmesi gerekir.

Daha fazla bilgi için Android TV belgelerini inceleyin.

Göz önünde bulundurulması gereken diğer noktalar

Oyuncularınıza en iyi deneyimi sunmak için birden fazla giriş biçimi kullanın ve bunlar arasında anında geçiş yapın. Bu sayede oyuncular, bulundukları oyun moduna bağlı olarak farklı giriş yöntemleri arasında hızlıca geçiş yapabilir veya oyunlar, Android destekli bir cihazın farklı yapılandırmaları arasında kolayca geçiş yapabilir.

Bu nedenle, aşağıdakileri göz önünde bulundurun:

  • Bir tür giriş olup olmadığını kontrol etmek, form faktörüne göre filtrelemekten daha iyidir. Örneğin, fare ve klavye desteğini yalnızca ChromeOS'te etkinleştirirseniz çıkarılabilir klavyesi olan tabletlerdeki oyuncular bu ekstra çabanızdan yararlanamaz.
  • Form faktörünün dışında, en iyi giriş biçimini etkileyen hususlar vardır. Örneğin, bir oyuncunun erişilebilirlik ihtiyaçları nedeniyle fare veya dokunmatik ekranın kullanımı zor ya da can sıkıcı olabilir. Bu durumda oyun kumandası veya klavye ideal olabilir.
  • Herhangi bir destek, hiç destek almamaktan daha iyidir. Giriş değişikliklerine anında yanıt vermek idealdir ancak oyuncular, destek alabildikleri sürece hiç destek almamaktansa biraz destek almaktan memnun olurlar.
  • En iyi giriş, oyununuzun çalıştırılmaları arasında değişebilir. Örneğin, hareket halindeyken oyun oynarken dokunmatik ekran, telefon TV'ye takılıyken oyun kumandası, masa başında otururken fare ve klavye tercih edilir.

Kullanıcı girişlerine yanıt verme

Tipik mobil oyunlar cihaz başına bir oyuncuyu destekler. En iyi sonuçlar için oyun, mümkün olan tüm girişlere yanıt verir ve kullanıcı arayüzünü oyuncunun etkin olarak kullandığı öğelere göre değiştirir. Bu sayede oyunun tek bir sürümü tüm form faktörlerinde otomatik olarak çalışır ve oyuncular, girişleri ihtiyaçlarına göre karıştırıp eşleştirebilir.

Geliştiriciler genellikle kullanıcı arayüzünü değiştirmeden önce yerleşik gecikmeleri olan varsayılan bir giriş yöntemi kullanmak ister. Bu ne anlama geliyor?

  • Çoğu oyuncu dokunmatik ekranlarda oynadığından, uygulamayı ilk açıldığında dokunmatik kontrolleri gösterin. Bir oyuncu klavye veya oyun kumandasıyla oynamaya başlarsa ve bir süre boyunca dokunmatik ekranı kullanmazsa dokunma katmanını yavaşça soldurabilirsiniz.
  • Oyun kumandası kullanan bir oyuncu klavye tuşuna basarsa oyun içi ipuçları, oyun kumandası düğmeleri yerine klavye düğmelerini gösterecek şekilde değiştirilir.
  • Bir oyuncu aynı anda hem klavyeyi hem de oyun kumandasını kullanıyorsa ekran titremesini önlemek için kullanıcı arayüzünü bir ipucu grubundan diğerine geçirmeden önce bir gecikme ekleyin.
  • Girişleri işlerken giriş kaynağı türünü kontrol edin. Klavye tuşları ve gamepad düğmeleri, tuş basma etkinlikleri yayınlar.
  • Oyununuz işleyemiyorsa girişleri işlenmiş olarak işaretlemeyin. Android, yeni form faktörlerinde uyumluluğu kolaylaştırmak için bazı etkinlikleri yeniden yayınlar (ör. gamepad A düğmesini Tamam düğmesine dönüştürür).

Manifest dosyanızda giriş desteğini ek açıklamayla belirtme

Zorunlu olmasa da, ne tür girişler işlediğinizi manifest özellik işaretleriyle açıklamak en iyi seçenek olabilir. Sık karşılaşılan işaretler şunlardır:

  • android.hardware.type.pc: Geliştiricilerin fare etkinliklerini doğrudan işleyebilmesi için hem ChromeOS hem de PC'de giriş uyumluluk katmanlarını devre dışı bırakın. Oyunun telefonlara gönderilmeye devam etmesi için android:required="false" değerini ayarlayın.
  • android.hardware.gamepad: Uygulamalar ve oyunlar, gamepad destekleyip desteklemediklerine bakılmaksızın gamepad etkinlikleri alır. Bu manifest işaretini tanımlamak ve android:required="false" ayarını yapmak, oyununuzun oyun kumandaları bağlı Android TV cihazlarına sunulmasına olanak tanır.

  1. Üreticiler bazı cihazlarda ekran kalemi desteği sunabilir ancak desteğin garanti edildiği bir form faktörü yoktur. Çizim tabletleri Android cihaza takılabilir ve ekran kalemi olarak gösterilebilir. 

  2. Bazı PC'lerde dokunmatik ekran ve ekran kalemi desteği olsa da Google Play Games istemcisi yalnızca ana işletim sisteminden gelen fare etkinliklerine yanıt verir. Uyumluluğu en üst düzeye çıkarmak için fare etkinlikleri, istemcide varsayılan olarak dokunma etkinlikleri olarak görünür. Daha fazla bilgi için Fare Giriş bölümüne bakın. 

  3. ChromeOS cihazlarda genellikle fare ve klavye desteği bulunur ancak dokunmatik ekranlar isteğe bağlıdır. Dokunmatik ekranlı birçok cihaz, ekran kalemi girişini de destekler. 

  4. Android Automotive OS, Android'in yerleşik olduğu ve Android telefon olmadan çalışabilen araçları ifade eder. Bu grafikte Automotive OS'den bahsedilmektedir. Android Auto, telefondaki bir uygulamayı araca yansıtır. Android Auto'yu (projeksiyon) destekleyen cihazlarda dokunmatik ekran bulunmayabilir. 

  5. Wear OS cihazların bağlantısı sınırlıdır. Bluetooth çevre birimlerini tarayabilirsiniz ancak işletim sistemi genellikle bağlanamaz.