Silniki gier · Defold · Unity · Porównanie

Defold czy Unity do gier webowych i mobilnych

Defold jest zwykle lepszym wyborem do gier webowych i mobilnych w 2D lub lekkim 3D, które muszą szybko się ładować i dobrze działać na tanich telefonach: jest darmowy, ma bardzo mały runtime i z jednego projektu eksportuje grę do HTML5, iOS i Androida. Unity lepiej sprawdzi się w grach mocno opartych na 3D, w projektach zależnych od SDK dostępnych tylko dla Unity i w zespołach, które już pracują w Unity. Odkąd we wrześniu 2024 roku Unity wycofało Runtime Fee, jego cennik znów opiera się na stanowiskach. Porównuję tu rozmiar buildu, czas ładowania, wydajność, 2D i 3D, licencje oraz to, jak przenieść grę z Unity do Defolda.

· Porównanie

Autor:

Read in English →

Dłonie trzymające telefon z grą match-3 obok napisu Unity or Defold for a mobile game?

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:

  1. Audyt. Przeglądamy projekt Unity, build i listę SDK oraz wskazujemy najbardziej ryzykowne elementy.
  2. Prototyp. Przenosimy główną pętlę rozgrywki i jeden poziom, a potem mierzymy rozmiar, czas ładowania i liczbę klatek na Twoich urządzeniach docelowych.
  3. Port. Przenosimy pozostałe funkcje, treści i integracje (reklamy, analitykę, rankingi, zakupy) w kamieniach milowych, z grywalnymi buildami po drodze.
  4. 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:

  1. Gdzie gracze otworzą grę: w przeglądarce, w reklamie, w sklepie z aplikacjami, na Steamie?
  2. Jaki rozmiar i czas ładowania akceptuje platforma albo kampania?
  3. Czy gra jest w 2D, w lekkim 3D czy mocno oparta na 3D?
  4. Jakie SDK i usługi trzeba zintegrować?
  5. Kto będzie utrzymywał grę po premierze i w jakim języku pracuje ten zespół?
  6. 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ć.

FAQ

Pytania o Defold i Unity

Czy Defold jest lepszy od Unity do gier webowych?

W przypadku większości gier webowych 2D i w lekkim 3D tak. Buildy z Defolda są małe i szybko ładują się w przeglądarce, co ma znaczenie na portalach z grami, w playable ads i na danych komórkowych. Unity też eksportuje gry do przeglądarki, ale jego buildy są zwykle większe i wymagają więcej optymalizacji.

Czy Defold jest naprawdę darmowy?

Tak. Defold nie ma opłat licencyjnych, tantiem, opłat za stanowisko ani za instalacje. Kod źródłowy jest dostępny na licencji Defold License, a silnik rozwija fundacja non-profit Defold Foundation.

Czy Unity nadal pobiera Runtime Fee?

Nie. Unity wycofało Runtime Fee dla gier 12 września 2024 roku i wróciło do subskrypcji za stanowisko. Unity Personal jest darmowe do 200 000 USD rocznego przychodu i finansowania, a Unity Pro kosztuje od 1 stycznia 2025 roku 2200 USD za stanowisko rocznie.

Kiedy wybrać Unity zamiast Defolda?

Wybierz Unity do gier mocno opartych na 3D, projektów zależnych od SDK lub pakietów z Asset Store dostępnych tylko dla Unity, projektów XR albo wtedy, gdy Twój zespół już pracuje w Unity i będzie utrzymywał grę.

Czy grę z Unity można przenieść do Defolda?

Tak. Kod przepisujemy na Lua, a sceny budujemy od nowa, ale większość assetów, takich jak sprite’y, dźwięki, fonty i animacje, można wykorzystać ponownie. Codeward zaczyna każdy port od audytu i prototypu, który mierzy rozmiar i wydajność na urządzeniach docelowych.

O autorze

Paweł Jarosz jest programistą gier z Krakowa z ponad 13-letnim doświadczeniem, założycielem studia Codeward oraz Community & Content Managerem w Fundacji Defold. Tworzy gry i dzieli się praktyczną wiedzą na kanale Unfolding Gamedev na YouTube.

Masz grę w Unity, która jest za ciężka na web?

Codeward to studio tworzenia gier z Krakowa, którego główną specjalizacją jest Defold. Portujemy gry z Unity do Defolda, żeby uzyskać szybsze buildy HTML5 i mobilne, tworzymy nowe gry webowe i mobilne oraz playable ads i uczciwie doradzamy, kiedy lepszy będzie Unity. Wyślij krótki opis projektu. Odpowiemy najszybciej, jak to możliwe.

Co warto nam wysłać?

  • Link do gry albo aktualny build.
  • Docelowe platformy i limity rozmiaru lub czasu ładowania.
  • SDK i usługi, z których korzysta gra.
  • Termin i widełki budżetu.