Pixonic, büyük ekranlar için optimizasyon yaparak ChromeOS'te etkileşimi% 25 artırdı

Arka plan

Merkezi Moskova'da bulunan video oyunu geliştiricilerinden oluşan bir ekip Pixonic, mobil uygulamalarını yükseltmek ve daha da geniş bir oyuncu kitlesine ulaşmak için her fırsattan gurur duyuyor. Şirketin en tanınmış oyunlarından biri olan War Robots, oyuncuların canlı bir savaş alanında özelleştirilmiş robotları çalıştırıp düello yaptıkları 12 kişilik bir Oyuncuya Karşı Oyuncu (PvP) deneyimidir.

2014'te piyasaya sürülen War Robots, orijinal olarak Android'in dokunmatik alan tabanlı hareket eden ve fare girişi olmayan ilk nesil cihazları için tasarlanmıştır. Hevesli oyuncular olan Pixonic ekibi, uygulamanın dizüstü bilgisayar ve tablet gibi daha çeşitli cihazlarda mükemmel bir kullanıcı deneyimi sunmak için birkaç değişikliğe ihtiyacı olduğunu gördü. War Robots zaten tüm Android cihazlarda oynatılabildi, çünkü kapsayıcı içinde Chromebook'lar Android çerçevesinin tam sürümünü çalıştırıyor. Pixonic, kodlamada birkaç ince ayar daha yaparak ChromeOS'in tüm özelliklerinden yararlandı.

Pixonic ekibinin, War Robots'u büyük ekranlarda optimum deneyim için nasıl optimize ettiğini buradan öğrenebilirsiniz.

Ne yaptılar?

Pixonic, optimizasyonları başlatmak için AndroidManifest.xml dosyasına bir meta veri etiketi ekledi. Bu etiket, sisteme tam ChromeOS desteği için hazır olduğunu ve dokunma emülasyonunu devre dışı bırakması gerektiğini belirtti:

<uses-feature android:name="android.hardware.type.pc" android:required="false" />

Pixonic ayrıca, Unity oyun motorunun fare tıklamalarını ve hareketle ilgili tüm API etkinliklerini (yalnızca dokunmatik alan etkinliklerini değil) doğrudan alabilmesi için uygulamanın minSdk değerini de 24'e ayarlamıştır.

Klavye ve fare desteği

War Robots gibi üçüncü şahıs PvP oyunlarında, özellikle büyük ekranlı cihazlarda klavye ve fare kullanarak hareket etmek ve nişan almak çok daha kolaydır. Dolayısıyla sonraki adım, dokunmatik ekran kontrollerini korurken oyunun savaş modu için klavye ve fare desteği kodunu yeniden yazmaktı.

