Zacznij tworzyć gry w Unity

Ten przewodnik opisuje typowy cykl tworzenia gry. Przeczytaj ten przewodnik, by również posłużyć Ci jako materiał referencyjny.

W Unity cykl programowania składa się z 3 faz:

  • Planowanie i projektowanie
  • Programuj i testuj
  • Publikowanie i utrzymywanie

Planowanie i projektowanie

Na etapie planowania i projektowania to Ty decydujesz, jak stworzyć grę. To Ty decydujesz, jak sprostać wyzwaniom związanym z tworzeniem aplikacji mobilnych, i określasz narzędzia i procesy, których będziesz używać podczas programowania.

Poproś o opinie wszystkich członków zespołu

Wspólnie z zespołami artystycznymi, inżynierskimi, projektowymi, audio i produkcyjnymi pracujcie nad rozpoznaniem i rejestracją zadań wdrożeniowych. Na przykład:

  • Zespoły artystyczne mogą tworzyć tekstury zasobów i budżety siatkowe dla postaci i środowisk.
  • Zespół inżynierów może określić punkty kontrolne pamięci i wydajności na potrzeby profilowania poszczególnych platform.
  • Projektanci mogą zaplanować mechanikę gry, dzięki której będzie ona działać.
  • Eksperci ds. audio mogą sprawdzić wymagania dotyczące ciągłości dźwięku w interfejsie oraz dźwiękach przestrzennych 2D i 3D.
  • Produkcja może przekazać informacje o wymaganiach dotyczących premier, a zespół może pomagać w planowaniu i realizacji zadań.

Projektowanie na urządzenia mobilne

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

  • Zmienne proporcje ekranu
  • Zużycie energii
  • Ograniczanie temperatury i procesora
  • Dotykowe wprowadzanie danych
  • Programowanie na wielu platformach
  • Interfejsy API graficzne (Vulkan lub OpenGL ES)

Szczegółowe informacje o kwestiach związanych z projektowaniem na urządzenia mobilne znajdziesz w materiałach na temat programowania Androida w Unity na platformie Unity oraz w Akademii Google Play.

Programuj i testuj

W fazie programowania i testowania tworzysz grę, przeprowadzasz testy i przygotowujesz się do niej przed opublikowaniem. W Google Play przeprowadzasz ograniczone testy wewnętrzne, aby przygotować się do spełnienia wymagań dotyczących wprowadzania aplikacji na rynek. Możesz ulepszyć strategię wdrażania i uporządkować zasoby w Unity na podstawie systemów Play Asset Delivery i Addressables (Unity).

W kolejnych sekcjach opisano narzędzia i techniki w Unity, które ułatwiają tworzenie aplikacji na Androida.

Renderowanie

Renderowanie to proces rysowania zasobów 3D i 2D ze sceny Unity na ekranie. Mechanizm Unity zajmuje się renderowaniem, ale trzeba wziąć pod uwagę kilka czynników w przypadku platformy Androida.

Tekstury

Na podstawie urządzeń docelowych określ, czy potrzebujesz największych rozmiarów tekstur. Podczas profilowania przydziału pamięci sprawdź potencjalne oszczędności związane ze zmianą rozmiaru docelowej tekstury.

Czas renderowania klatki

Aby uniknąć przegrzania na urządzeniach z Androidem, docelowe wartości czasu renderowania klatki nie mogą przekraczać 21 milisekund. Może się zdarzyć, że np. podczas wczytywania aplikacji lub obejrzenia krótkich filmów liczba klatek będzie przekraczać 21 milisekund, ale podczas odtwarzania głównego filmu nie powinna ona przekraczać 21 milisekund.

Na platformach mobilnych wymuszona synchronizacja funkcji VSync ogranicza liczbę klatek, gdy nie osiągasz minimalnej wartości docelowej. Na przykład przy aktualizacji ekranu z częstotliwością 60 Hz, jeśli nie będziesz mieć 60 kl./s, gra zostanie ograniczona do 30. Jeśli nie przekroczysz 30, ograniczymy Cię do 15.

