
EdenSpark Update 0.9.0.12
Der KI-Assistent durchsucht nun die echten Dokumente
Der KI-Assistent in EdenSpark kann nun in der Dokumentation nachschlagen, anstatt sich darauf zu verlassen, woran sich sein Modell gerade erinnert. Wenn ihr ihn bittet, Daslang-Code zu schreiben oder zu korrigieren, durchsucht er die EdenSpark/Daslang-Referenz und die mitgelieferten Beispielprojekte und antwortet anschließend mit Links zu den genauen Quelldateien und Zeilen, die er gelesen hat. Ihr erhaltet weniger erfundene APIs und Antworten, die genau zu der Editor-Version passen, die ihr tatsächlich verwendet.
Alles läuft auf eurem Rechner. Der Suchindex und ein kleines Einbettungsmodell sind im Editor enthalten, sodass er offline funktioniert und weder ein Konto noch einen API-Schlüssel benötigt. Nichts, was ihr eingebt, verlässt euren PC. Die erste Suche dauert ein oder zwei Sekunden, während das Modell geladen wird; danach läuft es schnell.
Der Dokumentationsindex ist neu und wir wissen, dass er noch nicht ganz perfekt ist. Falls der Assistent etwas Falsches oder Veraltetes angibt, teilt uns dies bitte in unseren Community-Kanälen mit, damit wir es für alle beheben können.
Editor-Tools – Erweitert den Editor mit Daslang
Ihr könnt nun in Daslang eure eigenen Editor-Tools erstellen. Legt ein Skript im Ordner editor/ eures Projekts ab, und es wird *innerhalb des Editors* parallel zu eurem Spiel ausgeführt – so verwandelt ihr den Editor in ein Werkzeug, das ihr ganz an die Arbeitsweise eures Teams anpassen könnt.

Ein Editor-Tool kann:
- Schaltflächen und Menüeinträge zum Inspektor einer beliebigen Komponente hinzufügen – mit einem Klick wird die von euch geschriebene Logik ausgeführt, mit eigenen Symbolen und einer Hervorhebung, wenn sie „aktiv“ ist
- benutzerdefinierte Widgets direkt im Bereich einer Komponente zeichnen – Schieberegler, Farbauswahlen, Drag-Felder, Dropdown-Menüs, Ressourcenauswahlen, Fortschrittsbalken – was auch immer das Tool benötigt, je nach ausgewähltem Node
- Schwebende Popup-Werkzeugfenster über dem Ansichtsfenster einblenden (verschiebbar, in der Größe anpassbar, ausblendbar und im Menü „Fenster“ aufgeführt), damit eure Steuerelemente niemals die Szenenansicht beeinträchtigen
- Die Editor-Kamera steuern – sie verschieben, neu ausrichten, zwischen perspektivischem/orthografischem und 2D-Modus wechseln oder den ausgewählten Knoten einrahmen, wie beim Drücken der F-Taste
- die Auswahl auslesen und ändern sowie eigene Szenenbearbeitungen vornehmen, die direkt in Undo/Redo integriert sind – eine ganze Reihe von Änderungen lässt sich mit einem einzigen Strg+Z rückgängig machen
- Nodes am Raster ausrichten oder auf die darunterliegende Oberfläche ablegen
- das geöffnete Prefab verwalten – es speichern, ein anderes öffnen oder schließen
- die Ansicht umschalten – den Gizmo-Modus (Verschieben/Drehen/Skalieren/Begrenzungen/Transformieren), die schattierte oder Drahtgitteransicht sowie die Reihenfolge der Editor-Registerkarten
- auf die Editor-Schleife und auf Node-Änderungen reagieren und erkennen, ob das Spiel angehalten, pausiert oder läuft – sowie es starten, pausieren, neu starten oder schrittweise ablaufen lassen
Die Werte, die ihr in den Widgets eines Tools anpasst, werden **zwischen den Sitzungen gespeichert und mit eurem Team geteilt** – sie werden neben euren Projektquellen (unter Versionskontrolle) gespeichert, sodass ein Teamkollege, der das Projekt abruft, dieselbe Tool-Konfiguration erhält. Widgets pro Node speichern ihren Wert für jeden einzelnen Knoten.
Auf die Tools können auch **KI-Assistenten** zugreifen: Der im Editor integrierte MCP-Server listet alle aktiven Widgets auf und ermöglicht es einem Agenten, Werte zu lesen und festzulegen, Schaltflächen zu betätigen und Komponenten-Tools auszuführen – genau wie ein Nutzer, einschließlich der Rückgängig-Funktion. Eure Tool-Fenster bleiben sichtbar, unabhängig davon, welcher Editor-Tab gerade im Vordergrund ist; nur das halbtransparente Standard-Tools-Overlay passt sich dem Viewport an.
Editor-Skripte laufen ausschließlich im Editor – sie werden niemals in das veröffentlichte Spiel eingebunden, und ein außer Kontrolle geratenes Tool, das sich aufhängt, wird von selbst unterbrochen, anstatt den Editor mit sich in den Absturz zu reißen.
In-Editor Profiler
Ein integrierter Performance-Profiler ist nun direkt im Editor verfügbar – externe Tools sind nicht mehr erforderlich. Öffnet ihn über Fenster ▸ Profiler (oder die Schaltfläche Profiler öffnen im Statistik-Overlay), um die Frame-Zeiten und die Render-Auslastung als scrollbare Diagramme für die letzten etwa 2.000 Frames anzuzeigen. So könnt ihr Spitzenwerte und Trends erkennen, anstatt nur die Zahlen eines einzelnen Zeitpunkts zu betrachten.

