Zacznij tworzyć gry w Unity

W tym przewodniku opisujemy typowy cykl tworzenia gier. Po przeczytaniu tego przewodnika możesz go używać jako materiału referencyjnego.

Praca z Unity obejmuje 3 fazy cyklu rozwoju:

  • Planowanie i projektowanie
  • Tworzenie i testowanie
  • Publikowanie i utrzymywanie

Planowanie i projektowanie

Na etapie planowania i projektowania określasz, jak zbudować grę. Ty decydujesz, jak rozwiązać problemy związane z tworzeniem aplikacji mobilnych, oraz określasz narzędzia i procesy, które będą wykorzystywane w tym procesie.

Uzyskiwanie opinii od wszystkich członków zespołu

Współpracuj z zespołami ds. grafiki, inżynierii, projektowania, dźwięku i produkcji, aby określić i zarejestrować zadania związane z wdrażaniem. Na przykład:

  • Zespoły artystyczne mogą tworzyć budżety tekstur i siatek komponentów dla postaci i środowisk.
  • Zespół inżynierów może określić punkty kontrolne pamięci i wydajności na potrzeby profilowania na każdej platformie.
  • Projekt może obejmować mechanikę gry, która umożliwia korzystanie z niej.
  • Eksperci ds. dźwięku mogą sprawdzić wymagania dotyczące ciągłości dźwięku między interfejsem, dźwiękami przestrzennymi 2D i 3D.
  • Zespół ds. produkcji może przekazywać wymagania dotyczące wprowadzenia produktu na rynek i dbać o to, aby zespół był na bieżąco i realizował zadania zgodnie z harmonogramem.

Projektowanie z myślą o urządzeniach mobilnych

Tworzenie aplikacji na platformy mobilne wiąże się z określonymi kwestiami, takimi jak:

  • Zmienne formaty ekranu
  • Zużycie energii
  • Ograniczanie wykorzystania procesora z powodu temperatury
  • Dotykowe wprowadzanie danych
  • Tworzenie aplikacji na różne platformy
  • Interfejsy API grafiki (Vulkan lub OpenGL ES)

Szczegółowe informacje o aspektach projektowania na urządzenia mobilne znajdziesz w artykule Android development in Unity (Tworzenie aplikacji na Androida w Unity) na stronie Unity oraz w Akademii Google Play.

Tworzenie i testowanie

W fazie tworzenia i testowania budujesz grę oraz przeprowadzasz testy i przygotowania przed premierą. Przeprowadź ograniczone testy wewnętrzne w Google Play, aby przygotować się do spełnienia wymagań dotyczących premiery. Dopracuj strategię wdrażania i uporządkuj komponenty w Unity na podstawie systemów Play Asset DeliveryAddressables w Unity.

W sekcjach poniżej opisujemy narzędzia i techniki Unity, które pomogą Ci tworzyć aplikacje na Androida.

Renderuj

Renderowanie to proces rysowania na ekranie komponentów 3D i 2D ze sceny Unity. Silnik Unity odpowiada za renderowanie, ale w przypadku platformy Android należy wziąć pod uwagę kilka czynników.

Tekstury

Określ, czy potrzebujesz największych rozmiarów tekstur, na podstawie urządzeń docelowych. Podczas profilowania alokacji pamięci sprawdź potencjalne oszczędności wynikające ze zmiany docelowego rozmiaru tekstury.

Czas renderowania klatki

Aby zapobiec przegrzewaniu się urządzeń z Androidem, ustaw średni docelowy czas klatki poniżej 21 milisekund. Czasami, np. podczas wczytywania lub krótkich scen filmowych, czas klatki może przekraczać 21 milisekund, ale w przypadku podstawowej rozgrywki powinien być niższy niż 21 milisekund.