Wiele urządzeń z Androidem ma częstotliwość odświeżania 60 Hz i 120 Hz. Rozważ korzyści ze znacznie krótszego czasu renderowania klatek (cel: 10 ms w przypadku aktualizacji 60 Hz i 5 ms w przypadku 120 Hz), bez ryzyka ograniczenia termicznego i wyładowania baterii, co pozwoli zwiększyć współczynniki renderowania.

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

Biblioteka tempa klatek w Androidzie pomaga płynnie renderować reklamy, gdy wyświetlenie następnej klatki przez aplikację trwa dłużej niż jest wymagane w przypadku częstotliwości odświeżania ekranu. W przypadku Unity w wersji 2021 i nowszych włączenie tempa wyświetlania klatek na Androidzie ustawia częstotliwość odświeżania ekranu tak, aby jak najlepiej odpowiadała docelowej liczbie klatek. Dzięki temu gra nie marnuje baterii na zbędne aktualizacje wyświetlacza.

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

Okno pokazujące Ustawienia projektu > Ustawienia odtwarzacza > Zoptymalizowane tempo sławy
Rysunek 1. Zoptymalizowane tempo klatek jest dostępne w Ustawieniach odtwarzacza w Unity 2019.2 i nowszych wersjach.

Interfejs API Vulkan

Vulkan to wieloplatformowy interfejs API grafiki 3D o wysokiej wydajności, który charakteryzuje się niewielkim nakładem pracy w porównaniu z algorytmem OpenGL ES. Unity może korzystać z interfejsu Vulkan na 2 sposoby.

Interfejs API Auto Graphics

Możesz używać interfejsu Auto Graphics API w interfejsie Vulkan, ale jego działanie może się różnić w zależności od zainstalowanej wersji Unity. Aby to zrobić, kliknij Ustawienia projektu > Odtwarzacz > Renderowanie.

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

  • Unity 2021.1 i starsze wersje nie obsługują interfejsu Vulkan z interfejsem AutoGraphics API. Unity próbuje używać OpenGL ES 3.2. Jeśli urządzenie nie obsługuje OpenGL ES 3.2, Unity wraca do OpenGL ES 3.1, 3.0 lub 2.0 (w tej kolejności).
  • Unity 2021.2 i nowsze korzystają najpierw 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 > Interfejs Auto Graphics API
Rysunek 2. Ustawienie Auto Graphics API.

Ręczne interfejsy API do grafiki

Możesz też włączyć interfejs Vulkan ręcznie, wyłączając interfejs Auto Graphics API. Jeśli używasz Unity 2021.1 lub poprzedniej wersji, to jedyny sposób korzystania z Vulkana.

Jeśli interfejs Vulkan znajduje się na tej liście wyżej niż OpenGL ES, Unity najpierw próbuje użyć interfejsu Vulkan. Jeśli urządzenie nie obsługuje interfejsu Vulkan, Unity działa w trybie OpenGL ES. Szczegółowe informacje o interfejsie Vulkan na Androida znajdziesz w artykule Pierwsze kroki z interfejsem Vulkan, na przykład o tym, jak korzystać z nowoczesnych interfejsów API grafiki i optymalizować wydajność gry.

Ustawienia projektu > Ustawienia odtwarzacza > Renderowanie > Interfejsy Graphics APIs
Rysunek 3. Gdy interfejs Auto Graphics API jest wyłączony, ustawiaj ręcznie interfejsy graficzne. Pierwsza opcja to interfejs Vulkan. Unity wraca do OpenGL ES 3.0.

Rysuj połączenia

Wszystko 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).

Zachęcaj do rysowania połączeń jak do samochodów ustawionych na sygnalizacji świetlnej. Gdy światło zmieni kolor na zielony, pewna liczba samochodów może przejechać, zanim światło się zmieni. Gdy dioda zmienia kolor na żółty, osiągany jest docelowy czas renderowania klatki (21 milisekund), a gdy dioda zmienia kolor na czerwony, jest to limit 33 milisekund. Wszystko, co ma wpływ na następną klatkę renderowania, tak aby wynikowa liczba klatek była niższa niż docelowa wartość 30 kl./s.