Pixonic ekibi, doğru zamanda doğru kontrolleri sağlamak amacıyla kullanıcının mevcut oyun modunu kontrol etmek için yeni bir kod yazdı:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    boolean hasQwertyKeyboard = newConfig.keyboard == Configuration.KEYBOARD_QWERTY && newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO;
    try {
        UnityPlayer.UnitySendMessage("Receiver", "ConfigChange", new JSONObject().put("keyboard", hasQwertyKeyboard).toString());
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

Q klavye algılanırsa oyun, masaüstü moduna uyum sağlar. Sol alt köşedeki hareket kontrol çubuğu kaybolur ve mevcut tüm işlemler (ör. silahları, yetenekleri ve menüleri sıralama) klavye kısayollarıyla etiketlenir.

Dizüstü bilgisayar modunda Savaş Robotları.

Klavye algılanmazsa sol alt köşede hareket kontrol çubuğu görünür ve sağ alt kısımdaki menü düğmelerinde klavye kısayolları gizlenir.

Tablet/mobil oyun modunda War Robots'lar.

Ardından Pixonic, oyuncular kamerayı döndürmek için faresini kullandığında imlecin gizli kalmasını istedi. Ekip, Android 7.0 (API düzeyi 24) veya sonraki sürümleri hedefleyerek herhangi bir işaretçi simgesini ayarlayabilir. Bu örnekte ekip, oyun sırasında imleci görünmez hale getirmek için şeffaf bir bit eşlem kullandı:

public boolean setPointerVisibility(boolean visible) {
    View = activity.findViewById(android.R.id.content);
    view.setPointerIcon(PointerIcon.getSystemIcon(activity, visible ? PointerIcon.TYPE_DEFAULT : PointerIcon.TYPE_NULL));
}

Bu, diğer tüm pencereler kapatıldığında ve bir savaş devam ederken imlecin devre dışı bırakılmasını ve görünmemesini sağladı. Duraklatma menüsü gibi herhangi bir pop-up pencere görüntülenirse Pixonic, imleci görünür hale getirerek varsayılan simgesini gösterir.

Oyun mekaniklerini ve oyun mekaniklerini uyarlama

Pixonic, daha iyi bir kullanıcı deneyimi sunmak için kullanıcının mevcut cihaz moduna göre farklı oyun eğiticileri gösteren yeni bir kod da yazdı. Bir oyuncu savaş sırasında tablet ile dizüstü bilgisayar oyunu arasında geçiş yaparsa ve henüz farklı modla ilgili bir eğitim görmediyse oyun devam ettirilmeden önce eğitim gösterilir.

Klavye ve fare girişli dizüstü bilgisayar modunda oynanabilirlik eğitimleri.

Dokunmatik ekran kontrolleriyle tablet modunda oyun oynama eğitimi.

Oyuncular dizüstü bilgisayar modundayken Pixonic, tüm oyun düğmeleri her zamanki gibi çalışırken dokunmatik ekran kamera kontrolünü (çünkü oynatıcılar kamerayı fare ile kontrol ettiği için) devre dışı bırakır. Ekip, dokunma hareketlerini fare hareketlerinden ayırt etmek için Input.touchCount özelliğini kullanır (Unity komut dosyalarında):

if(Input.touchCount > 0) {
    // this is screen touch event
} else {
    // this is mouse (touchpad) event
}

Çoklu pencere desteği

Son adımda Pixonic, oyunun başlatıldığında tam ekran modunda kendisini kilitlemediğinden emin olmak istedi. ChromeOS'te pencereli oyun oynamayı etkinleştirmek, kullanıcıların oyun oynarken en sevdikleri yayıncıları aynı anda izlemelerine, oyunun web sitesinde yeni yeteneklerle ilgili bilgileri okurken robotlarını yükseltmelerine veya ayrı bir video izlerken pasif modda bir savaşı izlemelerine olanak tanır.

Bunun için Pixonic, UnityPlayerActivity sitesini yeniden boyutlandırılabilir olarak işaretledi:

<activity android:name="com.unity3d.player.UnityPlayerActivity" ....
    android:resizeableActivity="true">

Ekip, oyun arayüzünün yalnızca belirli bir boyut aralığında oynanabilir göründüğünü göz önünde bulundurarak, desteklenen minimum pencere boyutlarını belirledi:

<activity … >
    <layout android:gravity="center" android:minHeight="800dp" android:minWidth="1200dp" />
</activity>

Pixonic, oynanabilirliği en etkileyici şekilde yaşamak için meta etiketler kullanarak tam ekran modunu varsayılan, yatay yönü de istenen şekilde ayarladı.

<application>
    <meta-data android:name="WindowManagerPreference:FreeformWindowSize" android:value="maximize" />
    <meta-data android:name="WindowManagerPreference:FreeformWindowOrientation" android:value="landscape" />
    ….
</application>

War Robots pencereli modda kullanıma sunuldu.

Bu optimizasyonlar aynı zamanda oyunun duraklamasını ve oyuncular oyun pencerelerini genişletip daraldıkça savaş HUD'sinin uygun şekilde ölçeklendirilmesini sağladı.

Sonuçlar

Online kaynaklardan oluşan kapsamlı bir kitaplık sayesinde, Pixonic'in beş üyeli geliştirme ekibi sürecin tamamlanması için yalnızca iki hafta sürdü.

Pixonic en son optimizasyonları kullanıma sunduğundan bu yana şu ana kadar 100.000'den fazla oyuncu ChromeOS'te War Robots'u oynadı. Oyun artık daha büyük ekranlardaki ek alandan yararlanabildiğinden, War Robots savaşları eskisinden daha da sürükleyici ve ilgi çekici. Hatta Chromebook'lardaki kullanıcı oturumları, diğer Android cihazlara kıyasla% 25 daha uzundur. İlk geri bildirimler son derece olumlu oldu ve bazı oyuncular Chromebook için optimize edilmiş oyunun BlueStacks emülatöründen daha akıcı çalıştığını bile belirtmiş.

Pixonic'in geliştiricileri, başarılarına dayanarak War Robots'un tüm Android cihazlarda grafiklerini güncelleyerek oyunu PC kalitesinde bir deneyime daha da yaklaştırmayı planlıyor.

Uygulamalarınızı ChromeOS için optimize etmeye yönelik en iyi uygulamalara göz atın.