Na platformach mobilnych wymuszona synchronizacja pionowa ogranicza liczbę klatek na sekundę, jeśli nie osiągniesz minimalnej wartości docelowej. Na przykład w przypadku ekranu o częstotliwości odświeżania 60 Hz, jeśli nie osiągniesz 60 klatek na sekundę, gra zostanie ograniczona do 30 klatek na sekundę. Jeśli nie osiągniesz 30 klatek na sekundę, gra zostanie ograniczona do 15 klatek na sekundę.

Wiele urządzeń z Androidem ma częstotliwość odświeżania ekranu 60 Hz i 120 Hz. Rozważ korzyści wynikające z kierowania na znacznie krótsze czasy klatek (10 ms w przypadku odświeżania 60 Hz i 5 ms w przypadku 120 Hz) bez ryzyka ograniczenia wydajności z powodu przegrzania i szybszego rozładowywania baterii przy wyższych częstotliwościach renderowania.

Aby ustawić w grze konkretną liczbę klatek na sekundę w Unity, użyj funkcji Application.targetFrameRate.

Biblioteka Frame Pacing na Androidzie pomaga płynnie renderować obraz, gdy aplikacja potrzebuje więcej czasu na wyświetlenie następnej klatki niż wymaga tego częstotliwość odświeżania ekranu. W przypadku Unity w wersji 2021 i nowszych włączenie synchronizacji klatek na Androidzie ustawia częstotliwość odświeżania wyświetlacza na wartość najlepiej dopasowaną do docelowej liczby klatek. Dzięki temu gra nie będzie zużywać baterii na niepotrzebne aktualizacje wyświetlacza.

Aby włączyć bibliotekę, w Ustawieniach projektu > Odtwarzacz w sekcji Ustawienia Androida zaznacz pole wyboru Zoptymalizowane tempo klatek.

Okno dialogowe z ustawieniami projektu > ustawieniami odtwarzacza > zoptymalizowanym tempem klatek
Rysunek 1. Zoptymalizowane tempo klatek jest dostępne w ustawieniach odtwarzacza w Unity 2019.2 i nowszych wersjach.

Vulkan API

Vulkan to wieloplatformowy interfejs API do obsługi grafiki 3D o wysokiej wydajności i niskim narzucie w porównaniu z OpenGL ES. Unity może używać Vulkan na 2 sposoby.

Auto Graphics API

Możesz używać interfejsu Auto Graphics API z Vulkanem, ale może to mieć różne zachowania w zależności od zainstalowanej wersji Unity. Możesz to zrobić, wybierając kolejno Ustawienia projektu > Odtwarzacz > Renderowanie.

Wybierając wersję Unity, pamiętaj o tych kwestiach:

  • Unity w wersji 2021.1 i starszych nie obsługuje interfejsu Vulkan z automatycznym interfejsem Graphics API. Unity próbuje użyć OpenGL ES 3.2. Jeśli urządzenie nie obsługuje interfejsu OpenGL ES 3.2, Unity przełącza się na interfejs OpenGL ES 3.1, 3.0 lub 2.0 w tej kolejności.
  • Unity w wersji 2021.2 i nowszych korzysta w pierwszej kolejności z interfejsu Vulkan. Jeśli urządzenie nie obsługuje interfejsu Vulkan, Unity przełącza się na OpenGL ES 3.2, 3.1, 3.0 lub 2.0.
Ustawienia projektu > Ustawienia odtwarzacza > Renderowanie > Automatyczny interfejs API grafiki
Rysunek 2. Ustawienie interfejsu Auto Graphics API.

Ręczne interfejsy API grafiki

Możesz też włączyć Vulkan ręcznie, wyłączając automatyczny interfejs API grafiki. Jeśli używasz Unity 2021.1 lub starszej wersji, jest to jedyny sposób na korzystanie z Vulkana.

Jeśli Vulkan jest wyżej na tej liście niż OpenGL ES, Unity najpierw próbuje użyć interfejsu Vulkan. Jeśli urządzenie nie obsługuje platformy Vulkan, Unity działa z OpenGL ES. Szczegółowe informacje o platformie Vulkan na Androidzie, w tym o tym, jak używać nowoczesnych interfejsów API grafiki i optymalizować wydajność gry, znajdziesz w artykule Wprowadzenie do platformy Vulkan.

