Jeśli do opracowywania lub dostosowywania silnika gry używasz języka C lub C++, musisz spełnić poniższe wymagania, by zintegrować obsługę Androida z silnikiem gry.
- Korzystanie z narzędzi dla programistów na Androida
- Tworzenie aktywności
- Rysuj na ekranie
- Przetwarzaj zdarzenia wejściowe
- Wyjściowy dźwięk
- Zarządzaj pamięcią
- Testowanie i dopracowywanie
- Opublikuj w Google Play
Wymagania opisane na tej stronie nie pokazują, jak opracować silnik gry od podstaw, ale wskazać obszary, w których Android jest względnie unikalny w porównaniu z innymi platformami.
Korzystanie z narzędzi dla programistów na Androida
Android Studio zawiera narzędzia, za pomocą których możesz:
- Konfigurowanie projektu
- Tworzenie, debugowanie i pakowanie gry
- Sprawdzaj wydajność gry za pomocą narzędzi do profilowania systemu, procesora i pamięci
- sprawdzanie zawartości pakietu aplikacji lub pakietu gry;
- Zintegruj dodatkowe funkcje pakietu Android SDK i NDK
Android Graphics Inspector pozwala określić wydajność renderowania gry i umożliwiać analizowanie szczegółów renderowanych klatek za pomocą profilowania klatek.
Jeśli używasz głównie Microsoft Visual Studio, możesz dodać cel na Androida do istniejących projektów za pomocą rozszerzenia Android Game Development (AGDE). AGDE obsługuje debugowanie natywne w Visual Studio i obejmuje samodzielne wersje wielu narzędzi do profilowania Android Studio.
Tworzenie aktywności
Twoja gra musi utworzyć zasób Activity
i wchodzić z nim w interakcję. Zapoznaj się z cyklem życia aktywności na Androidzie, aby dowiedzieć się, kiedy aktywność jest tworzona, uruchamiana, wznawiana, wstrzymywana, zatrzymywana i zniszczona.
Zapoznaj się z biblioteką GameActivity
, która integruje i spełnia potrzeby związane z Activity
(okno gry, cykl życia, renderowanie i obsługa zdarzeń) natywnych silników gier w C lub C++.
Rysuj na ekranie
Gra musi rysować na ekranie obiekty i sprite’y. Poznaj Androida SurfaceView
i dowiedz się, jak skonfigurować grafikę w silniku gry.
Urządzenia z Androidem obsługują różne częstotliwości odświeżania wyświetlacza. Dowiedz się więcej o renderowaniu w pętlach gry, aby zapobiegać spadkom klatek i zakłóceniom w buforach klatek.
Dowiedz się, jak uzyskać tempo klatek, aby zapewnić płynne renderowanie w interfejsie OpenGL i Vulkan. Zoptymalizuj liczbę klatek za pomocą funkcji Performance Tuner.
Użyj antyaliasingu z wieloma próbkami (MSAA), aby poprawić jakość renderowania. Stosowanie MSAA wymaga niewielkiego narzutu. Aby dowiedzieć się więcej, przeczytaj posta na blogu na temat wielospróbowanego antyaliasingu dla prawie bezpłatnie – na sprzęcie do renderowania opartego na kafelkach.
Przetwarzaj zdarzenia wejściowe
Silnik gier odbiera zdarzenia wejściowe z różnych źródeł. Aby zapewnić sobie wciągającą rozgrywkę, dowiedz się, jak obsługiwać różne źródła danych wejściowych Androida:
Wyjściowy dźwięk
Silnik gry musi odtwarzać dźwięk na różnych urządzeniach i w różnych wersjach Androida. Dowiedz się więcej o Obój – naszej bibliotece audio w języku C++ typu open source, która umieści w Twojej grze dźwięk o wysokiej wydajności.
Użyj Oboe, aby zminimalizować opóźnienie, uniknąć określonych błędów audio i automatycznie wybrać najlepszą dostępną bibliotekę natywną (np. AAudio lub OpenSL ES).
Zarządzaj pamięcią
Na urządzeniach z Androidem system próbuje wykorzystać jak najwięcej pamięci RAM i w razie potrzeby przeprowadza różne optymalizacje pamięci, aby zwolnić miejsce. Dowiedz się, jak zarządzać wykorzystaniem pamięci, aby nie spowalniać gry ani jej nie zamykać.
Testowanie i dopracowywanie
Aplikacja na Androida ulega awarii za każdym razem, gdy w wyniku nieobsłużonego wyjątku lub sygnału wystąpi nieoczekiwane wyjście. Dowiedz się, jak wykrywać i diagnozować awarie, odczytywać zrzuty stosu, wyjątki dotyczące pamięci i sieci, używać narzędzia logcat oraz analizować błędy typowe dla Javy i Kotlina.
Opublikuj w Google Play
Gracze pobierają Twoją grę na różne urządzenia z Androidem w różnych krajach, w różnych warunkach sieciowych i w różnych pakietach danych. Dowiedz się, jak używać Google Play do dostarczania pakietów aplikacji i zasobów w dużych grach dzięki sieci dostarczania treści.