Krótka odpowiedź: który silnik wybrać?
Wybierz Defold, jeśli gra jest 2D albo w lekkim 3D, musi szybko się ładować w przeglądarce, w reklamie playable albo na platformie komunikatora i ma płynnie działać na tanich telefonach z Androidem. Wybierz Unity, jeśli gra opiera się na rozbudowanym 3D, wymaga SDK lub pakietu z Asset Store dostępnego tylko dla Unity albo będzie rozwijana przez zespół, który już pracuje w C# i Unity. Oba silniki publikują na web, iOS i Androida, więc prawdziwe pytanie brzmi: jakie kompromisy jest w stanie przyjąć Twój projekt.
Pracuję z silnikami gier od ponad 13 lat, a w Codeward Defold jest naszym głównym silnikiem, choć nadal wspieramy wybrane projekty w Unity. To porównanie jest napisane z tej praktycznej perspektywy: ile każdy silnik kosztuje Cię w rozmiarze gry, wydajności, ryzyku licencyjnym i czasie zespołu.
Rozmiar buildu i czas ładowania w przeglądarce
W grach webowych rozmiar to nie szczegół techniczny. Każdy dodatkowy megabajt oznacza więcej graczy, którzy zamkną kartę, zanim zobaczą pierwszy ekran, zwłaszcza na danych komórkowych. Portale z grami, sieci reklamowe i platformy takie jak Facebook Instant Games mają własne limity i zalecenia dotyczące rozmiaru i czasu startu.
- Defold. Silnik jest mały z założenia. Zespół Defold publikuje publiczny wykres rozmiaru buildów dla każdej wersji i platformy. W wersji 1.13.2 zoptymalizowany silnik webowy (WebAssembly) waży około 2,4 MB przed kompresją, a pomiary pustego projektu na forum Defold pokazują pobranie rzędu 1 MB po kompresji na serwerze. Nieużywane moduły można wyłączyć w app manifeście, co jeszcze zmniejsza build.
- Unity. Unity eksportuje gry do przeglądarki (WebGL, w Unity 6 platforma Web), a nowsze wersje poprawiły obsługę przeglądarek mobilnych. Bazowy runtime jest jednak większy i build webowy z Unity zwykle wymaga więcej pracy (usuwanie nieużywanego kodu, kompresja, asset bundles), żeby osiągnąć czas startu porównywalny z małym buildem z Defolda.
Grafika i dźwięk zwykle ważą więcej niż sam silnik. W obu silnikach o końcowym rozmiarze decydują kompresja tekstur, atlasy, formaty audio i ładowanie treści etapami. Więcej piszę o tym w poradniku Defold do gier HTML5.
Wydajność na słabszych telefonach
Wielu graczy korzysta z budżetowych telefonów z Androidem, z małą ilością pamięci i słabym GPU. Gra, która działa świetnie na flagowym telefonie programisty, może przycinać, grzać telefon albo się wysypywać na urządzeniach, których naprawdę używają Twoi gracze.
- Defold ma lekki runtime napisany w C++, a logikę gry pisze się w Lua. Małe zużycie pamięci i prosty pipeline renderowania pomagają grom 2D utrzymać stabilną liczbę klatek na starszych urządzeniach i w przeglądarkach mobilnych.
- Unity też może działać dobrze na słabszych telefonach, co pokazuje wiele udanych gier mobilnych. Zwykle wymaga to jednak świadomej pracy: wyboru odpowiedniego pipeline’u renderowania, ograniczania skoków garbage collectora w kodzie C# i pilnowania rozmiaru buildu.
W obu silnikach testuj wcześnie na prawdziwych urządzeniach docelowych. Problemy z wydajnością znalezione w ostatnim tygodniu przed premierą są najdroższe.
2D czy 3D?
- Gry 2D. Defold powstał z myślą o 2D: sprite’y, atlasy, mapy kafelkowe, GUI, cząsteczki i animacje Spine to podstawowe funkcje silnika. Gry logiczne, casualowe, hyper-casualowe, karciane, idle i zręcznościowe pasują do niego naturalnie.
- Gry 3D. Defold obsługuje modele 3D, kamery i własne shadery, co wystarcza do stylizowanego lub lekkiego 3D. Unity ma znacznie większy zestaw narzędzi 3D: zaawansowane oświetlenie, teren, narzędzia do animacji, efekty wizualne i ogromny ekosystem assetów. Przy grze mocno opartej na 3D Unity (albo inny silnik nastawiony na 3D) jest zwykle lepszym wyborem.
Licencja i ceny: co zmieniło się w Unity
We wrześniu 2023 roku Unity ogłosiło Runtime Fee, czyli opłatę za każdą instalację gry po przekroczeniu określonych progów przychodu i liczby instalacji. Społeczność twórców zareagowała bardzo ostro, bo opłata miała objąć także gry już tworzone, a koszty stałyby się trudne do przewidzenia. Unity zmieniło plan w ciągu kilku tygodni, ale zaufanie zostało nadszarpnięte.
12 września 2024 roku Unity wycofało Runtime Fee dla gier i wróciło do subskrypcji za stanowisko. Według ogłoszenia Unity:
- Unity Personal pozostaje darmowe dla firm z rocznym przychodem i finansowaniem do 200 000 USD (próg podniesiono ze 100 000 USD wraz z Unity 6), a ekran „Made with Unity” stał się opcjonalny w grach tworzonych w Unity 6 Personal.
- Unity Pro podrożało o 8% do 2200 USD za stanowisko rocznie od 1 stycznia 2025 roku i jest wymagane powyżej 200 000 USD rocznego przychodu i finansowania.
- Unity Enterprise podrożało o 25% i jest wymagane powyżej 25 mln USD.
Dla większości małych studiów i marek te ceny znów są przewidywalne. Lekcja z 2023 roku jest jednak nadal aktualna: przy komercyjnym silniku dostawca może zmienić warunki, więc przed każdym nowym projektem sprawdź aktualny cennik.
Defold jest darmowy, bez tantiem, opłat za stanowisko i opłat za instalacje. Kod źródłowy jest dostępny na GitHubie na licencji Defold License, opartej na Apache 2.0. Silnik powstał w King, a od 2020 roku rozwija go niezależna fundacja non-profit Defold Foundation, finansowana przez partnerów i darowizny społeczności.
Praca na co dzień: języki i narzędzia
Codzienna praca jest równie ważna jak runtime, bo od niej zależy, jak szybko zespół wprowadza zmiany i testuje pomysły.
- Języki. Unity używa C#, popularnego języka z silnym typowaniem i świetnym wsparciem w IDE. W Defoldzie logikę gry pisze się w Lua, małym języku skryptowym, którego łatwo się nauczyć, a gdy potrzebny jest kod platformowy albo dodatkowa wydajność, używa się rozszerzeń natywnych w C++.
- Edytor i iteracja. Defold ma zwarty edytor z hot reloadem kodu i assetów w działającej grze, także na podłączonym telefonie. Unity ma znacznie większy edytor z wizualnymi narzędziami do animacji, oświetlenia, timeline’ów i projektowania poziomów.
- Rozszerzenia i SDK. Unity ma Asset Store i SDK od niemal każdego dostawcy reklam, analityki i platform. Defold ma portal z rozszerzeniami oficjalnymi i społecznościowymi do typowych usług, takich jak reklamy, zakupy, Firebase i portale z grami webowymi. Zanim podejmiesz decyzję, sprawdź wymagane SDK dla obu silników.
- Buildy. Defold buduje gry na każdą platformę prosto z edytora, a rozszerzenia natywne kompiluje na serwerze w chmurze, więc nie trzeba instalować osobnego SDK dla każdej platformy. Unity wymaga modułów platformowych i lokalnych narzędzi dla każdej docelowej platformy.
- Aktualizacje silnika. Nowa wersja Defolda wychodzi mniej więcej co miesiąc, a zmiany w projektach między wersjami są niewielkie. Unity wydaje większe wersje, a aktualizacja dużego projektu między głównymi wersjami potrafi wymagać zaplanowanego czasu.
Warto też pamiętać o społeczności. Unity ma ogromną bazę tutoriali, kursów i odpowiedzi na forach. Społeczność Defolda jest mniejsza, ale bardzo aktywna: na forum i Discordzie odpowiadają często sami twórcy silnika, a dokumentacja i przykłady są pisane z myślą o praktycznych problemach gier webowych i mobilnych.
Kiedy lepszy będzie Unity?
- Gry przede wszystkim 3D. Gry oparte na zaawansowanym renderowaniu 3D, fizyce albo dużych scenach 3D.
- SDK dostępne tylko dla Unity. Gdy kluczowe SDK partnera, middleware albo pakiet z Asset Store istnieje tylko dla Unity i nie ma rozsądnej alternatywy.
- Istniejący zespół Unity. Jeśli Twoi programiści znają C# i Unity i będą utrzymywać grę latami, pozostanie przy Unity może być w sumie tańsze.
- XR i specjalistyczne platformy. Unity szeroko wspiera VR, AR i inny specjalistyczny sprzęt.
- Rekrutacja. Na rynku jest wielu programistów Unity, co ma znaczenie, jeśli planujesz budować własny zespół.
Kiedy lepszy będzie Defold?
- Gry webowe i HTML5. Małe buildy i szybkie ładowanie na portalach z grami, stronach kampanii i platformach komunikatorów.
- Playable ads. Sieci reklamowe mają twarde limity rozmiaru, a każda sekunda ładowania obniża konwersję. Zobacz poradnik o playable ads dla gier mobilnych.
- Gry mobilne dla szerokiego grona. Gry casualowe i 2D, które muszą płynnie działać na budżetowych telefonach z Androidem.
- Jeden kod na wiele platform. HTML5, iOS, Android, Windows, macOS, Linux, a dla zarejestrowanych twórców także konsole, z tego samego projektu.
- Przewidywalne koszty. Brak opłat licencyjnych dziś i brak ryzyka opłat za instalacje w przyszłości.
Portowanie gry z Unity do Defolda
Niektóre zespoły mają już grę w Unity i chcą lżejszej wersji webowej, szybszego buildu mobilnego albo niższych kosztów silnika. Port z Unity do Defolda nie jest automatyczną konwersją. Kod C# przepisujemy na Lua, a sceny i interfejs budujemy od nowa w Defoldzie. Większość assetów można wykorzystać ponownie: sprite’y, tekstury, dźwięki, fonty, animacje Spine i często modele 3D.
W Codeward port z Unity do Defolda zwykle wygląda tak:
- Audyt. Przeglądamy projekt Unity, build i listę SDK oraz wskazujemy najbardziej ryzykowne elementy.
- Prototyp. Przenosimy główną pętlę rozgrywki i jeden poziom, a potem mierzymy rozmiar, czas ładowania i liczbę klatek na Twoich urządzeniach docelowych.
- Port. Przenosimy pozostałe funkcje, treści i integracje (reklamy, analitykę, rankingi, zakupy) w kamieniach milowych, z grywalnymi buildami po drodze.
- QA i premiera. Testujemy na docelowych telefonach i przeglądarkach i pomagamy w publikacji na portalach i w sklepach.
Portowanie ma największy sens przy grach 2D i w lekkim 3D, w których liczy się zasięg w przeglądarce, rozmiar albo wydajność na słabszych telefonach. Jeśli Twoja gra to ciężki tytuł 3D, uczciwie powiemy, że lepiej zostać przy Unity i ją zoptymalizować. Więcej przeczytasz w poradniku o portowaniu gry mobilnej do przeglądarki. Możesz też wysłać nam opis swojego projektu w Unity do bezpłatnej wstępnej oceny.
Jak podjąć decyzję dla swojego projektu?
Zanim wybierzesz silnik, odpowiedz na te pytania:
- Gdzie gracze otworzą grę: w przeglądarce, w reklamie, w sklepie z aplikacjami, na Steamie?
- Jaki rozmiar i czas ładowania akceptuje platforma albo kampania?
- Czy gra jest w 2D, w lekkim 3D czy mocno oparta na 3D?
- Jakie SDK i usługi trzeba zintegrować?
- Kto będzie utrzymywał grę po premierze i w jakim języku pracuje ten zespół?
- Jaki jest budżet na licencje silnika przez cały okres życia gry?
Jeśli odpowiedzi wskazują na web, mobile, 2D i ciasne limity rozmiaru, Defold najpewniej będzie lepszym wyborem. Jeśli wskazują na rozbudowane 3D, zespół Unity i narzędzia dostępne tylko dla Unity, wybierz Unity. Gdy odpowiedź nie jest oczywista, krótki prototyp w wybranym silniku to najtańszy sposób, żeby się przekonać.