Ustawienia projektu > Ustawienia odtwarzacza > Renderowanie > Interfejsy API grafiki
Rysunek 3. Ręcznie ustaw interfejsy API grafiki, gdy opcja Automatyczny interfejs API grafiki jest wyłączona. Vulkan jest pierwszą opcją. Unity przełącza się na OpenGL ES 3.0.

Liczba wywołań rysowania

Wszystko, co jest wyświetlane na ekranie, jest powiązane z co najmniej 1 wywołaniem rysowania. Na platformach mobilnych należy zoptymalizować i zmniejszyć liczbę wywołań rysowania wysyłanych do procesora graficznego (GPU).

Wywołania rysowania można porównać do samochodów stojących w kolejce na światłach. Gdy światło zmieni się na zielone, może przejechać określona liczba samochodów, zanim światło zmieni się ponownie. Gdy dioda zmieni kolor na żółty, osiągniesz idealny docelowy czas klatki (21 milisekund), a gdy zmieni kolor na czerwony, osiągniesz limit czasu klatki wynoszący 33 milisekundy. Wszystko, co wykracza poza ten czas, wpływa na następną klatkę renderowania, więc wynikowa liczba klatek na sekundę jest niższa niż docelowe 30 FPS.

Informacje o tym, jak zwiększyć wydajność wywołań rysowania w grze, znajdziesz w artykule Batching w Centrum pomocy Unity.

Cienie

Wywołania rysowania rzucania cieni mogą być najbardziej wymagające dla procesora graficznego, zużywając większość czasu procesora graficznego nawet w przypadku prostych środowisk. Aby zmniejszyć koszt wywołań rysowania rzucania cieni, wypróbuj cienie twarde zamiast miękkich. Jeśli na urządzeniach z niższej półki nadal jest to zbyt kosztowne dla procesora graficznego, rozważ użycie rozmytych cieni zamiast cieni twardych.

Tekstura

Zalecany format kompresji tekstur RGB i RGBA na Androidzie to ASTC. W Unity minimalną opcją kompresji tekstur, której należy używać na Androidzie, jest ETC2. W ustawieniach kompilacji Unity możesz ustawić ETC2 jako format zapasowy dla ASTC.

Pełną listę obsługiwanych formatów według platformy znajdziesz w dokumentacji Unity w artykule Manual: Recommended, default, and supported texture formats, by platform (Podręcznik: zalecane, domyślne i obsługiwane formaty tekstur według platformy).

Interfejs użytkownika i formaty obrazu

Za pomocą narzędzia Unity Device Simulator możesz wyświetlać podgląd różnych rozdzielczości ekranu, orientacji i proporcji obrazu bezpośrednio w edytorze Unity. Możesz przełączać się między widokiem gry a widokiem symulatora urządzenia.

Podgląd narzędzia znajdziesz w artykule Simulate your Game with Device Simulator in Unity! (Symulowanie gry za pomocą symulatora urządzenia w Unity).

Rysunek 4. Symulator urządzenia z uruchomioną grą Trivial Kart.

Kod źródłowy Trivial Kart znajdziesz w repozytorium games-samples na GitHubie.

Możesz szybko sprawdzić układ i poprawność elementów obszaru roboczego interfejsu w widoku symulatora urządzenia, wybierając opcje urządzenia w menu:

Ustawienia projektu > Ustawienia odtwarzacza > Zoptymalizowane tempo klatek
Rysunek 5. Symulator urządzenia umożliwia zmianę urządzeń w edytorze, dzięki czemu możesz wcześnie wykryć problemy z projektem.
Ustawienia projektu > Ustawienia odtwarzacza > Zoptymalizowane tempo wyświetlania klatek
Rysunek 6. Zanim pobierzesz pakiet symulatora urządzenia, zaznacz opcję Enable Pre-release Packages (Włącz pakiety przedpremierowe).