Das Fenster zeigt fünf Diagramme an: Game-Thread-Zeit, Render-Thread-Zeit, Render-Zahlen (draw calls / instances / triangles), Shadow-Pass-Zahlen und Speicher. Die beiden Frame-Zeit-Diagramme stellen den Rohwert pro Frame dar, überlagert mit dem geglätteten Durchschnittswert, sodass kurze Ruckler sichtbar bleiben. Jedes Diagramm verfügt über eine Legende, auf die ihr klicken könnt, um einzelne Reihen ein- oder auszublenden. Klickt auf Pause, um ein aufgezeichnetes Fenster zu untersuchen, oder auf Löschen, um von vorne zu beginnen.
Built-in JSON Serialisierung
Es gibt nun eine erstklassige Möglichkeit, Daten aus einem Spielskript in JSON zu konvertieren und wieder daraus zu extrahieren. Ihr könnt nahezu jeden Daslang-Wert – Strukturen, Klassen, Arrays, Tabellen, Varianten und Primitive – in eine JSON-Zeichenkette serialisieren und eine JSON-Zeichenkette direkt wieder in einen typisierten Wert parsen, wobei ihr optional Feldnamen umbenennen könnt, die von euren Daslang-Feldern abweichen.
Das öffentliche json-Modul ersetzt die älteren Hilfsfunktionen daslib/json / json_boost, die nun zugunsten der schnelleren integrierten Funktion blockiert sind
Neue Mesh-Generierungs-API
Die asynchrone Mesh-Generierungs-API wurde durch die Entfernung unnötiger Wrapper erheblich vereinfacht. Überzeugen Sie sich selbst!
Vorher:
// generator.das
require engine.serializer.genericstorage
require engine.gengeometry.meshstructures
def create_my_mesh(width : float, height : float, subdivisions : int) : MeshGeometry{
// your generation
return <- MeshGeometry(...)
}
[export]
def build(data : string) : MeshGeometry {
var req <- GenericStorage(data)
let width = get_or(req, "width", 1.)
let height = get_or(req, "height", 1.)
let subdivisions = get_or(req, "subdivisions", 24)
return <- create_my_mesh(width, height, subdivisions)
}
// main.das
require engine.serializer.generic_storage
[export]
def on_initialize() {
var req : GenericStorage
set(req, "width", 2.)
set(req, "subdivisions", 50)
let meshId = generate_mesh("%file/generator.das", req)
}Nachher:
// generator.das
require engine.gen_geometry.mesh_structures
[mesh_generator]
def create_my_mesh(width : float = 1., height : float = 1., subdivisions : int = 24) : MeshGeometry
{
// your generation
return <- MeshGeometry(...)
}
// main.das
[export]
def on_initialize() {
let meshId = generate_mesh("%file/generator.das", (width = 2., subdivisions = 50))
}Details finden Sie im entsprechenden Dokumentationsartikel.
Hinweis: Alter Code in bereits veröffentlichten Spielen funktioniert weiterhin, gibt jedoch eine Veraltungswarnung aus, die die Veröffentlichung blockiert.
Launcher
Könnt ihr auf der Registerkarte „Durchsuchen“ nach veröffentlichten Spielen suchen und die Screenshots eines Projekts direkt verwalten – löscht die, die ihr nicht mehr benötigt, und nutzt die sofortige Rückgängig-Funktion, falls ihr versehentlich das Falsche entfernt habt.
Navigation & Pathfinding
Agenten können sich nun in einem Level zurechtfinden. Fügt einem Node eine NavMesh-Komponente hinzu, platziert Collider-Geometrie auf einem beliebigen untergeordneten Node (oder dem NavMesh-Node selbst) und „backt” ein Navigationsmesh aus dieser Geometrie – anschließend könnt ihr es über Skripte abfragen, um Charaktere, Gegner oder andere Objekte auf begehbarem Untergrund zu bewegen.
Die NavMesh-Komponente enthält das Agentenprofil, für das das Mesh gebacken wird – Kapselradius und -höhe, maximale Steigungshöhe, maximale Neigung und Voxel-Zellgröße. Klicke im Inspektor auf Bake, um es aus den untergeordneten Kollidern zu erstellen, oder auf Clear, um es zu entfernen.
// Bake at runtime from procedurally placed geometry; the block is called when the bake finishes
navmeshNode?.NavMesh.bakeAsync() @(result : BakeResult) {
// result: BakeResult.Baked / .Empty / .Failed
}
// Ask for a walkable route between two world positions (on any navmesh)
navmesh_find_path(NavPathQuery(from = character.localPosition, to = destination)) $(waypoints) {
// waypoints : array<float3> -- follow them in order
}
// or request a path on a specific navmesh
navmeshNode?.NavMesh.findPath(NavPathQuery(from = character.localPosition, to = destination)) $(waypoints) {
// waypoints : array<float3> -- follow them in order
}Für erweiterte Pfadfindung gibt es NavCorridor, einen zustandsbehafteten Pfadfolger. Er behält den Korridor zwischen dem Agenten und seinem Ziel bei, führt jeden Frame eine erneute Trichterberechnung (Refunneling) vom tatsächlichen Standort des Agenten aus durch (sodass er nie an Navmesh-Grenzen hängen bleibt), kann einem sich bewegenden Ziel folgen, ohne eine vollständige Neuplanung durchführen zu müssen, und teilt Ihnen mit, wann die Navmesh unter ihm neu berechnet (rebaked) wurde, sodass Sie eine Neuplanung veranlassen können.
Ihr könnt die Navmesh-Funktionen selbst im navmesh-Showcase (samples/showcases/navmesh) im Launcher testen. Die Navmesh-Funktionalität befindet sich noch in aktiver Entwicklung, sodass ihr in den nächsten Updates mit weiteren Funktionen rechnen könnt.
Partikle-Effekte
Mit der neuen Komponente ParticleSystem könnt ihr nun visuelle Effekte erstellen.
Die Komponente verfügt über eine Vielzahl leistungsstarker Parameter zur Erzeugung unterschiedlichster Effekte: Feuer, Rauch, Regen, Spritzer, Zaubersprüche und vieles mehr.
Sie unterstützt verschiedene Formen und Modi der Partikelemission, umfangreiche Simulationseinstellungen, vielfältige Farbsteuerung, die Integration in die Szenenbeleuchtung und vieles mehr.
Alles lässt sich im Editor konfigurieren, wo die Parameter in übersichtliche Kategorien gruppiert sind und mit speziell dafür entwickelten visuellen Steuerelementen bearbeitet werden können
Post-Effect-Shader in Daslang
Pixel-Shader können nun als full-screen post effects ausgeführt werden. Schreibt einen [pixel_shader], der PostEffectInputakzeptiert, lest die gerenderte Szene mit sample_scene_color und sample_scene_depth ein und fügt das resultierende Material mithilfe einer PostEffect-Komponente zur Szene hinzu.
require engine.render.shader_dsl
var {
@color vignetteColor = float3(0, 0, 0)
strength = 1.5
radius = 0.6
softness = 0.4
}
[pixel_shader]
def vignette(inp : PostEffectInput) {
let uv = inp.screenPos
let col = sample_scene_color(uv)
// Distance from center [0,1] -> vignette mask
let d = length(uv - float2(0.5, 0.5)) * strength
let mask = smooth_step(radius - softness, radius, d)
return PostEffectOutput(out_color = lerp(col, vignetteColor, mask))
}Ein neues post_effect-Showcase enthält 12 einsatzbereite Effekte: Scanner, Tiefenvisualisierung, Tiefenkontur, Vignette, Frost, Beschädigung, Heilung, Nachtsicht, Radialunschärfe, Schärfen, Hitzeschleier und Helm.
Sprite Editor
Texturen können nun Sprites enthalten – benannte Teilrechtecke, die aus einem Atlas ausgeschnitten wurden und die ihr direkt in eurem Spiel verwenden könnt. Wählt eine beliebige importierte Textur aus und klickt im Importer auf Sprites bearbeiten…, um den neuen Sprite-Editor zu öffnen.