Informacje o tym, jak zwiększyć wydajność wywołania rysowania w grze, znajdziesz w artykule pomocy Unity o grupowaniu.

Cienie

Wywołania rysowania w trybie cieniowania mogą być najbardziej obciążające GPU i pochłaniać większość czasu GPU nawet w prostych środowiskach. Aby zmniejszyć koszty przesyłania połączeń przez cienie, poeksperymentuj z używaniem twardych, a nie miękkich cieni. Jeśli w przypadku urządzeń o niższej wydajności jest to wciąż zbyt drogie w przypadku GPU, rozważ zastosowanie cieni w postaci blobów zamiast twardych cieni.

Tekstura

Zalecanym formatem kompresji tekstur RGB i RGBA na Androidzie jest ASTC. W Unity minimalna opcja kompresji tekstur, której należy użyć na Androidzie, to ETC2. Możesz wrócić do ETC2 jako kopię zapasową z ASTC w ustawieniach kompilacji Unity.

Pełną listę formatów tekstur obsługiwanych na poszczególnych platformach znajdziesz w dokumentacji Unity na stronie Manual: zalecane, domyślne i obsługiwane formaty tekstur według platformy.

Interfejs i formaty obrazu

Możesz użyć narzędzia Symulator urządzenia Unity, aby wyświetlić podgląd różnych rozdzielczości ekranu, orientacji i formatów obrazu bezpośrednio w edytorze Unity. Możesz przełączać się między widokiem gry i symulatora urządzenia.

Zapoznaj się z podglądem tego narzędzia na stronie Simulation your Game with Device Simulator in Unity! (Symuluj grę za pomocą symulatora urządzenia).

Rysunek 4. Symulator urządzenia z aplikacją Trivial Kart.

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

Układ i poprawność elementów canvas interfejsu możesz szybko sprawdzić w widoku symulatora urządzenia, wybierając w menu opcje urządzenia:

Ustawienia projektu > Ustawienia odtwarzacza > Zoptymalizowane tempo klatek
Rysunek 5. Symulator urządzeń obsługuje zmienianie urządzeń w edytorze, dzięki czemu możesz wcześnie wychwycić problemy z projektem.
Ustawienia projektu > Ustawienia odtwarzacza > Zoptymalizowane tempo sławy
Rysunek 6. Zanim pobierzesz pakiet symulatora urządzenia, zaznacz opcję Włącz pakiety przedpremierowe.

Więcej informacji o technikach optymalizacji interfejsu użytkownika w Unity znajdziesz w tym samouczku na stronie Unity: Optimizing Unity UI.

Fizyka

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

  • Weź pod uwagę docelową liczbę klatek i odpowiednio ustaw stały czas. Wartość domyślna to 0,02 ms lub 50 Hz. Możesz zwiększyć tę wartość do 0,03 lub więcej przy wartości docelowej 30 kl./s.
  • Rozważ uproszczenie zderzań sieci typu mesh oraz zminimalizowanie macierzy kolizji warstw w celu określania interakcji między obiektami gry w określonych typach warstw.

Informacje o ustawieniach fizycznych i optymalizacji gier mobilnych znajdziesz w artykule Optymalizowanie gier mobilnych na platformie Unity.

Profil

Deweloperzy aplikacji często pomijają lub ignorują profilowanie, dopóki aplikacja nie osiągnie krytycznego punktu awarii. Warto zaplanować przydzielony czas na cały proces i zastosować następujące sprawdzone metody:

  • Określ kluczowe punkty podczas programowania, w którym możesz przydzielić czas profilowania zamiast losowo.
  • Zapisuj zrzuty profili do użycia z Analizatorem profili Unity.
  • Wykonaj profilowanie gry na urządzeniach docelowych, by mieć pełniejszy obraz jej wyników na obecnym etapie tworzenia.
  • Profiluj różne części swojej gry.
  • Profiluj, w jaki sposób Twoi gracze grają w grę. (Nie profiluj gry tylko wtedy, gdy jest nieaktywna lub gdy wyświetla się ekran wstrzymania).
  • Po pewnym czasie działania graj w trybie zrównoważonym, aby wykrywać problemy z ograniczeniem, które mogą wystąpić, gdy urządzenia mobilne są gorące.