Więcej technik optymalizacji interfejsu Unity znajdziesz w tym samouczku od Unity: Optymalizacja interfejsu Unity.

Fizyka

Silnik Nvidia PhysX jest wbudowany w Unity. Ustawienia domyślne mogą być kosztowne na urządzeniach mobilnych, dlatego pamiętaj o tych kwestiach:

  • Weź pod uwagę docelową liczbę klatek i odpowiednio ustaw stały krok czasowy. Domyślna wartość to 0,02 ms lub 50 Hz. Możesz zwiększyć tę wartość do 0,03 lub więcej, aby uzyskać docelową liczbę klatek na sekundę wynoszącą 30.
  • Rozważ uproszczenie siatkowych detektorów zderzeń i zminimalizowanie macierzy kolizji warstw, aby określać interakcje między obiektami gry określonych typów warstw.

Więcej informacji o ustawieniach fizyki i optymalizacjach gier mobilnych znajdziesz w e-booku Optimize Your Mobile Games od Unity.

Profil

Programiści aplikacji często pomijają lub ignorują profilowanie, dopóki aplikacja nie osiągnie krytycznego punktu awarii. Warto zaplanować w procesie specjalny czas na profilowanie i stosować te sprawdzone metody:

  • Określ kluczowe punkty podczas projektowania, w których możesz przeznaczyć czas na profilowanie, zamiast robić to losowo.
  • Zapisuj migawki profilu, aby używać ich w analizatorze profilu Unity.
  • Profiluj grę na urządzeniach docelowych, aby uzyskać dokładny obraz jej wydajności na obecnym etapie rozwoju.
  • Profilowanie różnych części gry.
  • Określ, jak gracze grają w Twoją grę. (Nie profiluj gry tylko wtedy, gdy jest w stanie bezczynności lub na ekranie wstrzymania).
  • Profil w trybie ciągłym po pewnym czasie działania gry, aby pomóc w znalezieniu problemów z ograniczaniem wydajności, które mogą wystąpić, gdy urządzenia mobilne są gorące.

Możesz używać tych narzędzi do profilowania oddzielnie lub w połączeniu z innymi.

  • Unity Profiler to w pełni zintegrowane narzędzie do analizy wydajności, które może być uruchamiane w edytorze Unity i łączyć się z samodzielnym urządzeniem z Androidem, na którym działają kompilacje w trybie deweloperskim.

  • Android GPU Inspector: za pomocą narzędzia Android GPU Inspector (AGI) możesz debugować na poziomie klatek. AGI analizuje też usługi systemowe, w tym GPU, CPU, pamięć, baterię i liczniki GPU.

Szczegółowe informacje o profilowaniu gry w Unity znajdziesz w filmie Introduction to profiling in Unity (Wprowadzenie do profilowania w Unity) lub w artykule Ultimate guide to profiling Unity games (Kompletny przewodnik po profilowaniu gier w Unity). Oba materiały pochodzą od Unity.

Zarządzanie pamięcią

Procesy Androida współdzielą dostępną pamięć na urządzeniu docelowym. Profilowanie użycia pamięci należy przeprowadzać, gdy na urządzeniu testowym jest wystarczająco dużo wolnej pamięci. Przeprowadzaj testy pamięci w stałym punkcie gry, aby móc odpowiednio porównywać sesje i trendy wykorzystania pamięci.

Podczas pracy ze skryptami napisanymi w C# zachowaj ostrożność przy używaniu ciągów znaków, porównywaniu ciągów znaków i przydzielaniu obiektów związanych z ciągami znaków (takich jak pliki JSON z ustawieniami gry). Często powodują one przydzielanie pamięci i mogą przyczyniać się do fragmentacji.

