Tło
Pixonic, zespół twórców gier wideo z siedzibą w Moskwie, korzysta z każdej okazji, aby ulepszać swoje aplikacje mobilne i docierać do jeszcze szerszego grona graczy. Jedną z najbardziej znanych aplikacji firmy jest Roboty wojenne 12-osobowa rozgrywka PvP, w której gracze ze sobą rywalizują niestandardowych robotów na żywo na polu bitwy.
Wydany w 2014 r. roboty wojenne były zaprojektowane z myślą urządzeń nowej generacji, które obsługują ruch za pomocą touchpada i nie wymagają myszy. Jako zagorzali gracze Pixonic zauważyli, że aplikacja wymaga wprowadza zmiany w celu poprawy wrażeń użytkowników na szerszej gamie urządzeń, takich jak laptopy i tablety. Roboty wojenne można było już grać na dowolnym urządzeniu z Androidem bo Chromebooki korzystają z pełnej wersji platformy Android wewnątrz kontenera. Wprowadziliśmy kilka usprawnień w kodzie, dzięki czemu firma Pixonic mogła o zaletach pełne możliwości.
Oto jak zespół Pixonic zoptymalizował War Robots pod kątem większych ekranów.
Rozwiązanie
Aby rozpocząć optymalizację, Pixonic dodał tag metadanych w pliku AndroidManifest.xml, który informuje system, że jest on gotowy do pełnego obsługiwania ChromeOS i że musi wyłączyć emulację dotyku:
<uses-feature android:name="android.hardware.type.pc" android:required="false" />
Pixonic ustawił też parametr minSdk aplikacji na 24, bezpośrednio odbierają kliknięcia myszą oraz wszystkie zdarzenia interfejsu API związane z ruchem (nie tylko zdarzeń na touchpadzie).
Obsługa klawiatury i myszy
W grach PvP z perspektywy trzeciej osoby, takich jak War Robots, poruszanie się i celowanie jest znacznie łatwiejsze za pomocą klawiatury i myszy, zwłaszcza na urządzeniach z większym ekranem. W następnej kolejności polegało na napisaniu kodu obsługi myszy i klawiatury tryb walki z zachowaniem elementów sterujących na ekranie dotykowym.
Aby zapewnić odpowiednie opcje w odpowiednim czasie, zespół Pixonic napisał nowy kod, który sprawdza bieżący tryb rozgrywki użytkownika:
@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();
}
}
Jeśli zostanie wykryta klawiatura QWERTY, gra dostosuje się do trybu pulpitu. joystick ruchu w lewym dolnym rogu znika, a wszystkie dostępne działania (takie jak przeglądanie broni, umiejętności i menu) są odpowiednio oznaczone. za pomocą skrótów klawiszowych.
Jeśli klawiatura nie zostanie wykryta, w lewym dolnym rogu pojawi się joystick do poruszania, a skróty klawiszowe będą ukryte na przyciskach menu w prawym dolnym rogu.
Następnie zespół Pixonic chciał mieć pewność, że kursor pozostaje ukryty, gdy gracz aby obrócić kamerę. Kierując reklamy na Androida 7.0 (poziom interfejsu API 24) lub nowszego, zespół może ustawić dowolną ikonę wskaźnika. W tym przypadku zespół użył przezroczystej bitmapy, aby kursor był niewidoczny podczas rozgrywki:
public boolean setPointerVisibility(boolean visible) {
View = activity.findViewById(android.R.id.content);
view.setPointerIcon(PointerIcon.getSystemIcon(activity, visible ? PointerIcon.TYPE_DEFAULT : PointerIcon.TYPE_NULL));
}
W ten sposób kursor będzie wyłączony i niewidoczny, gdy wszystkie inne okna są zamknięte i toczy się bitwa. Jeśli pojawią się wyskakujące okienka, menu wstrzymania, program Pixonic uwidocznił kursor i wyświetlił jego domyślną ikonę.
Dostosowywanie samouczków i mechaniki rozgrywki
Aby zwiększyć wygodę użytkowników, Pixonic napisał też nowy kod, który wyświetla różne samouczki rozgrywki w zależności od bieżącego trybu urządzenia. Jeśli odtwarzacz przełączy się między tabletem a laptopem podczas bitwy. pojawi się przed wznowieniem rozgrywki.
Gdy gracze są w trybie laptopa, Pixonic wyłącza też kamerę na ekranie dotykowym
(ponieważ gracze będą sterować kamerą za pomocą myszy), podczas gdy
działają normalnie. Aby odróżnić dotknięcia od ruchów myszy,
zespół używa właściwości Input.touchCount
(w skryptach Unity):
if(Input.touchCount > 0) {
// this is screen touch event
} else {
// this is mouse (touchpad) event
}
Obsługa wielu okien
Na ostatnim etapie firma Pixonic chciała mieć pewność, że gra się nie zablokuje. trybu pełnoekranowego. Włączenie trybu okna w ChromeOS pozwala użytkownikom jednocześnie oglądać ulubionych streamerów podczas gry, ulepszać roboty podczas czytania o nowych umiejętnościach na stronie internetowej gry lub obserwować bitwę w trybie pasywnym, oglądając jednocześnie osobny film.
W tym celu Pixonic oznaczył(a) UnityPlayerActivity
jako opcję zmiany rozmiaru:
<activity android:name="com.unity3d.player.UnityPlayerActivity" ....
android:resizeableActivity="true">
Pamiętaj, że interfejs gry wygląda na taki wymiarem – zespół ustawił minimalne obsługiwane rozmiary okien:
<activity … >
<layout android:gravity="center" android:minHeight="800dp" android:minWidth="1200dp" />
</activity>
Aby zapewnić jak największą wciągającą rozgrywkę, firma Pixonic ustawiła tryb pełnoekranowy za pomocą metatagów. jako domyślną i poziomą.
<application>
<meta-data android:name="WindowManagerPreference:FreeformWindowSize" android:value="maximize" />
<meta-data android:name="WindowManagerPreference:FreeformWindowOrientation" android:value="landscape" />
….
</application>
Dzięki tym optymalizacjom gra nie została wstrzymana, a walka HUD odpowiednio się skaluje, w miarę jak gracze poszerzają i zwijają okna rozgrywki.
Wyniki
Dzięki obszernej bibliotece zasobów online cały proces zajął 5-osobowemu zespołowi programistów Pixonic zaledwie 2 tygodnie.
Ponad 100 tys. graczy grało już w roboty wojenne na ChromeOS. Firma Pixonic wprowadziła najnowsze optymalizacje. Rozgrywka pozwala teraz wykorzystują dodatkową przestrzeń na większych ekranach, bitwy robotów są nawet bardziej wciągające i angażujące niż wcześniej. Sesje użytkowników trwają o 25% dłużej na Chromebookach w porównaniu z innymi urządzeniami z Androidem. Wczesne opinie bardzo pozytywne, a niektórzy zauważyli nawet, że Gra zoptymalizowana pod kątem Chromebooka działa płynniej niż BlueStacks za pomocą emulatora.
Biorąc pod uwagę swój sukces, programiści studia Pixonic planują zaktualizować grafika na wszystkich urządzeniach z Androidem, dzięki czemu rozgrywka jest jeszcze bliższa rozgrywce jak na PC. z myślą o użytkownikach.
Zapoznaj się ze sprawdzonymi metodami optymalizacji aplikacji pod kątem ChromeOS.