Tych narzędzi do profilowania możesz używać oddzielnie lub w połączeniu.

  • Unity Profiler Program profilujący Unity to w pełni zintegrowane narzędzie do analizy wydajności, które może działać w oparciu o Twój kod w edytorze Unity i łączyć się z samodzielnym urządzeniem z Androidem, na którym są kompilacje w trybie deweloperskim.

  • Inspektor GPU w Androidzie Za pomocą inspektora GPU (AGI) możesz przeprowadzić debugowanie na poziomie klatki. AGI analizuje też usługi systemowe, w tym GPU, CPU, pamięć, baterię i liczniki GPU.

Aby dowiedzieć się więcej o profilowaniu gry w Unity, obejrzyj film Introduction to profiling in Unity (Wprowadzenie do profilowania w Unity) lub przeczytaj Pełny przewodnik po profilowaniu gier w Unity (w języku angielskim), który znajdziesz w Unity.

Zarządzanie pamięcią

Procesy Androida współdzielą pamięć dostępną na urządzeniu docelowym. Wykorzystanie pamięci należy profilować, gdy docelowe urządzenie testowe ma dużo wolnej pamięci. Testuj pamięć wykonywaną w określonym momencie gry, aby móc odpowiednio porównywać sesje i trendy wykorzystania pamięci.

Podczas pracy ze skryptami napisanymi w języku C# zachowaj ostrożność podczas korzystania z ciągów tekstowych, porównań ciągów znaków oraz przydziału obiektów powiązanych z ciągami znaków (np. plików JSON w przypadku ustawień gier). Generują one częste alokacje pamięci i mogą przyczyniać się do fragmentacji.

Do tworzenia dużych sekwencji manipulacji ciągami znaków warto użyć klasy StringBuilder, a nie miejscowe łączenie ciągów znaków (np. „this” + „is” + „a” + „zły” + „idea” w porównaniu z wywołaniami funkcji StringBuilder.Concat()).

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

Oceń zasoby tekstowe TextAsset i JSON pod kątem preferowanego typu ScriptableObject. ScriptableObjects wydajnie obsługuje przechowywanie danych między scenami i umożliwia zmianę czasu od edycji do odtwarzania.

Informacje o korzystaniu z alternatywnych rozwiązań dla domyślnego uchwytu JSON na potrzeby optymalizacji pod kątem urządzeń mobilnych znajdziesz w artykule Ukryta optymalizacja w grach sieciowych w serwisie Hutch.

Użyj interfejsu Memory Advice API, aby określić wykorzystanie pamięci w czasie działania. Interfejs API wyświetla wskaźnik zatrzymania dla wysokiego, normalnego i małego wykorzystania pamięci. Możesz zasubskrybować ten wskaźnik, aby otrzymywać powiadomienia o aktualizacjach, lub przeprowadzić w nim ankietę bezpośrednio, aby sprawdzić bieżący stan. Gdy otrzymasz czerwony sygnał, rozważ zmniejszenie puli obiektów gry lub pamięci podręcznej. Uwzględnij ten kontekst w danych telemetrycznych dotyczących gry podczas operacji na żywo i sprawdzaniu wskaźników wydajności po jej uruchomieniu.

Aby dowiedzieć się więcej o organizacji pamięci na urządzeniach z Androidem i o tym, jak działa z nią Unity, obejrzyj film o wykorzystaniu pamięci Androida (z Google I/O 2018). W filmie omawiamy typy problemów z pamięcią oraz sytuacje, w których występuje ten mechanizm.

Wywóz śmieci

Czyszczenie pamięci w zarządzanym środowisku pamięci czyści nieużywane fragmenty pamięci, które mogą zostać poddane recyklingowi dla aplikacji. Postępuj zgodnie ze sprawdzonymi metodami czyszczenia pamięci, aby uniknąć niepotrzebnych przydziałów zasobów pamięci.

Na przykład utwórz pulę obiektów gry zamiast przydziałów na żądanie (GameObject.Instantiate). W przypadku dużych pul rozważ przydzielenie wielu klatek, aby zmniejszyć ryzyko braku reakcji gry na podstawowych urządzeniach z Androidem.