W przypadku dużych sekwencji manipulacji ciągami znaków rozważ użycie klasy StringBuilder zamiast łączenia ciągów znaków w miejscu (np. „this” + „is” + „a” + „bad” + „idea” w porównaniu z wywołaniami funkcji StringBuilder.Concat()).

Więcej informacji o ciągach znaków znajdziesz w sekcji Ciągi znaków i tekst w dokumentacji Unity.

Oceniaj zasoby tekstowe TextAsset i JSON pod kątem preferowanego typu.ScriptableObject ScriptableObjects wydajnie obsługiwać przechowywanie danych w różnych scenach i umożliwiać modyfikacje w czasie od edytora do odtwarzania;

Więcej informacji o korzystaniu z alternatywnych metod obsługi domyślnego formatu JSON na potrzeby optymalizacji mobilnej znajdziesz w artykule The hidden optimization in network games (Ukryta optymalizacja w grach sieciowych) na stronie Hutch.

Użyj interfejsu Memory Advice API, aby określić, jak wygląda wykorzystanie pamięci w czasie działania aplikacji. Interfejs API udostępnia wskaźnik świetlny informujący o wysokim, normalnym i niskim wykorzystaniu pamięci. Możesz zasubskrybować wskaźnik, aby otrzymywać aktualizacje, lub bezpośrednio sprawdzać jego bieżący stan. Gdy pojawi się czerwony sygnał, rozważ zmniejszenie puli lub pamięci podręcznej obiektów w grze. Uwzględnij ten kontekst w telemetrii gry podczas działań na żywo i analizy danych o skuteczności po premierze.