Es stehen zwei Aufteilungsmodi zur Verfügung:
- Raster – Aufteilung nach Zellengröße oder nach Spalten- und Zeilenanzahl, mit Versatz, Abstand, einer Pivot-Voreinstellung und der Option, vollständig transparente Zellen zu überspringen. Ideal für Animationsblätter.
- Smart – automatische Aufteilung, die Sprites anhand ihrer Transparenz ermittelt, mit einem einstellbaren Alpha-Schwellenwert und einer Mindestgröße für Inseln. Ideal für unregelmäßige Atlanten.

Jedes Sprite kann einzeln bearbeitet werden – benennt es um, passt seine Rechteckgröße, seinen Drehpunkt und seine Ränder an oder löscht es:

Intelligenterer Texturimport
Der Texturimport wurde um eine einzige Einstellung für die Verwendung herum überarbeitet – wähltColor, NormalMap, LinearGrayscale oder LinearRGBA aus, und der Importer wählt für euch das richtige Pixelformat, den Farbraum und die Kanalbelegung aus. Die Verwendung wird in gängigen Fällen (Normal Maps, Graustufenmasken) automatisch erkannt, sodass die meisten Texturen korrekt importiert werden, ohne dass ihr etwas ändern müsst.


Die Komprimierung erfolgt nun über ein einziges Kontrollkästchen namens compressTexture, und im Vorschaufenster wird der tatsächliche GPU-Speicherbedarf der Textur angezeigt – so ist der Effekt sofort sichtbar:


