Tło
Pixonic, zespołu twórców gier wideo z siedzibą w Moskwie, wykorzystują każdą okazję do ulepszenia swoich aplikacji mobilnych i dotarcia do jeszcze większej 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.
Zobacz, jak zespół Pixonic zoptymalizował roboty wojenne pod kątem na większych ekranach.
Rozwiązanie
Aby rozpocząć optymalizację, firma Pixonic dodała tag metadanych w AndroidManifest.xml informuje system, że jest on gotowy do pełnej obsługi ChromeOS. i 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 trzecieoosobowych grach PvP, takich jak roboty wojenne, 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 ustawienia we właściwym czasie, zespół Pixonic przygotował nowy kod aby sprawdzić bieżący tryb gry 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.

Roboty wojenne w trybie laptopa.
Jeśli klawiatura nie zostanie wykryta, w lewym dolnym rogu pojawi się joystick ruchu. a skróty klawiszowe są ukryte w prawym dolnym rogu przycisków menu.

Roboty wojenne w trybie gry na tablecie/telefonie.
Następnie zespół Pixonic chciał mieć pewność, że kursor pozostaje ukryty, gdy gracz aby obrócić kamerę. Wybierając Androida 7.0 (poziom interfejsu API 24) lub wyżej, zespół może ustawić dowolną ikonę wskaźnika. W tym przypadku zespół wykorzystał przezroczysta mapa bitowa, aby kursor nie 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
Dla wygody użytkowników firma Pixonic napisała też nowy kod wyświetlający różne samouczki dotyczące rozgrywki w bieżącym trybie urządzenia użytkownika. Jeśli odtwarzacz przełączy się między tabletem a laptopem podczas bitwy. pojawi się przed wznowieniem rozgrywki.

Samouczki dotyczące gry w trybie laptopa z obsługą klawiatury i myszy.

Samouczek gry w trybie tabletu z ekranem dotykowym.
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 rozgrywki w oknach w ChromeOS: aby jednocześnie oglądać ulubione transmisje na żywo robotami i czytanie o nowych umiejętnościach na stronie gry lub oglądaj bitwę w trybie pasywnym podczas oglądania osobnego filmu.
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>

Roboty wojenne w trybie okien.
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 Pięciosobowy zespół programistyczny Pixonic zajął się tym w zaledwie dwa 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. i uzyskiwanie dodatkowych informacji.
Zapoznaj się ze sprawdzonymi metodami optymalizacji aplikacji pod kątem ChromeOS.