Przyjrzyjmy się temu fragmentowi kodu prostej korutyny, która jest wywoływana od początku działania 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 zmodyfikować plik szablonu MonoBehaviour, aby usunąć domyślne funkcje wycinka kodu Start() i Update(). Dzięki temu podczas tworzenia nie zostanie przypadkowo pozostawione puste funkcje.

Kolejność wykonywania zdarzeń MonoBehaviour znajdziesz w sekcji 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 Optymalizowanie wydajności gier mobilnych: wskazówki najlepszych inżynierów Unity na temat profilowania, pamięci i architektury kodu.

Łączenie z prefabami

Nagłe wzrosty czasu renderowania procesora są niemal wyłącznie spowodowane przez tworzenie instancji w trakcie rozgrywki. Rozważ wstępne przygotowanie pul obiektów pod kątem pocisków, pojawiających się wrogów i efektów wizualnych, zanim zaczniesz rozgrywkę. Pozwoli to ograniczyć lub wyeliminować gwałtowne skoki mocy obliczeniowej. Podczas wczytywania lub sekwencji wprowadzenia do sceny możesz rozłożyć dodatkowe optymalizacje na wiele „ramek inicjowania”.

W Unity Asset Store możesz znaleźć wiele zasobów do łączenia zasobów innych firm związanych z zarządzaniem pulą obiektów w grze. Możesz również tworzyć własne. Zobacz Wprowadzenie do puli obiektów w Unity Learn (w języku angielskim).

Dostawa zasobów

Wielkość aplikacji w momencie jej pierwszego wdrożenia w Google Play jest ograniczona. W zależności od rozmiaru i charakteru gry możesz potrzebować niektórych lub wszystkich zasobów gry (modeli postaci, środowisk, elementów interfejsu itd.), aby zapewnić graczom oczekiwane wrażenia.

Możesz użyć usługi Play Asset Delivery (PAD), aby zarządzać zasobami wymaganymi przez Twoją grę w momencie instalacji, po krótkim czasie lub na żądanie. Pakiety zasobów Unity są zintegrowane, by obsługiwać PAD. Za pomocą narzędzia możesz określać, które elementy mają być dostarczane.

Adresaci

Konfigurowanie zasobów dynamicznych, takich jak prefabryki, tekstury i pliki dźwiękowe, w czasie działania nie jest już skomplikowaną operacją, jeśli przygotujesz i sprawdzisz system nazewnictwa Adresów. Adresowalne zasoby oddzielają uporządkowanie 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 wczytywania ich w czasie działania.

Przykład znajdziesz w artykule o projekcie demonstracyjnym wykorzystującym pakiet Addressables w GitHubie. Informacje o rozwoju funkcji Addressable znajdziesz w artykule na temat Addressable Asset System na blogu Unity.

W przypadku układu zasobów z możliwością adresowania łączenie zbyt małej lub zbyt wielu zasobów we wspólne grupy ma swoje wady i zalety. Więcej informacji o zarządzaniu treścią za pomocą funkcji Addressable znajdziesz w artykule Uproszczenie zarządzania treścią za pomocą funkcji Addressable.

Możesz skonfigurować samodzielną wersję demonstracyjną i poeksperymentować z trybami dostępu, aby zapoznać się z systemem Adresów. Możesz też wyświetlić projekt open source BuildLayout Explorer dla Unity 2019.3 lub nowszej wersji oraz sprawdzić raport buildlayout.txt wygenerowany przez Addressables.

Zasoby dla Chop Chop, Unity Open Project, zostały spakowane przy użyciu systemu Addressables do całego ładowania i wyładowywania. W sekcji Pakowanie treści za pomocą zasobów adresowych | Open Projects Devlog znajdziesz informacje o strukturze i konfiguracji pakietów adresowych.

W projekcie Chop Chop jedyna scena ładowana domyślnie, czyli scena inicjowania, została skonfigurowana tak, aby używała obiektu AssetReferences, a nie bezpośrednich linków do zasobów w projekcie (scen, gotowych ustawień itp.).