Tiled-Kartenbeispiel
Ein neues Beispiel (samples/new/tilemap) zeigt, wie Karten geladen und gerendert werden, die im Tiled-Editor erstellt und als JSON exportiert wurden. Dies ist zwar noch kein nativer Tiled-Import, aber der mit dem Beispiel mitgelieferte Konverter kommt dem bereits sehr nahe: Es werden orthogonale, hexagonale und isometrische Kartenausrichtungen, Atlas-Tilesets (mit Berücksichtigung von Rändern und Abständen) sowie Bildersammlungs-Tilesets, Kachelspiegelungen und Parallaxenschichten unterstützt.




Darstellung von Vektorschriftarten
Schriftarten werden jetzt direkt aus Glyphenkonturen auf der GPU gerendert, anstatt aus einem vorgerenderten Bitmap-Font-Atlas. Das Ergebnis bleibt bei jeder Größe gestochen scharf – keine Unschärfe oder Pixelbildung, wenn Text skaliert, animiert, in der 3D-Welt platziert oder aus nächster Nähe betrachtet wird.
Hinweis: TextEffect.Glow wird beim neuen Vektor-Schriftrendering nicht unterstützt (der Text wird ohne diesen Effekt gerendert). Verwenden Sie Outline oder Shadow, um einen Leuchteffekt zu imitieren.




