A: Tak, silnik Defold i edytor z pełną funkcjonalnością są całkowicie bezpłatne. Bez ukrytych kosztów, opłat ani tantiem. Po prostu za darmo.
A: Jednym z celów Defold Foundation jest zapewnienie, że oprogramowanie Defold będzie dostępne dla deweloperów na całym świecie, a kod źródłowy będzie dostępny bezpłatnie.
A: Jesteśmy mocno zaangażowani w Defold. Defold Foundation została powołana tak, by przez wiele kolejnych lat pozostać odpowiedzialnym właścicielem Defold. To się nie skończy.
A: Zdecydowanie. Defold jest używany przez coraz większą liczbę profesjonalnych twórców gier i studiów. Zobacz galerię gier, aby znaleźć przykłady gier stworzonych w Defold.
A: Rejestrujemy anonimowe dane użycia z naszych stron internetowych i edytora Defold, aby ulepszać nasze usługi i produkt. W grach, które tworzysz, nie ma śledzenia użytkowników, chyba że sam dodasz usługę analityczną. Więcej informacji znajdziesz w naszej Polityce prywatności.
A: Defold został stworzony przez Ragnara Svenssona i Christiana Murraya. Zaczęli pracować nad silnikiem, edytorem i serwerami w 2009 roku. W 2013 roku King i Defold rozpoczęły współpracę, a w 2014 roku King przejął Defold. Przeczytaj pełną historię tutaj.
A: Oczywiście! Silnik jest pełnoprawnym silnikiem 3D. Zestaw narzędzi jest jednak przygotowany głównie pod 2D, więc wiele rzeczy trzeba będzie zrobić samodzielnie. Lepsze wsparcie 3D jest planowane.
A: Logika gry w projekcie Defold jest przede wszystkim pisana w języku Lua, konkretnie Lua 5.1/LuaJIT. Szczegóły znajdziesz w podręczniku Lua. Lua to lekki, dynamiczny język, który jest szybki i bardzo wydajny. Defold obsługuje użycie transpilerów generujących kod Lua. Po zainstalowaniu rozszerzenia do transpilacji możesz używać alternatywnych języków, takich jak Teal, do pisania statycznie sprawdzanego Lua. Możesz też używać kodu natywnego (C/C++, Objective-C, Java i JavaScript w zależności od platformy), aby rozszerzać silnik Defold o nową funkcjonalność. Przy tworzeniu własnych materiałów używany jest język shaderów OpenGL ES SL do pisania shaderów.
A: Obsługa C++ w Defold służy głównie do pisania rozszerzeń natywnych, które integrują się z SDK innych firm lub platformowymi API. dmSDK (API C++ dla Defold używane w rozszerzeniach natywnych) będzie stopniowo rozbudowywane o kolejne funkcje, tak aby w przyszłości dało się pisać całą logikę gry w C++, jeśli deweloper będzie tego chciał. Lua pozostanie głównym językiem do logiki gry, ale dzięki rozbudowanemu API C++ będzie można pisać logikę gry także w C++. Prace nad rozbudową API C++ polegają głównie na przenoszeniu istniejących prywatnych plików nagłówkowych do sekcji publicznej i porządkowaniu API do publicznego użytku.
A: TypeScript nie jest oficjalnie obsługiwany. Społeczność utrzymuje zestaw narzędzi ts-defold do pisania w TypeScript i transpilowania go do Lua bezpośrednio z VSCode.
A: Haxe nie jest oficjalnie obsługiwany. Społeczność utrzymuje hxdefold do pisania w Haxe i transpilowania go do Lua.
A: Defold Foundation dodała obsługę C# i udostępniła ją jako zależność biblioteczną. C# to szeroko stosowany język programowania i pomoże studiom oraz deweloperom mocno związanym z C# przejść na Defold.
A: Defold NIE odchodzi od Lua jako głównego języka skryptowego. Obsługa C# jest dodana jako nowy język dla rozszerzeń natywnych. Nie wpłynie to na silnik, chyba że zdecydujesz się używać rozszerzeń C# w swoim projekcie.
Obsługa C# będzie miała swoją cenę, na przykład większy rozmiar pliku wykonywalnego czy wpływ na wydajność w czasie działania, ale to już decyzja konkretnego dewelopera lub studia.
Samo wsparcie dla C# to stosunkowo niewielka zmiana, ponieważ system rozszerzeń już obsługuje wiele języków (C/C++, Java, Objective-C, Zig). Generowane wiązania C# pozwolą utrzymać SDK w synchronizacji. Dzięki temu te wiązania pozostaną aktualne przy minimalnym nakładzie pracy.
Defold Foundation wcześniej była przeciwna dodaniu obsługi C# w Defold, ale zmieniła zdanie z kilku powodów:
A: Następujące platformy są obsługiwane przez edytor i narzędzia oraz przez środowisko uruchomieniowe silnika:
| System | Wersja | Architektury | Obsługiwane |
|---|---|---|---|
| macOS | 11 Big Sur | x86-64, arm-64 |
Edytor i silnik |
| Windows | Vista | x86-32, x86-64 |
Edytor i silnik |
| Ubuntu (1) | 22.04 LTS | x86-64 |
Edytor |
| Linux (2) | Dowolna | x86-64, arm-64 |
Silnik |
| iOS | 15.0 | arm-64 x86_64 |
Silnik |
| Android | 5.0 (API level 21) | arm-32, arm-64 |
Silnik |
| HTML5 | asm.js, wasm |
Silnik |
(1 Edytor jest budowany i testowany dla 64-bitowego Ubuntu. Powinien też działać na innych dystrybucjach, ale nie dajemy żadnych gwarancji.)
(2 Środowisko uruchomieniowe silnika powinno działać na większości 64-bitowych dystrybucji Linuksa, o ile sterowniki graficzne są aktualne. Więcej informacji znajdziesz poniżej, w sekcji o API graficznych.)
A: Jednym kliknięciem możesz publikować na PS4™, PS5™, Nintendo Switch, iOS (64-bit), Android (32-bit i 64-bit) oraz HTML5, a także na macOS (x86-64 i arm64), Windows (32-bit i 64-bit) i Linux (x86-64 i arm64). To naprawdę jedna baza kodu i wiele obsługiwanych platform.
A: Jako deweloper pracujesz tylko z jednym API renderowania, korzystając z w pełni skryptowalnego potoku renderowania. Skrypt renderowania Defold tłumaczy operacje renderowania na następujące API graficzne:
| System operacyjny | API graficzne | Uwagi |
|---|---|---|
| macOS | OpenGL 3.3 lub Metal | Vulkan przez MoltenVK |
| Windows | OpenGL 3.3 lub Vulkan 1.1 | |
| Linux | OpenGL 3.3 lub Vulkan 1.1 | |
| Android | OpenGLES 3.0 lub Vulkan 1.1 | Awaryjnie OpenGLES 2.0 |
| iOS | OpenGLES 3.0 lub Metal | Vulkan przez MoltenVK |
| HTML5 | WebGL 2.0 lub WebGPU | Awaryjnie WebGL 1.0 |
A: Tak, wybierz opcję About w menu Help. Okno wyraźnie pokazuje wersję beta Defold i, co ważniejsze, konkretny SHA1 wydania. Aby odczytać wersję środowiska uruchomieniowego, użyj sys.get_engine_info().
Najnowszą wersję beta dostępną do pobrania z http://d.defold.com/beta można sprawdzić, otwierając http://d.defold.com/beta/info.json. Ten sam plik istnieje także dla wersji stabilnych: http://d.defold.com/stable/info.json.
A: Tak, zobacz sys.get_sys_info().
O: Edytor będzie używał do 75% dostępnej pamięci systemu. Na komputerze z 4 GB RAM powinno to wystarczyć dla mniejszych projektów Defold. W przypadku projektów średniej wielkości lub dużych zaleca się 6 GB RAM lub więcej.
O: Tak. Wersja beta edytora Defold sprawdza dostępność aktualizacji przy uruchomieniu, tak samo jak wersja stabilna.
java.awt.AWTError: Assistive Technology not found?
O: Ten błąd jest związany z problemami z technologią wspomagającą Java, taką jak czytnik ekranu NVDA. Prawdopodobnie masz plik .accessibility.properties w katalogu domowym. Usuń ten plik i spróbuj uruchomić edytor ponownie. (Uwaga: jeśli korzystasz z technologii wspomagającej i potrzebujesz, aby ten plik był obecny, skontaktuj się z nami pod adresem info@defold.se, aby omówić alternatywne rozwiązania).
Omówiono to tutaj na forum Defold.
sun.security.validator.ValidatorException: PKIX path building failed?
O: Ten wyjątek występuje, gdy edytor próbuje nawiązać połączenie https, ale łańcuch certyfikatów dostarczony przez serwer nie może zostać zweryfikowany.
Szczegóły tego błędu znajdziesz pod tym linkiem.
java.lang.OutOfMemoryError: Java heap space?
O: Edytor Defold jest zbudowany w Javie i w niektórych przypadkach domyślna konfiguracja pamięci Javy może nie wystarczyć. Jeśli tak się stanie, możesz ręcznie skonfigurować edytor tak, aby przydzielał więcej pamięci, edytując plik konfiguracyjny edytora. Plik konfiguracyjny o nazwie config znajduje się w folderze Defold.app/Contents/Resources/ na macOS. Na Windows znajduje się obok pliku wykonywalnego Defold.exe, a na Linux obok pliku wykonywalnego Defold. Otwórz plik config i dodaj -Xmx6gb do linii zaczynającej się od vmargs. Dodanie -Xmx6gb ustawi maksymalny rozmiar sterty na 6 gigabajtów (domyślnie zwykle jest to 4Gb). Powinno to wyglądać mniej więcej tak:
vmargs = -Xmx6gb,-Dfile.encoding=UTF-8,-Djna.nosys=true,-Ddefold.launcherpath=${bootstrap.launcherpath},-Ddefold.resourcespath=${bootstrap.resourcespath},-Ddefold.version=${build.version},-Ddefold.editor.sha1=${build.editor_sha1},-Ddefold.engine.sha1=${build.engine_sha1},-Ddefold.buildtime=${build.time},-Ddefold.channel=${build.channel},-Ddefold.archive.domain=${build.archive_domain},-Djava.net.preferIPv4Stack=true,-Dsun.net.client.defaultConnectTimeout=30000,-Dsun.net.client.defaultReadTimeout=30000,-Djogl.texture.notexrect=true,-Dglass.accessible.force=false,--illegal-access=warn,--add-opens=java.base/java.lang=ALL-UNNAMED,--add-opens=java.desktop/sun.awt=ALL-UNNAMED,--add-opens=java.desktop/sun.java2d.opengl=ALL-UNNAMED,--add-opens=java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED
O: Jeśli używasz GNOME, możesz przed uruchomieniem Defold zmienić współczynnik skalowania. źródło
$ gsettings set org.gnome.desktop.interface scaling-factor 2
$ ./Defold
O: Alternatywnym rozwiązaniem, szczególnie gdy chcesz skalować interfejs o ułamek, jest zmodyfikowanie pliku Defold/config i dodanie na linii vmargs parametru glass.gtk.uiScale: źródło
vmargs = -Dglass.gtk.uiScale=1.5,-Dfile.encoding=UTF-8,...
vmargs = -Dglass.gtk.uiScale=175%,-Dfile.encoding=UTF-8,...
vmargs = -Dglass.gtk.uiScale=192dpi,-Dfile.encoding=UTF-8,...
Więcej o tej wartości przeczytasz w artykule wiki Arch Linux HiDPI.
O: Jeśli używasz KDE, możesz ustawić GDK_SCALE:
$ GDK_SCALE=2 ./Defold
O: Uruchom edytor w ten sposób:
$ GTK_CSD=0 ./Defold
com.jogamp.opengl
O: W niektórych dystrybucjach, na przykład Ubuntu 18, występuje problem między wersją jogamp/jogl używaną przez Defold a wersją Mesa zainstalowaną w systemie. Możesz nadpisać wersję GL zgłaszaną przez glGetString(GL_VERSION), ustawiając MESA_GL_VERSION_OVERRIDE na 2.1 albo na większą wartość, ale nie większą niż wersja obsługiwana przez sterownik. Maksymalną wersję OpenGL obsługiwaną przez sterownik możesz sprawdzić za pomocą glxinfo:
glxinfo | grep version
Przykładowy wynik (szukaj wiersza “OpenGL version string: x.y”):
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
Max core profile version: 4.6
Max compat profile version: 4.6
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
OpenGL core profile version string: 4.6 (Core Profile) Mesa 20.2.6
OpenGL core profile shading language version string: 4.60
OpenGL version string: 4.6 (Compatibility Profile) Mesa 20.2.6
OpenGL shading language version string: 4.60
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 20.2.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
GL_EXT_shader_implicit_conversions, GL_EXT_shader_integer_mix,
Użyj wersji 2.1 albo wersji zgodnej z wersją sterownika graficznego:
$ MESA_GL_VERSION_OVERRIDE=2.1 ./Defold
$ MESA_GL_VERSION_OVERRIDE=4.6 ./Defold
com.jogamp.opengl.GLException: Graphics configuration failed” podczas uruchamiania Defold?
O: W niektórych dystrybucjach, na przykład Ubuntu 20.04, występuje problem z nowymi sterownikami Mesa (Iris) podczas uruchamiania Defold. Możesz spróbować uruchomić Defold ze starszą wersją sterownika:
$ MESA_LOADER_DRIVER_OVERRIDE=i965 ./Defold
libffi.so
O: Wersja libffi w twojej dystrybucji i wersja wymagana przez Defold (6 lub 7) nie są zgodne. Upewnij się, że libffi.so.6 albo libffi.so.7 jest zainstalowany w /usr/lib/x86_64-linux-gnu. Możesz pobrać libffi.so.7 w taki sposób:
$ wget http://ftp.br.debian.org/debian/pool/main/libf/libffi/libffi7_3.3-6_amd64.deb
$ sudo dpkg -i libffi7_3.3-6_amd64.deb
Następnie podczas uruchamiania Defold wskaż ścieżkę do tej wersji w zmiennej środowiskowej LD_PRELOAD:
$ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libffi.so.7 ./Defold
O: Tak, może być możliwe korzystanie z Defold po włączeniu renderowania programowego. Możesz je włączyć, ustawiając zmienną środowiskową LIBGL_ALWAYS_SOFTWARE na 1:
$ LIBGL_ALWAYS_SOFTWARE=1 ./Defold
O: Sprawdź wyjście konsoli w edytorze. Jeśli zobaczysz następujący komunikat:
dmengine: error while loading shared libraries: libopenal.so.1: cannot open shared object file: No such file or directory
Musisz zainstalować libopenal1. Nazwa pakietu różni się w zależności od dystrybucji i w niektórych przypadkach może być konieczne zainstalowanie pakietów openal oraz openal-dev lub openal-devel.
$ apt-get install libopenal-dev
O: Najpewniej powoduje to używany menedżer okien, na przykład Qtile lub i3. To znany problem w JavaFX i można go rozwiązać albo przez ustawienie zmiennej środowiskowej GDK_DISPLAY na 1:
$ GDK_DISPLAY=1 ./Defold
D=2
Albo przez zmodyfikowanie pliku Defold/config i dodanie na linii vmargs parametru -Djdk.gtk.version=2:
vmargs = -Djdk.gtk.version=2,-Dfile.encoding=UTF-8,...
O: Jeśli uruchamiasz Defold z Steam przez Flatpak, musisz nadać Steam uprawnienia do dostępu do innych dysków. Możesz zmienić uprawnienia aplikacji Flatpak za pomocą Flatseal lub podobnego narzędzia.
O: Najprawdopodobniej wewnętrzne wywołanie Desktop.getDesktop().browse(new URI(url)); kończy się niepowodzeniem, ponieważ w systemach innych niż GNOME nie wykryto przeglądarki. Spróbuj zainstalować libgnome.
$ apt-get install libgnome
O: Tak, ustaw opcję immersive_mode w sekcji Android w pliku game.project. Dzięki temu aplikacja może przejąć cały ekran i przechwytywać wszystkie zdarzenia dotykowe na ekranie.
O: Android wykrywa, że próbujesz zainstalować aplikację z nowym certyfikatem. Podczas tworzenia pakietów debugowych każda kompilacja jest podpisywana tymczasowym certyfikatem. Przed zainstalowaniem nowej wersji odinstaluj starą aplikację:
$ adb uninstall com.defold.examples
Success
$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
pkg: /data/local/tmp/Defold examples.apk
Success
O: Może się tak zdarzyć, gdy dwa lub więcej rozszerzeń dostarcza szablon manifestu Androida zawierający ten sam tag właściwości, ale z różnymi wartościami. Taka sytuacja miała na przykład miejsce z Firebase i AdMob. Błąd budowania wygląda podobnie do tego:
SEVERE: /tmp/job4531953598647135356/upload/AndroidManifest.xml:32:13-58
Error: Attribute property#android.adservices.AD_SERVICES_CONFIG@resource
value=(@xml/ga_ad_services_config) from AndroidManifest.xml:32:13-58 is also
present at AndroidManifest.xml:92:13-59 value=(@xml/gma_ad_services_config).
Suggestion: add 'tools:replace="android:resource"' to <property> element at
AndroidManifest.xml to override.
Więcej informacji o tym problemie i obejściu znajdziesz w zgłoszonym problemie Defold #9453 oraz w problemie Google #327696048.
O: W niektórych przypadkach nie da się uruchomić gry w przeglądarce lokalnie z systemu plików. Uruchamianie z edytora udostępnia grę z lokalnego serwera WWW. Możesz na przykład użyć SimpleHTTPServer w Pythonie:
$ python -m SimpleHTTPServer [port]
O: Zwykle zdarza się to, gdy używasz Windows, tworzysz build i zatwierdzasz go w repozytorium Git. Jeśli konfiguracja końców linii w Git jest nieprawidłowa, Git zmieni końce linii, a więc także rozmiar danych. Postępuj zgodnie z tymi instrukcjami, aby rozwiązać problem: https://docs.github.com/en/free-pro-team@latest/github/using-git/configuring-git-to-handle-line-endings
O: Upewnij się, że w projekcie Defold używasz tego samego identyfikatora bundla, którego użyłeś w projekcie Xcode podczas generowania profilu provisioning dla urządzeń mobilnych.
O: Zobacz Sprawdzanie uprawnień zbudowanej aplikacji:
codesign -d --ent :- /path/to/the.app
O: Zobacz Sprawdzanie uprawnień profilu provisioning:
security cms -D -i /path/to/iOSTeamProfile.mobileprovision
O: Ten błąd może występować na komputerach z kartami graficznymi AMD Radeon. Upewnij się, że masz zaktualizowane sterowniki graficzne.
com.sun.jna.Native.open.class java.lang.Error: Access is denied?
O: Spróbuj uruchomić Defold jako administrator. Kliknij plik wykonywalny Defold prawym przyciskiem myszy i wybierz Run as Administrator.
O: Upewnij się, że sterownik jest zaktualizowany do wersji nie niższej niż 27.20.100.8280. Sprawdź to za pomocą narzędzia Intel Driver Support Assistant. Dodatkowe informacje znajdziesz w tym wpisie na forum.
AWTError: Assistive Technology not found
Jeśli edytor ulega awarii, a w logu pojawia się wpis Caused by: java.awt.AWTError: Assistive Technology not found: com.sun.java.accessibility.AccessBridge, wykonaj następujące kroki:
C:\Users\<username>.accessibility.properties w zwykłym edytorze tekstu (Notatnik też wystarczy)assistive_technologies=com.sun.java.accessibility.AccessBridge
screen_magnifier_present=true
#)O: Będziesz mógł tworzyć pakiety aplikacji z poziomu edytora i narzędzi wiersza poleceń. Informacje o tym, jak testować na sprzęcie PlayStation®4, PlayStation®5 i Nintendo Switch, zostaną Ci udostępnione po uzyskaniu dostępu do odpowiednich platform.
O: Tak, wszystkie standardowe funkcje API Defold są również dostępne na platformach konsolowych. Oprócz standardowej funkcjonalności będziesz też mieć dostęp do kilku funkcji specyficznych dla PlayStation®4, PlayStation®5 i Nintendo Switch, ale zasadniczo kod może pozostać dokładnie taki sam na wielu platformach.
A: Podczas przesyłania aplikacji Apple pokazuje trzy pola wyboru dla trzech poprawnych przypadków użycia IDFA:
Jeśli zaznaczysz opcję 1, recenzent aplikacji będzie szukał reklam w aplikacji. Jeśli twoja gra nie wyświetla reklam, może zostać odrzucona. Sam Defold nie używa identyfikatora reklamowego.
A: Defold obsługuje zakupy w aplikacji oraz różne rozwiązania reklamowe. Sprawdź kategorię Monetization w Asset Portal, aby zobaczyć aktualną listę dostępnych opcji monetyzacji.
A: Proces budowania może w rzadkich przypadkach nie przebudować plików, jeśli wcześniej wystąpiły błędy budowania, które już naprawiłeś. Wymuś pełną przebudowę, wybierając Project > Rebuild And Launch z menu.
A: Tak. Nazywają się kolekcje. Pozwalają tworzyć złożone hierarchie obiektów gry i przechowywać je jako oddzielne elementy składowe, które można instancjonować w edytorze lub w czasie działania programu, przez tworzenie instancji kolekcji. Dla węzłów GUI dostępne są szablony GUI.
A: Najprawdopodobniej próbujesz dodać obiekt podrzędny w pliku obiektu gry, a to nie jest możliwe. Jest to możliwe tylko w pliku kolekcji. Aby zrozumieć dlaczego, trzeba pamiętać, że hierarchie rodzic-dziecko są wyłącznie hierarchią transformacji grafu sceny. Obiekt gry, który nie został umieszczony (lub utworzony dynamicznie) w scenie (kolekcji), nie należy do grafu sceny, więc nie może być częścią takiej hierarchii. Możesz sprawdzić id rodzica danego obiektu gry używając go.get_parent().
A: Relacje rodzic-dziecko wyrażają wyłącznie relacje transformacji w grafie sceny i nie należy ich mylić z agregatami obiektów w programowaniu obiektowym. Jeśli skupisz się na danych swojej gry i na tym, jak najlepiej je przekształcać, gdy gra zmienia stan, prawdopodobnie rzadziej będziesz musiał wysyłać wiadomości z danymi stanu do wielu obiektów jednocześnie. Tam, gdzie potrzebujesz hierarchii danych, można je łatwo tworzyć i obsługiwać w Lua.
A: To artefakt wizualny nazywany “edge bleeding”, w którym piksele z krawędzi sąsiednich obrazów w atlasie przenikają do obrazu przypisanego do sprite’a. Rozwiązaniem jest dodanie dodatkowych wierszy i kolumn identycznych pikseli na obrzeżach obrazów atlasu. Na szczęście można to zrobić automatycznie w edytorze atlasu w Defold. Otwórz atlas i ustaw wartość właściwości Extrude Borders na 1.
A: Wbudowany shader sprite’a, używany domyślnie dla wszystkich sprite’ów, ma zdefiniowaną stałą “tint”:
local red = 1
local green = 0.3
local blue = 0.55
local alpha = 1
go.set("#sprite", "tint", vmath.vector4(red, green, blue, alpha))
A: Pozycja Z obiektu gry kontroluje kolejność renderowania. Niższe wartości są rysowane przed wyższymi. W domyślnym skrypcie do renderowania rysowane są obiekty gry o głębokości od -1 do 1, a wszystko poza tym zakresem nie zostanie narysowane. Więcej o skrypcie do renderowania przeczytasz w oficjalnej dokumentacji renderowania. W przypadku węzłów GUI wartość Z jest ignorowana i w ogóle nie wpływa na kolejność renderowania. Zamiast tego węzły są renderowane w kolejności, w jakiej widnieją na liście, oraz zgodnie z hierarchią węzłów podrzędnych i warstwami. Więcej o renderowaniu GUI i optymalizacji wywołań rysowania z użyciem warstw przeczytasz w oficjalnej dokumentacji GUI.
A: Nie. Jedyny efekt dotyczy precyzji. Bufor Z jest logarytmiczny i ma bardzo wysoką rozdzielczość wartości Z blisko 0 oraz mniejszą rozdzielczość dalej od 0. Na przykład przy 24-bitowym buforze wartości 10.0 i 10.000005 można odróżnić, natomiast 10000 i 10005 już nie.
A: W rzeczywistości istnieje spójność. Kąty są wszędzie w edytorze i w API gry wyrażane w stopniach. Biblioteki matematyczne używają radianów. Obecnie wyjątek stanowi właściwość fizyki angular_velocity, która jest wyrażana w radianach/s. To ma się zmienić.
A: To po prostu pokolorowany prostokątny kształt. Trzeba jednak pamiętać, że nadal będzie kosztować wypełnianie.
A: Wszystkie zasoby są wewnętrznie objęte zliczaniem referencji. Gdy tylko licznik referencji spadnie do zera, zasób zostaje zwolniony.
A: W Defold wszystko jest oparte na komponentach. Można utworzyć pusty obiekt gry z wieloma dźwiękami i odtwarzać je, wysyłając wiadomości do obiektu sterującego dźwiękiem.
A: Zasadniczo wszystkie zasoby są deklarowane statycznie, dzięki czemu zarządzanie nimi dostajesz za darmo. Możesz użyć właściwości zasobów, aby zmienić zasób przypisany do komponentu.
A: Tak, sprawdź funkcji API fizyki, w szczególności physics.get_shape() i physics.set_shape().
A: Tak, ustaw flagę physics.debug w game.project. (Zobacz oficjalną dokumentację ustawień projektu)
A: Defold uruchamia w tle zmodyfikowaną wersję Box2D, więc koszt wydajnościowy powinien być bardzo podobny. Zawsze możesz sprawdzić, ile czasu silnik spędza na fizyce, otwierając profiler. Powinieneś też wziąć pod uwagę, jakiego rodzaju obiekty kolizji używasz. Na przykład obiekty statyczne są tańsze wydajnościowo. Zobacz oficjalną dokumentację fizyki w Defold, aby uzyskać więcej szczegółów.
A: To zależy od tego, czy są odtwarzane, czy nie. Nieodtwarzany ParticleFX nie ma kosztu wydajnościowego. Wpływ odtwarzanego ParticleFX trzeba ocenić za pomocą profilera, ponieważ zależy od jego konfiguracji. Jak w większości innych przypadków pamięć jest przydzielana z góry dla liczby komponentów ParticleFX zdefiniowanej jako max_count w game.project.
A: Każda kolekcja załadowana przez pełnomocnika kolekcji ma własny stos wejścia. Wejście jest kierowane ze stosu wejścia głównej kolekcji przez komponent pełnomocnika kolekcji do obiektów w kolekcji. Oznacza to, że nie wystarczy, aby obiekt gry w załadowanej kolekcji przejął skupienie wejścia. Obiekt gry, który zawiera komponent pełnomocnika kolekcji, również musi przejąć skupienie wejścia. Zobacz dokumentację wejścia, aby uzyskać szczegóły.
A: Nie. Defold obsługuje właściwości typu hash. Można ich używać do oznaczania typów, identyfikatorów stanu lub dowolnych kluczy. Hashe można też wykorzystywać do przechowywania identyfikatorów obiektów gry (ścieżek), choć często lepsze są właściwości url, ponieważ edytor automatycznie wypełnia listę rozwijaną odpowiednimi adresami URL. Zobacz dokumentację właściwości skryptowych, aby uzyskać szczegóły.
vmath.matrix4() lub podobnej)?
A: Dostęp do komórek uzyskujesz przez mymatrix.m11, mymatrix.m12, mymatrix.m21 itd.
Not enough resources to clone the node podczas używania gui.clone() lub gui.clone_tree()
A: Zwiększ wartość Max Nodes komponentu GUI. Znajdziesz ją w panelu Properties, gdy zaznaczysz korzeń komponentu w Outline.
A: Oczywiście! Mamy do tego specjalną kategorię “Work for hire”. Zawsze wspieramy wszystko, co służy społeczności, a oferowanie swoich usług społeczności, za wynagrodzeniem lub bez, jest tego dobrym przykładem.
A: Aby ograniczyć podbijanie wątków z kategorii “Work for hire”, nie możesz pisać w swoim własnym wątku częściej niż raz na 14 dni, chyba że jest to bezpośrednia odpowiedź na komentarz w wątku, wtedy możesz odpowiedzieć. Jeśli chcesz dodać dodatkową pracę do wątku w ciągu 14 dni, musisz edytować istniejące posty i dopisać do nich nową treść.
A: Jasne, śmiało! Można jej używać zarówno do ofert, jak i do próśb o współpracę, na przykład: „Programista szuka grafika 2D specjalizującego się w pixel arcie. Mam pieniądze i dobrze zapłacę”.