Aby dowiedzieć się więcej o organizacji pamięci na urządzeniach z Androidem i o tym, jak z nią współpracuje Unity, obejrzyj film Understanding Android memory usage (from Google I/O '18) (w języku angielskim). Film przedstawia rodzaje problemów z pamięcią i wyjaśnia, kiedy zaczyna działać proces zabijania zadań przy niskim poziomie pamięci.

czyszczenie pamięci,

Odzyskiwanie pamięci w zarządzanym środowisku pamięci usuwa nieużywane fragmenty pamięci, które można ponownie wykorzystać w aplikacji. Postępuj zgodnie ze sprawdzonymi metodami dotyczącymi odzyskiwania pamięci, aby uniknąć niepotrzebnego przydzielania zasobów pamięci.

Na przykład utwórz pulę obiektów gry zamiast korzystać z alokacji na żądanie (GameObject.Instantiate). W przypadku dużych pul rozważ alokację w wielu klatkach, aby zmniejszyć ryzyko, że gra nie będzie odpowiadać na polecenia na urządzeniach z Androidem z niższej półki.

Oto prosty fragment kodu z korutyną, która jest wywoływana od początku MonoBehaviour:

// Option 1: Bad for memory management - causes allocation each iteration
IEnumerator UpdateEnemyTarget() {
  while (enabled) {
    yield return new WaitForSeconds(1.0f);
    // Some intermittent function check
  }
}

// Option 2: Better for memory management - allocation of yield instruction once, reused each iteration
private YieldInstruction waitForSecond = new WaitForSeconds(1.0f);
IEnumerator BetterUpdateEnemyTarget() {
  while (enabled) {
    yield return waitForSecond;
    // Some other intermittent function
  }
}

Możesz edytować plik szablonu MonoBehaviour, aby usunąć domyślne funkcje Start() i Update(), dzięki czemu podczas tworzenia nie pozostawisz przypadkowo pustych funkcji.

Omówienie kolejności wykonywania zdarzeń MonoBehaviour znajdziesz w artykule Kolejność wykonywania funkcji zdarzeń w dokumentacji Unity. Więcej informacji o zarządzaniu pamięcią znajdziesz w kursie Zarządzanie pamięcią w Unity.

Wskazówki dotyczące optymalizacji wydajności gier mobilnych znajdziesz w artykule Optymalizacja wydajności gier mobilnych: wskazówki dotyczące profilowania, pamięci i architektury kodu od najlepszych inżynierów Unity.

Pule prefabrykatów

Skoki czasu klatki procesora są prawie w całości spowodowane tworzeniem instancji prefabrykatów podczas rozgrywki. Przed rozpoczęciem rozgrywki rozważ wstępne rozgrzanie puli obiektów dla pocisków, wrogów i efektów wizualnych, aby zmniejszyć lub wyeliminować skoki wykorzystania procesora podczas uruchamiania. Możesz rozłożyć dodatkowe optymalizacje na kilka „ramek inicjujących” podczas wczytywania lub sekwencji wprowadzających w scenie.

Unity Asset Store znajdziesz wiele zasobów do puli innych firm związanych z zarządzaniem pulą obiektów gry. Możesz również tworzyć własne. Więcej informacji znajdziesz w artykule wprowadzającym do puli obiektów w Unity Learn.

Dostarczanie komponentów

Istnieją limity rozmiaru aplikacji, gdy jest ona po raz pierwszy wdrażana w Google Play. W zależności od rozmiaru i charakteru gry możesz potrzebować wszystkich lub niektórych zasobów gry (modeli postaci, środowisk, elementów interfejsu itp.), aby gracze mogli korzystać z niej w sposób, w jaki zamierzasz.

Za pomocą usługi Play Asset Delivery (PAD) możesz zarządzać zasobami, których gra wymaga w momencie instalacji, w trybie szybkiego pobierania lub na żądanie. Pakiety zasobów Unity są zintegrowane z PAD, a za pomocą tego narzędzia możesz określić, które elementy mają być dostarczane.

Adresowalne

Konfigurowanie w czasie działania zasobów dynamicznych, takich jak prefabrykaty, tekstury i pliki dźwiękowe, nie jest już skomplikowane, jeśli przygotujesz i sprawdzisz system nazewnictwa Addressables. Adresowalne zasoby oddzielają sposób rozmieszczenia treści od sposobu ich tworzenia i wczytywania. System Addressables zastępuje foldery Resources i pakiety zasobów, aby uprościć sposób odwoływania się do zasobów i ich wczytywania w czasie działania.

Przykład znajdziesz w projekcie demonstracyjnym korzystającym z pakietu Addressables w GitHubie. Więcej informacji o tworzeniu Addressables znajdziesz w artykule Addressable Asset System na blogu Unity.

W przypadku układu zasobów z adresowaniem łączenie zbyt małej lub zbyt dużej liczby zasobów w pakiety wspólne ma swoje zalety i wady. Więcej informacji o zarządzaniu treściami za pomocą Addressables znajdziesz w artykule Uprość zarządzanie treściami za pomocą Addressables.

Możesz skonfigurować samodzielną wersję demonstracyjną i eksperymentować z trybami dostępu, aby zapoznać się z systemem adresowalnym. Możesz też zobaczyć projekt open source BuildLayout Explorer for Unity 2019.3 i nowszych oraz sprawdzić raport buildlayout.txt wygenerowany przez Addressables.

Zasoby projektu Chop Chop, czyli otwartego projektu Unity, zostały spakowane przy użyciu systemu Addressables na potrzeby wszystkich operacji wczytywania i zwalniania. Więcej informacji o strukturze i konfiguracji pakietów Addressables znajdziesz w artykule Packaging content with Addressable Assets | Open Projects Devlog.

W projekcie Chop Chop jedyna scena wczytywana domyślnie, czyli scena Initialization, została skonfigurowana tak, aby używać AssetReferences zamiast bezpośrednich linków do zasobów w projekcie (scen, prefabrykatów itp.).

Kod źródłowy otwartego projektu Unity: Chop Chop jest dostępny na GitHubie. Chociaż projekt nie jest już rozwijany, repozytorium Git i dokumentacja są nadal dostępne.

Wtyczki innych firm

Jeśli używasz wtyczek innych firm, np. tych z Unity Asset Store, sprawdź foldery i usuń niepotrzebne komponenty z folderów Resources. Podczas procesu kompilacji Unity zbiera wszystkie zasoby znajdujące się w folderach Resources i pakuje je w jeden pakiet, który jest dostępny w czasie działania. Może to zwiększyć rozmiar końcowego pakietu i często nie jest potrzebne.

Aby szybko znaleźć wszystkie foldery zasobów, w panelu Projekt wyszukaj Zasoby. Możesz następnie wybrać każdy z nich, aby sprawdzić, co zawiera, i czy jest niezbędny w Twojej grze.

Rysunek 7. W folderach pobranych z Unity Asset Store może się znajdować wiele folderów Resources. Wyczyść te elementy, aby nie były one dołączane do pakietu aplikacji.

Publikowanie i utrzymywanie

Gdy gra mobilna będzie gotowa do wprowadzenia na rynek, zdecyduj, komu chcesz ją udostępnić, jak przeprowadzić testy alfa i beta oraz jak monitorować i śledzić jej skuteczność po wprowadzeniu na rynek.

Analizowanie opinii z wersji limitowanej

Możesz udostępnić grę ograniczonej grupie docelowej i przeprowadzić testy beta na większą skalę lub aktywować grę, aby była w pełni dostępna na wszystkich rynkach. W przypadku wersji ograniczonej możesz dostosować wydajność aplikacji na podstawie większej liczby aktywnych użytkowników i urządzeń.

Możesz na przykład używać wtyczki Android Performance Tuner do UnityGoogle Analytics do Unity, aby uzyskiwać statystyki dotyczące skuteczności aplikacji i trendów wśród graczy. Na ich podstawie zespół programistów może dostosowywać aplikację i wdrażać aktualizacje. Możesz też używać danych analitycznych do planowania sequeli lub podobnych gier z tego samego gatunku.

Testy alfa i beta

Po skonfigurowaniu profilu aplikacji w Konsoli Google Play możesz przygotować publiczne wersje alfa i beta do testów i rozpowszechnić je wśród ograniczonej grupy odbiorców w celu sprawdzenia przed wprowadzeniem na rynek. Wprowadzając aplikację dla ograniczonej grupy odbiorców, możesz rozwiązać wszelkie problemy na większej liczbie urządzeń i zebrać wstępne opinie, na które możesz odpowiedzieć przed wprowadzeniem aplikacji na całym świecie.

Kompilacje Unity są dystrybuowane za pomocą pakietów Android App Bundle. Więcej informacji znajdziesz w instrukcji: dostarczanie do Google Play od Unity, w której opisano też zmiany z plików APK na format AAB.

Monitorowanie i śledzenie

Podczas fazy operacji na żywo i dystrybucji gry możesz używać Androida Vitals, aby śledzić problemy z wydajnością na urządzeniach, do których nie miałeś dostępu podczas tworzenia i testowania. Więcej informacji znajdziesz w filmie Co nowego w zakresie gier w sekcjach Zasięg i urządzenia oraz Android Vitals.

Większe zespoły deweloperskie często mają unikalne i niestandardowe potoki telemetrii gier, które dostarczają danych związanych z wydajnością urządzenia. Pamiętaj, aby korzystać z narzędzia Android Performance Tuner (APT) i odpowiedniej wtyczki Unity, aby dostosowywać dane związane z liczbą klatek, jakością grafiki, czasem wczytywania i porzucaniem aplikacji podczas wczytywania. Postępuj zgodnie z instrukcjami w tym artykule.

Cykl życia gry nie kończy się po jej opublikowaniu. Monitorowanie wydajności i opinii, utrzymywanie ich na odpowiednim poziomie oraz reagowanie na nie ma kluczowe znaczenie dla zadowolenia użytkowników, pozytywnych opinii i ostatecznego przyjęcia gry na wszystkich rynkach.