Kod źródłowy projektu Unity Open Project: Chop Chop jest dostępny na GitHubie. Chociaż projekt nie jest już w fazie rozwoju, repozytorium i dokumentacja Git są wciąż dostępne.

Wtyczki innych firm

Jeśli korzystasz z wtyczek innych firm, takich jak te dostępne w Unity Asset Store, sprawdź foldery i usuń zbędne zasoby z folderów Resources (Zasoby). Podczas kompilacji Unity gromadzi wszystkie zasoby znajdujące się w folderach Resources i pakuje je w pojedynczy pakiet, który jest dostępny w czasie działania. Może to spowodować zwietrzenie ostatecznego pakietu i często nie jest potrzebne.

Aby szybko znaleźć wszystkie foldery zasobów, wyszukaj Resources (Zasoby) w panelu Projekt. Następnie możesz wybrać każdą z nich, aby określić, co zawiera i czy jest niezbędne w Twojej grze.

Rysunek 7. W folderach pobranych z Unity Asset Store może się znajdować wiele folderów Resources. Wyczyść je, aby uniknąć spakowania w pakiecie aplikacji.

Publikowanie i utrzymywanie

Gdy przygotujesz się do premiery gry mobilnej, zdecyduj, komu chcesz ją udostępnić, jak przeprowadzić testy alfa i beta oraz jak monitorować i śledzić jej wydajność po jej premierze.

Analizowanie opinii na temat wersji limitowanej

Możesz udostępnić grę ograniczonej grupie odbiorców i przeprowadzić testy beta na większą skalę lub aktywować grę do pełnej dostępności na wszystkich rynkach. W przypadku wersji limitowanej możesz dostosować wydajność aplikacji w zależności od szerszej grupy odbiorców i kolekcji urządzeń.

Możesz na przykład użyć narzędzia Android Performance Tuner dla Unity i Google Analytics dla Unity, aby uzyskać statystyki dotyczące wydajności aplikacji i trendów w działaniu graczy, na podstawie których Twój zespół programistów może dostosowywać i publikować aktualizacje. Danych analitycznych możesz też używać do planowania kontynuacji lub powiązanych gier z podobnym gatunku.

Testy alfa i beta

Po skonfigurowaniu profilu aplikacji w Konsoli Google Play możesz przygotować publiczne kompilacje do testów alfa i beta, a następnie udostępnić je ograniczonej liczbie odbiorców do sprawdzenia przed opublikowaniem. Udostępniając aplikację ograniczonej grupie odbiorców, możesz poznać końcowe problemy z większą pulą urządzeń i zebrać wstępne opinie, na które możesz odpowiedzieć, zanim opublikujesz wersję globalną.

Twoje kompilacje na Unity są dystrybuowane za pomocą pakietów Android App Bundle. Więcej informacji znajdziesz w instrukcji: dostarczanie do Google Play na stronie Unity, w której znajdziesz też opis zmian w plikach APK w formacie pakietu AAB.

Monitorowanie i monitorowanie

Na etapie testowania i dystrybucji gry możesz korzystać z Androida Vitals, aby wykrywać problemy z wydajnością na urządzeniach, do których mogło Ci się nie udać podczas projektowania i testowania. Więcej informacji znajdziesz w artykule Co nowego w grach w narzędziu Zasięg i urządzenia oraz Android Vitals.

Często duże zespoły programistów mają unikalne i niestandardowe potoki telemetryczne gier, które dostarczają wskaźniki związane z wydajnością urządzenia. Pamiętaj, aby korzystać z Android Performance Tuner (APT) i odpowiedniej wtyczki Unity do obsługi danych połączeń telefonicznych związanych z liczbą klatek, jakością grafiki, czasem wczytywania i porzuceniami podczas wczytywania. Postępuj zgodnie ze szczegółowym przewodnikiem w artykule Integracja narzędzia Android Performance Tuner z grą na Unity.

Cykl życia gry nie kończy się po opublikowaniu. Monitorowanie wydajności i opinii oraz reagowanie na nie mają kluczowe znaczenie dla zadowolenia użytkowników, pozytywnych opinii i wprowadzenia gry na wszystkich rynkach.