Fahrzeugphysik
Erstellt Fahrzeuge aller Art – Autos, Lkw, einfach alles, was Räder hat – mit realistischem, physikbasiertem Fahrverhalten. Die Parameter für Motor, Getriebe und Räder sind vollständig konfigurierbar. Die Fahrzeugphysik nutzt das integrierte Fahrzeugsystem der Jolt-Physik-Engine.
📐 API-Änderungen
- Die Mesh-Generierungs-API wurde vereinfacht und benötigt jetzt keinen build+GenericStorage-Wrapper mehr (die Abwärtskompatibilität bleibt erhalten).
✨ Hinzugefügt
- Der KI-Assistent durchsucht die mitgelieferten EdenSpark-/Daslang-Dokumentationen und Beispielprojekte und gibt die genauen Quelldateien und Zeilen an; der Index und das Einbettungsmodell laufen vollständig offline, es sind weder ein Konto noch ein API-Schlüssel erforderlich
- Umbenennen von Nodes, Dateien und Assets direkt in den Inspektor- und Importer-Fenstern – wählt ein Element aus, beginnt mit der Bearbeitung, drückt die Eingabetaste zum Speichern oder die Escape-Taste zum Abbrechen
- Profiler-Fenster im Editor – scrollbare Diagramme zu Spiel-/Render-Frame-Zeiten, Render- und Shadow-Pass-Zahlen sowie zum Speicherverbrauch über die letzten ca. 2.000 Frames, aufrufbar über Fenster ▸ Profiler
- Schaltfläche „Profiler öffnen“ im Statistik-Overlay
- Gamepad-Rumble-Effekte – fügt eurem Spiel taktiles Feedback durch Controller-Vibration hinzu. Verwendet `start_rumble()`, um die Vibration auszulösen, wobei ihr die tieffrequenten (starken) und hochfrequenten (leichten) Motoren separat steuern könnt, und legt eine Dauer in Sekunden fest, nach der die Vibration automatisch stoppt. Ruft stop_rumble() auf, um die Vibration sofort zu beenden. Die Vibration wird automatisch unterbrochen, wenn das Spiel pausiert
- Mausunterstützung bei Trigger-Aktionen – kombiniert Maustasten mit Joystick-Triggern für flexible Steuerungsschemata
- Abfragen des Roh-Eingabestatus – überprüft mit get_raw_keyboard_state(), get_raw_mouse_state() und get_raw_gamepad_state() genau, welche Tasten und Schalter gerade gedrückt sind
- Erkennung von Schnelltasten – Mit den neuen is_any_*-Funktionen könnt ihr prüfen, ob im aktuellen Frame gerade eine Taste gedrückt oder losgelassen wurde
- Post-Effect-Pixel-Shader: PostEffectInput / PostEffectOutput, mit sample_scene_color und sample_scene_depth zum Auslesen der gerenderten Szene
- PostEffect-Komponente – Fügt der Szene per Code oder im Editor ein Post-Effect-Material hinzu
- post_effect -Showcase mit 12 Beispiel-Effekten
- Vergleichsnodes, select und komponentenweises lerp
- Kameratransformationsknoten
- mod operator
- Hilfsfunktionen in Pixelshader: Schreiben Sie reguläre def-Funktionen in eine .shader-Datei und rufen Sie sie aus Ihrem Shader-Code auf – der Compiler bindet sie automatisch inline ein. [pixel_shader] wird nur für den Einstiegspunkt benötigt.
- Eine umfangreiche neue Bibliothek mit Pixelshader-Beispielen, jedes mit einem gebrauchsfertigen .material:
- Post-Processing-Beispiele: Nachtsicht, radiale Unschärfe, Schärfung, Reif, Heilung, Schaden, Hitzeflimmern, Helm-Overlay, Tiefenkontur.
- 22D-Shader: Mandelbrot, CRT, Wölbung, Dithering, Prägeeffekt, Kaleidoskop, Voronoi, Farbverlaufskarte, Bloom und mehr.
- 3D-Shader: Szenenbrechung, Tiefennebel.
- Sprite-Editor: Textur-Atlas in benannte Sprites zerlegen, mit Raster- und intelligenter (transparenzbasierter) Aufteilung
- Bearbeitung pro Sprite: Name, Rechteck, Drehpunkt, Rahmen
- Sprite-Liste mit Rechtecken direkt im Textur-Importer angezeigt
- Import-Einstellung usage (Farbe / NormalMap / LinearGrayscale / LinearRGBA) mit automatischer Erkennung, ersetzt manuelle Format- und sRGB-Flags
- Texturkomprimierung mit einem Klick über die Einstellung compressTexture
- Die Texturvorschau zeigt die tatsächliche GPU-Größe und die Kanalanzahl der importierten Textur an
- Tilemap-Beispiel (samples/new/tilemap): Konvertiert und erstellt Tiled-JSON-Karten (.tmj/.tsj) als Sprite-Knoten – unterstützt werden orthogonale, hexagonale und isometrische Ausrichtungen, Atlas- und Bildersammlungs-Tilesets, Kachelspiegelungen, Parallaxenschichten und typisierte Objekteigenschaften.
- Eigene Registerkarte „Gamepads“ – Die gesamte Gamepad-Konfiguration befindet sich nun an einem übersichtlichen Ort, getrennt von den Einstellungen für Aktionssätze
- Interaktive Visualisierung und Steuerung der Gamepad-Totzonen – Passt Totzonen der Analogsticks mit visuellem Feedback an, das Totzonenringe und den vollen Bewegungsbereich anzeigt
- Gamepad-Neuzuordnung – Wenn mehrere Controller angeschlossen sind, kann man ganz einfach festlegen, welches Gamepad welchen Spieler-Slot steuert
- Umschaltfunktion für A/B- und X/Y-Tasten pro Gamepad – Schaltet dieses Feature für jedes Gamepad ein oder aus, um A↔B und X↔Y für linkshändige Controller oder unterschiedliche Tastenbelegungen zu vertauschen
- Permanente Steuerungseinstellungen – alle Ieure Tastenbelegungen und Anpassungen werden zwischen den Sitzungen gespeichert, sodass diese nicht bei jedem Neustart neu konfiguriert werden müssen. Mit „Reset All“ könnt ihr jederzeit zu den Standardeinstellungen der Engine zurückkehren
- Die Komponente „VehicleController“ wurde hinzugefügt, mit der sich ein Physikkörper wie ein Auto mit Rädern verhalten lässt.
- Ein Beispiel zur Veranschaulichung der Funktionen von „VehicleController“ wurde hinzugefügt
- Suche auf der Registerkarte „Durchsuchen“ zum Auffinden veröffentlichter Spiele
- Löschen von Screenshots in der Screenshot-Auswahl mit einer sofortigen Rückgängig-Funktion, um versehentlich gelöschte Screenshots wiederherzustellen
- Eine Schaltfläche zum Kopieren der URL eines Beitrags in die Zwischenablage, ohne diesen im Browser zu öffnen
- Umfassende Editor-Dokumentation zu Symbolleiste, Ansichtsfenster, Outliner, Inspektor, Projektfenster, Asset-Importer, Konsole, internem Code-Editor, Hauptmenü, Einstellungen, Benachrichtigungen und Drag & Drop
- Aktualisierte Dokumentation zu Navigation, Ressourcen und Benutzer-Shadern
- HDStaticShadows -Komponente zur Feinabstimmung statischer Schatten im HD-Renderer
- ParticleSystem -Komponente zum Erstellen visueller Effekte für eure Spiele
- Die `_`-Präfixe wurden aus der Auswahl der Zifferntasten bei der Neuzuordnung der Eingabe im Benutzermenü entfernt
- Bestätigungs-Popups für die Schaltflächen „Beenden“ und „Neustart“ wurden entfernt
- NavMesh-Komponente — Legen Sie das Navigationsgitter-Profil fest und backen Sie es mit dieser Komponente aus der Collider-Geometrie unterhalb ihres Knotens. Backen Sie entweder im Editor oder über den Code.
- Pfadfindung und Navmesh-Abfragen – verfügbar sowohl als Methoden der NavMesh-Komponente als auch als freie Funktionen in der aktuellen Szene.
- NavCorridor – zustandsbehaftete Routenverfolgung für erweiterte Pfadfindung.
- navmesh showcase — eine Demo zur Pfadfindung für Charaktere, bei der diese per Klick bewegt werden können
🔧 Verbessert
- Die Arbeit mit KI-Programmierassistenten wird immer besser – die integrierten Anleitungen und Projektanweisungen, die die Assistenten lesen, wurden verfeinert und erweitert, sodass ein Assistent die Konventionen Ihres Projekts von Anfang an zuverlässiger befolgt
- Es ist nun gewährleistet, dass Assets vollständig geladen sind, bevor der Editor oder das laufende Spiel darauf zugreift – keine fehlenden Meshes oder Ein-Frame-Störungen mehr nach einem Neuladen
- Umfangreiche Meshes bereiten ihre Daten vor, ohne andere Ladevorgänge zu blockieren, und Projekt-Builds belasten das Dateisystem deutlich weniger.
- Beim Modellimport werden Validierungsprobleme (z. B. Probleme mit Skelettgelenken) mit klaren Fehlermeldungen gemeldet, anstatt stillschweigend ein fehlerhaftes Asset zu erzeugen.
- Die Audiofunktionen werden auf breiter Front weiter verbessert, einschließlich des 3D-Positionsklangs – leistungsfähiger und flüssiger als zuvor.
- Haltet die **Umschalt**-Taste gedrückt, während ihr eine Ecke des „Bounds“-Gizmos ziehen, um die Größe proportional anzupassen und dabei das ursprüngliche Seitenverhältnis beizubehalten – dies funktioniert bei UI-Elementen und 3D-Boxen
- Änderungen an den Import-Einstellungen für Modelle und Materialien unterstützen nun „Rückgängig“ und „Wiederherstellen“, genau wie jede andere Änderung im Editor
- Das Projektfenster zeigt die Datei- und Ordnergrößen für ausgewählte Elemente an
- Wenn eine Textur oder ein Asset nicht geladen werden kann, wird im Protokoll nun der Grund dafür angegeben (fehlende Datei, leere Datei oder ein echter Decoder-Fehler) anstelle einer allgemeinen Meldung; die SVG-Dekodierung wird nur für Dateien versucht, die tatsächlich wie SVG aussehen, sodass ein echter Bildfehler nicht mehr hinter einem irreführenden SVG-Fehler verborgen bleibt
- Stack-Traces heben sich nun durch eine eigene Farbe optisch ab und sind so deutlich vom Hauptfehlertext getrennt
- Verbesserter Ressourcen-Picker – zeigt „No resources found“ an, wenn die Suche keine Treffer liefert, und bietet eine Kachel „New resource“ an, um Texturen mit KI zu generieren
- Prefab-Fenster lassen sich nun über das Kreuz-Symbol in der Registerleiste schließen
- Die Profiling-Anzeige in der Symbolleiste trägt nun die Bezeichnung Daslang Profiler, um die engineinterne Instrumentierung auf Funktionsebene vom integrierten Profiler-Fenster und der externen Anwendung „daProfiler“ zu unterscheiden
- Kompilierte Shader beanspruchen weniger GPU-Register und Sampler-Slots, und die CPU-seitige Auswertung erfolgt schneller
- Klarere Shader-Kompilierungsfehler und Disassembly-Ausgabe
- Die Verwendung eines Shaders mit falschem Verwendungstyp wird nun als Validierungsfehler gemeldet, anstatt stillschweigend zu scheitern
- Die Texturvorschau im Sprite-Editor behält das Seitenverhältnis des Bildes bei
- Strudel wurde verbessert, stabilisiert und erweitert – mehr Effekte und Synthesizer sowie „Fire-and-Forget“-One-Shot-Stings für ereignisgesteuerte Musik und Soundeffekte
- Der Texturimport ist robuster: klarere Fehlermeldungen und ein aktualisiertes Metadateiformat (bestehende Projekte funktionieren weiterhin)
- Die Anzeige von Fehlermeldungen ist nun übersichtlicher – wenn Fehler auftreten, werden sie in einem eigenen Bereich mit dem Hinweis „Press Restart to continue“ angezeigt, sodass man sofort erkennt, was schiefgelaufen ist und was zu tun ist
- KI-Agenten können nun mit der Spielzeit arbeiten (sie verlangsamen, beschleunigen oder anhalten) und mit Prefabs
🐛 Gefixt
- Seltene Abstürze und Hänger, die durch Wettläufe beim parallelen Laden von Assets und bei Dateioperationen verursacht wurden
- Assets, die auf andere Assets verweisen (rekursives Laden), führen nicht mehr zu Fehlern
- In Projektordner geschriebene Dateien erscheinen atomar – das Build-System kann keine halb geschriebenen Dateien mehr erfassen
- Die Farbe des FPS-Overlays auf dem Bildschirm flackert nicht mehr, wenn die Bildrate genau auf einem Qualitätsschwellenwert liegt
- Der Editor bleibt nun nach einem Reset des GPU-Geräts (z. B. bei einem Treiber-Update oder einer Absturzbehebung) erhalten, anstatt mit diesem zusammen abzustürzen
- Meshes mit castShadowsOnlyForStatic werfen wieder Schatten
- Der Animator stürzt nicht mehr ab, wenn eine Animationsmaske auf ein nicht passendes Skelett verweist
- Eine Namenskollision zwischen Feldern integrierter Komponenten wurde behoben
- Der Log-Spam „Material wurde im laufenden Betrieb neu geladen“ bei jedem Start wurde entfernt
- Der Empfänger für das Ziehen und Ablegen von Ordnern erstreckt sich nun über den gesamten Ordnerbereich und nicht mehr nur über die Kopfzeile
- Es wurde ein Fehler behoben, durch den das Hinzufügen eines RigidBody zum CharacterController dazu führte, dass Objekte, die den Charakter berührten, unvorhersehbar flackerten
- Cubemaps und `texture2d`-Arrays können nun im Editor korrekt in der Vorschau angezeigt und bearbeitet werden
- Aus Code erstellte Texturen erhalten nun nicht mehr fälschlicherweise den sRGB-Modus
- Es wurde ein Fehler behoben, der das Festlegen des Standard-Prefabs verhinderte, wenn kein Prefab zur Bearbeitung geöffnet war.




