A: Ja, die Defold-Engine und der Editor sind mit ihrem gesamten Funktionsumfang völlig kostenlos. Keine versteckten Kosten, Gebühren oder Lizenzgebühren. Einfach kostenlos.
A: Eines der Ziele der Defold Foundation ist es, sicherzustellen, dass die Defold-Software Entwicklerinnen und Entwicklern weltweit zur Verfügung steht und der Quellcode kostenlos verfügbar ist.
A: Wir setzen uns mit voller Überzeugung für Defold ein. Die Defold Foundation wurde so aufgebaut, dass sie garantiert noch viele Jahre als verantwortliche Eigentümerin von Defold bestehen wird. Sie wird nicht verschwinden.
A: Auf jeden Fall. Defold wird von immer mehr professionellen Spieleentwicklern und Spielestudios verwendet. In der Spielegalerie findest du Beispiele für Spiele, die mit Defold erstellt wurden.
A: Wir protokollieren anonyme Nutzungsdaten unserer Websites und des Defold-Editors, um unsere Dienste und unser Produkt zu verbessern. In den Spielen, die du erstellst, findet kein Nutzertracking statt (es sei denn, du fügst selbst einen Analysedienst hinzu). Mehr dazu erfährst du in unserer Datenschutzerklärung.
A: Defold wurde von Ragnar Svensson und Christian Murray entwickelt. Sie begannen 2009 mit der Arbeit an der Engine, dem Editor und den Servern. King und Defold gingen 2013 eine Partnerschaft ein, und 2014 übernahm King Defold. Die vollständige Geschichte kannst du hier nachlesen.
A: Auf jeden Fall! Die Engine ist eine vollwertige 3D-Engine. Die Werkzeuge sind allerdings für 2D ausgelegt, weshalb du vieles selbst erledigen musst. Eine bessere 3D-Unterstützung ist geplant.
A: Die Spiellogik in deinem Defold-Projekt wird hauptsächlich in Lua geschrieben (genauer gesagt Lua 5.1/LuaJIT; Einzelheiten findest du im Lua-Handbuch). Lua ist eine schlanke dynamische Sprache, die schnell und sehr leistungsfähig ist. Defold unterstützt Transpiler, die Lua-Code erzeugen. Wenn eine Transpiler-Erweiterung installiert ist, kannst du alternative Sprachen wie Teal verwenden, um statisch geprüftes Lua zu schreiben. Du kannst auch nativen Code verwenden (je nach Plattform C/C++, Objective-C, Java und JavaScript), um die Defold-Engine um neue Funktionen zu erweitern. Beim Erstellen benutzerdefinierter Materialien werden Vertex- und Fragment-Shader in der Shader-Sprache OpenGL ES SL geschrieben.
A: Die C++-Unterstützung in Defold dient hauptsächlich dazu, native Erweiterungen zu schreiben, die Schnittstellen zu SDKs von Drittanbietern oder plattformspezifischen APIs bereitstellen. Das dmSDK (die C++-API für Defold, die in nativen Erweiterungen verwendet wird) wird schrittweise um weitere Funktionen erweitert, sodass sich auf Wunsch die gesamte Spiellogik in C++ schreiben lässt. Lua bleibt die Hauptsprache für die Spiellogik, aber mit der erweiterten C++-API wird es auch möglich sein, Spiellogik in C++ zu schreiben. Die Erweiterung der C++-API besteht hauptsächlich darin, vorhandene private Headerdateien in den öffentlichen Bereich zu verschieben und APIs für die öffentliche Nutzung zu bereinigen.
A: TypeScript wird nicht offiziell unterstützt. Die Community pflegt die Werkzeugsammlung ts-defold, mit der du TypeScript schreiben und direkt aus VSCode nach Lua transpilieren kannst.
A: Haxe wird nicht offiziell unterstützt. Die Community pflegt hxdefold, mit dem du Haxe schreiben und nach Lua transpilieren kannst.
A: Die Defold Foundation hat C#-Unterstützung hinzugefügt und als Abhängigkeit von einer Bibliothek verfügbar gemacht. C# ist eine weitverbreitete Programmiersprache. Die Unterstützung erleichtert Studios und Entwicklern, die stark auf C# setzen, den Wechsel zu Defold.
Defold wendet sich NICHT von Lua als primärer Skriptsprache ab. C# wird als neue Sprache für Erweiterungen hinzugefügt. Das wirkt sich nur dann auf die Engine aus, wenn du dich dafür entscheidest, C#-Erweiterungen in deinem Projekt zu verwenden.
Die C#-Unterstützung hat ihren Preis (Größe der ausführbaren Datei, Leistung zur Laufzeit usw.), aber diese Entscheidung liegt beim jeweiligen Entwickler oder Studio.
Was C# selbst betrifft, handelt es sich um eine relativ kleine Änderung, da das Erweiterungssystem bereits viele Sprachen unterstützt (C/C++/Java/Objective-C/Zig). Die SDKs werden durch das Generieren der C#-Anbindungen synchron gehalten. So bleiben die Anbindungen mit minimalem Aufwand aktuell.
Die Defold Foundation war zuvor gegen die Aufnahme von C#-Unterstützung in Defold, hat ihre Meinung aber aus mehreren Gründen geändert:
A: Die folgenden Plattformen werden unterstützt:
Editor und Werkzeuge
| System | Version | Architekturen |
|---|---|---|
| macOS | 11 Big Sur | x86-64, arm-64 |
| Windows | 10 | x86-64 |
| Ubuntu (1) | 22.04 LTS | x86-64 |
(1 Der Editor wird für 64-Bit-Ubuntu erstellt und getestet. Er sollte auch auf anderen Distributionen funktionieren, aber dafür geben wir keine Garantie.)
Laufzeitumgebung der Engine
| System | Version | Architekturen |
|---|---|---|
| macOS | 11 Big Sur | x86-64, arm-64 |
| Windows | Vista | x86-64 |
| Linux (2) | Beliebig | x86-64, arm-64 |
| iOS | 15.0 | arm-64 |
| Android | 5.0 (API-Level 21) | arm-32, arm-64, x86-64 |
| HTML5 | wasm-web, wasm_pthread-web |
(2 Die Laufzeitumgebung der Engine sollte auf den meisten 64-Bit-Linux-Distributionen laufen, solange die Grafiktreiber aktuell sind. Weitere Informationen zu Grafik-APIs findest du unten.)
A: Mit einem Klick kannst du für PS4™, PS5™, Nintendo Switch, iOS (64-Bit), Android (32-Bit und 64-Bit) und HTML5 sowie macOS (x86-64 und arm64), Windows (64-Bit) und Linux (x86-64 und arm64) veröffentlichen. Es ist tatsächlich eine einzige Codebasis mit Unterstützung für mehrere Plattformen.
A: Bei der Entwicklung musst du dich nur mit einer einzigen Render-API befassen, die eine vollständig skriptgesteuerte Rendering-Pipeline verwendet. Die Render-Skript-API von Defold übersetzt Renderoperationen in die folgenden Grafik-APIs:
| System | Grafik-API | Hinweis |
|---|---|---|
| macOS | Metal, OpenGL 3.3 oder Vulkan | Metal ist seit Defold 1.14.0 der Standard; Vulkan über MoltenVK |
| Windows | OpenGL 3.3 oder Vulkan 1.1 | |
| Linux x86-64 | OpenGL 3.3 oder Vulkan 1.1 | |
| Linux ARM64 | OpenGL ES oder Vulkan 1.1 | EGL/GLES ist der Standard |
| Android | OpenGLES 3.0 oder Vulkan 1.1 | Rückgriff auf OpenGLES 2.0 |
| iOS-Geräte | OpenGLES 3.0, Metal oder Vulkan | OpenGLES ist der Standard; Vulkan über MoltenVK |
| iOS-Simulator | Metal | Seit Defold 1.14.0 immer Metal |
| HTML5 | WebGL 2.0 oder WebGPU | Rückgriff auf WebGL 1.0 |
A: Ja, wähle die Option „About“ im Menü Help. Das Popup zeigt die Defold-Betaversion und vor allem den SHA1-Wert der jeweiligen Veröffentlichung deutlich an. Um die Version zur Laufzeit abzufragen, verwende sys.get_engine_info().
Die neueste Betaversion, die unter http://d.defold.com/beta zum Herunterladen verfügbar ist, kannst du durch Öffnen von http://d.defold.com/beta/info.json ermitteln (dieselbe Datei gibt es auch für stabile Versionen: http://d.defold.com/stable/info.json).
A: Ja, sieh dir sys.get_sys_info() an.
A: Der Editor verwendet bis zu 75 % des verfügbaren Arbeitsspeichers des Systems. Auf einem Computer mit 4 GB RAM sollte dies für kleinere Defold-Projekte ausreichen. Für mittelgroße oder große Projekte werden mindestens 6 GB RAM empfohlen.
A: Ja. Der Defold-Editor in der Betaversion sucht beim Start nach Updates, genau wie die stabile Version von Defold.
java.awt.AWTError: Assistive Technology not found?
A: Dieser Fehler hängt mit Problemen mit assistiven Technologien in Java zusammen, etwa mit dem Screenreader NVDA. Wahrscheinlich befindet sich in deinem Benutzerordner eine Datei namens .accessibility.properties. Entferne die Datei und versuche erneut, den Editor zu starten. (Hinweis: Wenn du assistive Technologien verwendest und diese Datei benötigst, wende dich bitte unter info@defold.se an uns, um alternative Lösungen zu besprechen).
Eine Diskussion dazu findest du hier im Defold-Forum.
sun.security.validator.ValidatorException: PKIX path building failed?
A: Diese Ausnahme tritt auf, wenn der Editor versucht, eine HTTPS-Verbindung herzustellen, die vom Server bereitgestellte Zertifikatskette aber nicht überprüft werden kann.
Weitere Informationen zu diesem Fehler findest du unter diesem Link.
java.lang.OutOfMemoryError: Java heap space?
A: Der Defold-Editor wurde mit Java entwickelt. In manchen Fällen reicht die standardmäßige Speicherkonfiguration von Java möglicherweise nicht aus. In diesem Fall kannst du den Editor manuell so konfigurieren, dass er mehr Speicher reserviert, indem du seine Konfigurationsdatei bearbeitest. Die Konfigurationsdatei heißt config und befindet sich unter macOS im Ordner Defold.app/Contents/Resources/. Unter Windows befindet sie sich neben der ausführbaren Datei Defold.exe und unter Linux neben der ausführbaren Datei Defold. Öffne die Datei config und füge -Xmx6gb zur Zeile hinzu, die mit vmargs beginnt. Mit -Xmx6gb setzt du die maximale Heap-Größe auf 6 Gigabyte (der Standardwert ist normalerweise 4Gb). Das sollte ungefähr so aussehen:
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
A: Wenn du GNOME verwendest, kannst du den Skalierungsfaktor vor dem Start von Defold ändern. Quelle
$ gsettings set org.gnome.desktop.interface scaling-factor 2
$ ./Defold
A: Eine alternative Lösung, insbesondere wenn du um einen nicht ganzzahligen Faktor vergrößern möchtest, besteht darin, die Datei Defold/config zu ändern und in der Zeile vmargs den Eintrag glass.gtk.uiScale hinzuzufügen: Quelle
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,...
Mehr zu diesem Wert findest du im HiDPI-Wiki-Artikel von Arch Linux.
A: Wenn du KDE verwendest, kannst du GDK_SCALE setzen:
$ GDK_SCALE=2 ./Defold
A: Starte den Editor wie folgt:
$ GTK_CSD=0 ./Defold
com.jogamp.opengl
A: Bei bestimmten Distributionen (wie Ubuntu 18) gibt es ein Problem zwischen der von Defold verwendeten Version von jogamp/jogl und der Version von Mesa auf dem System. Du kannst überschreiben, welche GL-Version beim Aufruf von glGetString(GL_VERSION) gemeldet wird, indem du MESA_GL_VERSION_OVERRIDE auf 2.1 oder einen größeren Wert setzt, der aber kleiner oder gleich der von deinem Treiber unterstützten Version ist. Mit glxinfo kannst du prüfen, welche OpenGL-Version dein Treiber maximal unterstützt:
glxinfo | grep version
Beispielausgabe (suche nach “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,
Verwende Version 2.1 oder die zu deinem Grafiktreiber passende Version:
$ MESA_GL_VERSION_OVERRIDE=2.1 ./Defold
$ MESA_GL_VERSION_OVERRIDE=4.6 ./Defold
com.jogamp.opengl.GLException: Graphics configuration failed”?
A: Bei bestimmten Distributionen (beispielsweise Ubuntu 20.04) gibt es beim Ausführen von Defold ein Problem mit den neuen Mesa-Treibern (Iris). Du kannst versuchen, Defold mit einer älteren Treiberversion auszuführen:
$ MESA_LOADER_DRIVER_OVERRIDE=i965 ./Defold
libffi.so
A: Die libffi-Version deiner Distribution stimmt nicht mit der von Defold benötigten Version (Version 6 oder 7) überein. Stelle sicher, dass libffi.so.6 oder libffi.so.7 unter /usr/lib/x86_64-linux-gnu installiert ist. Du kannst libffi.so.7 wie folgt herunterladen:
$ 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
Gib anschließend beim Ausführen von Defold den Pfad zu dieser Version in der Umgebungsvariablen LD_PRELOAD an:
$ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libffi.so.7 ./Defold
A: Ja, möglicherweise kannst du Defold verwenden, wenn du Software-Rendering aktivierst. Du kannst Software-Rendering aktivieren, indem du die Umgebungsvariable LIBGL_ALWAYS_SOFTWARE auf 1 setzt:
$ LIBGL_ALWAYS_SOFTWARE=1 ./Defold
A: Prüfe die Konsolenausgabe im Editor. Wenn du die folgende Meldung erhältst:
dmengine: error while loading shared libraries: libopenal.so.1: cannot open shared object file: No such file or directory
Dann musst du libopenal1 installieren. Der Paketname unterscheidet sich je nach Distribution, und in manchen Fällen musst du möglicherweise die Pakete openal und openal-dev oder openal-devel installieren.
$ apt-get install libopenal-dev
A: Dies wird wahrscheinlich durch den verwendeten Fenstermanager verursacht (beispielsweise Qtile oder i3). Es handelt sich um ein bekanntes Problem in JavaFX, das sich entweder lösen lässt, indem du die Umgebungsvariable GDK_DISPLAY auf 1 setzt:¨
$ GDK_DISPLAY=1 ./Defold
D=2
Oder indem du die Datei Defold/config änderst und in der Zeile vmargs den Eintrag -Djdk.gtk.version=2 hinzufügst:
vmargs = -Djdk.gtk.version=2,-Dfile.encoding=UTF-8,...
A: Wenn du Defold über Steam als Flatpak ausführst, musst du Steam die Berechtigung erteilen, auf deine anderen Laufwerke zuzugreifen. Du kannst die Berechtigungen deiner Flatpak-Anwendungen mit Flatseal oder einem ähnlichen Werkzeug ändern.
A: Wahrscheinlich schlägt ein interner Aufruf von Desktop.getDesktop().browse(new URI(url)); fehl, da auf Systemen ohne Gnome kein Browser erkannt wird. Versuche, libgnome zu installieren.
$ apt-get install libgnome
A: Ja, aktiviere die Einstellung immersive_mode im Abschnitt Android deiner Datei game.project. Dadurch kann deine App den gesamten Bildschirm nutzen und alle Ereignisse für Berührungseingaben auf dem Bildschirm erfassen.
A: Android erkennt, dass du versuchst, die App mit einem neuen Zertifikat zu installieren. Wenn du Bundles für Debug-Builds erstellst, wird jeder Build mit einem temporären Zertifikat signiert. Deinstalliere die alte App, bevor du die neue Version installierst:
$ 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
A: Das kann passieren, wenn zwei oder mehr Erweiterungen jeweils einen Stub eines Android-Manifests bereitstellen, der dasselbe property-Tag mit unterschiedlichen Werten enthält. Das ist beispielsweise bei Firebase und AdMob aufgetreten. Der Build-Fehler sieht etwa so aus:
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.
Mehr über das Problem und die Übergangslösung erfährst du im gemeldeten Defold-Issue #9453 und im Google-Issue #327696048.
A: In manchen Fällen lässt sich ein Spiel nicht lokal aus dem Dateisystem im Browser ausführen. Wenn du das Spiel aus dem Editor startest, wird es von einem lokalen Webserver bereitgestellt. Du kannst beispielsweise SimpleHTTPServer in Python verwenden:
$ python -m SimpleHTTPServer [port]
A: Das passiert normalerweise, wenn du unter Windows einen Build erstellst und ihn in Git committest. Wenn die Zeilenenden in Git falsch konfiguriert sind, ändert Git deine Zeilenenden und damit auch die Datengröße. Befolge diese Anleitung, um das Problem zu beheben: https://docs.github.com/en/free-pro-team@latest/github/using-git/configuring-git-to-handle-line-endings
A: Stelle sicher, dass die Bundle-ID in deinem Defold-Projekt mit der Bundle-ID übereinstimmt, die du im Xcode-Projekt beim Erstellen des mobilen Bereitstellungsprofils verwendet hast.
A: Aus Berechtigungen einer erstellten App prüfen:
codesign -d --ent :- /path/to/the.app
A: Aus Berechtigungen eines Profils prüfen:
security cms -D -i /path/to/iOSTeamProfile.mobileprovision
A: Dieser Fehler kann auf Computern mit AMD Radeon-GPUs auftreten. Stelle sicher, dass du deine Grafiktreiber aktualisierst.
com.sun.jna.Native.open.class java.lang.Error: Access is denied?
A: Versuche, Defold als Administrator auszuführen. Klicke mit der rechten Maustaste auf die ausführbare Defold-Datei und wähle “Run as Administrator”.
A: Stelle sicher, dass du deinen Treiber auf Version 27.20.100.8280 oder höher aktualisierst. Prüfe dies mit dem Intel Driver Support Assistant. Weitere Informationen findest du in diesem Forumsbeitrag.
AWTError: Assistive Technology not found
Wenn der Editor abstürzt und im Protokoll Caused by: java.awt.AWTError: Assistive Technology not found: com.sun.java.accessibility.AccessBridge steht, führe die folgenden Schritte aus:
C:\Users\<username>.accessibility.properties mit einem gewöhnlichen Texteditor (Notepad ist geeignet)assistive_technologies=com.sun.java.accessibility.AccessBridge
screen_magnifier_present=true
#`) hinzuA: Du wirst Anwendungs-Bundles mit dem Editor und den Kommandozeilenwerkzeugen erstellen können. Informationen dazu, wie du auf PlayStation®4-, PlayStation®5- und Nintendo Switch-Hardware testen kannst, erhältst du, wenn dir Zugang zu den jeweiligen Plattformen gewährt wird.
A: Ja, alle Standardfunktionen der Defold-API sind auch für die Konsolenplattformen verfügbar. Zusätzlich zum Standardfunktionsumfang erhältst du auch Zugriff auf einige spezifische Funktionen für PlayStation®4, PlayStation®5 und Nintendo Switch. Im Allgemeinen sollte der Code jedoch auf mehreren Plattformen genau gleich bleiben können.
A: Beim Einreichen bietet Apple drei Kontrollkästchen für die drei zulässigen Anwendungsfälle der IDFA an:
Wenn du Option 1 auswählst, wird bei der App-Prüfung darauf geachtet, ob Werbeanzeigen in der App erscheinen. Wenn dein Spiel keine Werbung anzeigt, kann es abgelehnt werden. Defold selbst verwendet die Werbe-ID nicht.
A: Defold unterstützt In-App-Käufe und verschiedene Werbelösungen. In der Kategorie Monetization im Asset Portal findest du eine aktuelle Liste der verfügbaren Möglichkeiten zur Monetarisierung.
A: In seltenen Fällen erstellt der Build-Vorgang Dateien nicht neu, nachdem zuvor Build-Fehler aufgetreten sind, die du inzwischen behoben hast. Erzwinge einen vollständigen neuen Build, indem du im Menü Project > Rebuild And Launch auswählst.
A: Ja. Sie heißen Sammlungen (collections). Damit kannst du komplexe Hierarchien von Spielobjekten (game objects) erstellen und als separate Bausteine speichern, die du im Editor oder zur Laufzeit instanziieren kannst (indem du die Inhalte einer Sammlung dynamisch erzeugst). Für GUI-Knoten werden GUI-Vorlagen unterstützt.
A: Wahrscheinlich versuchst du, ein untergeordnetes Objekt in der Spielobjektdatei hinzuzufügen, und das ist nicht möglich. Es ist nur in der Sammlungsdatei möglich. Um zu verstehen, warum, musst du dir vor Augen halten, dass Eltern-Kind-Hierarchien ausschließlich eine Transformationshierarchie des Szenengraphen darstellen. Ein Spielobjekt, das noch nicht in einer Szene (Sammlung) platziert oder dynamisch erzeugt wurde, ist kein Teil eines Szenengraphen und kann deshalb auch nicht Teil einer Szenengraphenhierarchie sein. Mit go.get_parent() kannst du den Bezeichner des übergeordneten Spielobjekts abrufen.
A: Eltern-Kind-Beziehungen drücken ausschließlich die Transformationsbeziehungen im Szenengraphen aus und sollten nicht mit Aggregaten aus der Objektorientierung verwechselt werden. Wenn du dich auf deine Spieldaten konzentrierst und darauf, wie du sie bei Zustandsänderungen deines Spiels am besten veränderst, wirst du wahrscheinlich weniger Bedarf haben, ständig Nachrichten mit Zustandsdaten an viele Objekte zu senden. In den Fällen, in denen du Datenhierarchien benötigst, lassen sich diese in Lua leicht erstellen und verwalten.
A: Dieses Bildartefakt heißt „Übergreifen benachbarter Texturpixel“ (edge bleeding). Dabei greifen benachbarte Randpixel im Atlas in das Bild über, das deinem Sprite zugewiesen ist. Die Lösung besteht darin, den Rand deiner Atlasbilder um zusätzliche Zeilen und Spalten identischer Pixel zu erweitern. Glücklicherweise kann der Atlas-Editor in Defold dies automatisch erledigen. Öffne deinen Atlas und setze den Wert Extrude Borders auf 1.
A: Der integrierte Sprite-Shader, der standardmäßig für alle Sprites verwendet wird, definiert eine Konstante namens „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: Die Z-Position eines Spielobjekts steuert die Zeichenreihenfolge. Niedrige Werte werden vor höheren Werten gezeichnet. Im standardmäßigen Render-Skript werden Spielobjekte mit einer Tiefe zwischen -1 und 1 gezeichnet; alles darunter oder darüber wird nicht gezeichnet. Mehr zum Render-Skript erfährst du in der offiziellen Rendering-Dokumentation. Bei GUI-Knoten wird der Z-Wert ignoriert und hat keinerlei Einfluss auf die Zeichenreihenfolge. Stattdessen werden Knoten in der Reihenfolge gerendert, in der sie aufgelistet sind, sowie entsprechend den Hierarchien untergeordneter Knoten (und den Ebenen). Mehr über das GUI-Rendering und die Optimierung von Zeichenaufrufen (draw calls) mithilfe von Ebenen erfährst du in der offiziellen GUI-Dokumentation.
A: Nein. Die einzige Auswirkung betrifft die Genauigkeit. Der Z-Puffer ist logarithmisch und bietet für z-Werte nahe 0 eine sehr feine Auflösung, während die Auflösung mit zunehmendem Abstand von 0 abnimmt. Beispielsweise lassen sich mit einem 24-Bit-Puffer die Werte 10,0 und 10,000005 unterscheiden, 10000 und 10005 dagegen nicht.
A: Tatsächlich ist die Darstellung einheitlich. Überall im Editor und in den Spiel-APIs werden Winkel in Grad angegeben. Die Mathematikbibliotheken verwenden das Bogenmaß. Derzeit weicht die Physikeigenschaft angular_velocity von dieser Konvention ab: Sie wird aktuell in Radiant/s angegeben. Das soll sich ändern.
A: Er ist einfach eine Form mit Vertex-Farben. Denke daran, dass er trotzdem Füllrate beansprucht.
A: Für alle Ressourcen wird intern ein Referenzzähler geführt. Sobald der Referenzzähler null erreicht, wird die Ressource freigegeben.
A: Alles basiert auf Komponenten (components). Du kannst ein Spielobjekt ohne grafische Darstellung mit mehreren Klängen erstellen und die Klänge wiedergeben, indem du Nachrichten an das Objekt zur Audiosteuerung sendest.
A: Im Allgemeinen werden alle Ressourcen statisch deklariert. Das hat den Vorteil, dass du die Ressourcenverwaltung ohne weiteren Aufwand erhältst. Mit Ressourceneigenschaften kannst du ändern, welche Ressource einer Komponente zugewiesen ist.
A: Ja, sieh dir die Physik-API an, insbesondere physics.get_shape() und physics.set_shape().
A: Ja, setze das Flag physics.debug in game.project. (Siehe die offizielle Dokumentation der Projekteinstellungen)
A: Defold führt im Hintergrund eine angepasste Version von Box2D aus, und der Leistungsaufwand sollte sehr ähnlich sein. Du kannst jederzeit sehen, wie viel Zeit die Engine für die Physik benötigt, indem du den Profiler öffnest. Du solltest auch berücksichtigen, welche Arten von Kollisionsobjekten du verwendest. Statische Objekte benötigen beispielsweise weniger Rechenleistung. Weitere Einzelheiten findest du in der offiziellen Physik-Dokumentation von Defold.
A: Das hängt davon ab, ob sie abgespielt werden. Ein ParticleFx, der nicht abgespielt wird, beansprucht keine Rechenleistung. Die Auswirkungen eines abgespielten ParticleFx auf die Leistung musst du mit dem Profiler ermitteln, da sie von seiner Konfiguration abhängen. Wie bei den meisten anderen Dingen wird der Speicher im Voraus für die Anzahl an ParticleFx reserviert, die als max_count in game.project definiert ist.
A: Jede über einen Sammlungs-Proxy (collection proxy) geladene Sammlung hat ihren eigenen Eingabestapel. Eingaben werden vom Eingabestapel der Hauptsammlung über die Proxy-Komponente an die Objekte in der Sammlung weitergeleitet. Deshalb reicht es nicht aus, wenn das Spielobjekt in der geladenen Sammlung den Eingabefokus anfordert. Auch das Spielobjekt, das die Proxy-Komponente enthält, muss den Eingabefokus anfordern. Einzelheiten findest du in der Eingabedokumentation.
A: Nein. Defold unterstützt Eigenschaften vom Typ hash. Damit kannst du Typen, Zustandsbezeichner oder beliebige Schlüssel angeben. Hashes können auch zum Speichern von Spielobjektbezeichnern (Pfaden) verwendet werden. Häufig sind jedoch url-Eigenschaften vorzuziehen, da der Editor automatisch eine Auswahlliste mit passenden URLs für dich füllt. Einzelheiten findest du in der Dokumentation der Skripteigenschaften.
vmath.matrix4() oder einer ähnlichen Funktion erstellt wurde)?
A: Du greifst mit mymatrix.m11, mymatrix.m12, mymatrix.m21 usw. auf die Zellen zu.
Not enough resources to clone the node, wenn ich gui.clone() oder gui.clone_tree() verwende.
A: Erhöhe den Wert Max Nodes der GUI-Komponente. Du findest diesen Wert im Bereich Properties, wenn du die Wurzel der Komponente in der Ansicht Outline auswählst.
A: Natürlich! Dafür haben wir eine eigene Kategorie „Work for hire“. Wir fördern immer alles, was der Community zugutekommt. Der Community deine Dienste anzubieten – ob gegen Bezahlung oder nicht – ist ein gutes Beispiel dafür.
A: Damit Themen in „Work for hire“ seltener durch neue Beiträge nach oben rücken, darfst du in deinem eigenen Thema höchstens einmal alle 14 Tage einen Beitrag veröffentlichen (es sei denn, es handelt sich um eine direkte Antwort auf einen Kommentar im Thema; in diesem Fall darfst du antworten). Wenn du innerhalb der 14 Tage weitere Arbeiten zu deinem Thema hinzufügen möchtest, musst du deine bestehenden Beiträge bearbeiten und den zusätzlichen Inhalt dort ergänzen.
A: Klar, nur zu! Du kannst dort sowohl Angebote als auch Gesuche veröffentlichen, zum Beispiel: „Programmierer sucht 2D-Pixelkünstler; ich bin reich und bezahle dich gut“.