Release 0.8.5
Moderne JavaScript-Unterstützung, Pipelines mit verbesserter Laubdarstellung, Projektvorlagen und viele, viele Bugfixes und Leistungsoptimierungen, die die Stabilität erheblich verbessern.
Deep-Dive
Dieses Release bringt ein paar sehr leistungsstarke neue Features, die einen genaueren Blick wert sind:
Moderne JavaScript-Unterstützung
Während dies Dir ermöglicht, Deine benutzerdefinierten Komponenten in ES6+ zu erstellen,
mithilfe von const
, =>
und class
, ist dieses Feature noch so viel mehr.
Damit kommt die Möglichkeit, das gesamte NPM-Ökosystem zu nutzen, JavaScript-Code selbst zu bundlen oder sogar andere Sprachen wie TypeScript zu verwenden!
Da wir möchten, dass die Wonderland Engine sich gut in Deinen Bundling-Prozess integriert, haben wir zwei Pakete veröffentlicht: @wonderlandengine/api und @wonderlandengine/components.
Pipelines
Feinere Kontrolle über GPU-Pipeline-Funktionen wie Blending befähigt Dich, eine Vielzahl von Effekten zu erstellen. Pipelines ermöglichen es auch, Teile von Shadern zu deaktivieren, um die Leistung zu optimieren, indem nur genau das verwendet wird, was Du tatsächlich brauchst.
Mit ihnen kommt eine leistungsstarke neue “Foliage”-Pipeline, die eine höhere Qualität für Pflanzenmodelle mit Alpha-Masking bietet.
Projektvorlagen
Die Wonderland Engine macht Dich bereits super produktiv mit ihrem schnellen Entwicklungsworkflow. Doch etwas erst gar nicht tun zu müssen, kann noch schneller sein. Um die Menge an Boilerplate-Arbeit zu reduzieren, stellen wir jetzt Vorlagen zur Verfügung, um Dein Projekt zu starten.
Und wenn Du mehr brauchst, kannst Du Deine eigenen erstellen und mit der Community teilen.
Changelog
Editor
- Unterstützung für JavaScript ES2018 durch V8
- Der Editor parst nun das resultierende Bundle anstatt der Quell-JS-Dateien
- Hinzugefügte Option, JavaScript-Bundle über npm Script zu erstellen
- Die eingebauten Editor-Komponenten wurden Open-Source
- Editor-Komponenten als npm Paket veröffentlicht
- Hinzugefügte Projektvorlagen zum Erstellen von Projekten
- Unterstützung für benutzerdefinierte Projektvorlagen hinzugefügt
- Unterstützung für Pipelines hinzugefügt
- Unterstützung für Alpha zu Coverage (“Alpha-Masking mit MSAA”) hinzugefügt
- Unterstützung für beliebige Blending-Konfigurationen hinzugefügt
- Option hinzugefügt, um Tiefentest und Tiefenschreibmasken zu deaktivieren
- Unterstützung für doppelseitige Materialien hinzugefügt
- “Foliage”-Pipeline für doppelseitige Materialien mit Alpha zu Coverage hinzugefügt
- Generierung von Sourcemaps für JavaScript-Bundles hinzugefügt
- Experimentelle Unterstützung für Mip-Mapping auf komprimiertem Texturatlas hinzugefügt
- Hinzugefügt: Strg + Drag’n’Drop von der Eigenschaftsansicht zur Szenenübersicht, um Komponenten auf andere Objekte zu kopieren
- Hinzugefügte
framebufferScalingFactor
-Einstellung in den Projekteinstellungen - MSAA in der Szenenansicht aktiviert, um das Laufzeitaussehen zu entsprechen
- Szenenladezeiten verbessert
- Ordner im Dateibereich des Asset-Browsers hinzugefügt
- Einige seltene Abstürze behoben, die beim Packen von Änderungen auftreten
- Absturz behoben, wenn nichts in den Asset-Browser gezogen wurde
- Rückgabewerte bei Fehlschlägen mit
--windowless
-Flag korrigiert - Zeilenhervorhebungen in der Ressourcenansicht behoben
- Einige Ressourcen, die in der Ressourcenansicht nicht umbenannt werden konnten, behoben
- Einige Ressourcen, die in Eigenschafts-Dropdowns nicht ausgewählt werden konnten, behoben
- Skalierungsgizmo in der Szenenansicht für Objekte mit Elternteil behoben
- UI-Stil und Layout verbessert
- Flüssigkeit des Transformationsgizmos für Szenen mit vielen Objekten verbessert
- Unterstützung für OBJ-Dateiimport verbessert
- Überflüssige Protokollausgabe entfernt, um Unordnung zu reduzieren
Templates
- Hinzugefügtes “Mobile AR”-Template mit Hit-Test
- Hinzugefügtes “VR”-Template mit Handtracking, Controllern, Teleport-Bewegung und Cursor-Interaktion
Runtime
- JavaScript-API modularisiert
- Die API wurde Open-Source (https://github.com/WonderlandEngine/api)
- API als npm Paket veröffentlicht (https://www.npmjs.com/package/@wonderlandengine/api)
- Alle WebXR-Referenzräume angefordert und der fortschrittlichste standardmäßig ausgewählt
- Fix: WasmMemory nicht auf Oculus Quest während der Entwicklung größerer Projekte zuweisbar
- Fix: Absturz beim Deaktivieren eines skinned Mesh
- Verbesserung der Knöpfe zum Betreten von VR/AR
- Hintergrundverlauf hinzugefügt, um das Aussehen bis zur ersten Laufzeitausgabe zu verbessern
- Warnungen als Fehler im Browserkonsolen-Protokoll behoben
start()
wird jetzt nicht auf JavaScript-Komponenten aufgerufen, die im Editor deaktiviert sind
Engine
- Anti-Aliasing mit aktiviertem Bloom behoben
- Leistung der Ray-Casts gegen Box und AxisAlignedBox verbessert
- Leistung der Textaktualisierung verbessert
- Szenengraph-Leistung für Szenen mit vielen dynamischen Objektbäumen (skinned Meshes) erheblich verbessert
JS API
- Ausnahmen bei
WL.Material.*
-Parameterzugriff behoben - Setter für
WL.PhysXComponent.shape
,extents
und verschiedene andere Eigenschaften hinzugefügt, um PhysX-Rigid-Bodies zu modifizieren WebXR.refSpace
hinzugefügt, um den Referenzraum auszuwählen- Fix:
WL.Object.getComponents()
gibt manchmal falsche Komponententypen zurück WL.Object.active
hinzugefügt, um alle Komponenten auf einem Objekt zu (de-)aktivierenset WL.Object.transformWorld
undset WL.Object.transformLocal
hinzugefügt- Fix:
active
-Status wird ungültig, wenn er währendonActivate()
geändert wird - Speicherschwankungen im Heap und Garbage Collection-Verhalten erheblich verbessert
JavaScript-Komponenten
- cursor:
cursorRayScalingAxis
hinzugefügt, um Strahlobjekt auf einer bestimmten Achse zu skalieren - cursor:
onHover()
jetzt mit Hover-Objektparameter behoben - teleport: Überarbeitet, um Thumbstick- und Orientierungseingaben in VR-Sitzungen zu unterstützen
- teleport: Fehler behoben, bei dem der Mittelpunkt des Raumes teleportiert wurde anstatt des Spielers
- vr-mode-active-switch: Verhalten beim Deaktivieren behoben und vermeidet nun, sich selbst zu deaktivieren
- hand-tracking: Optionen hinzugefügt, um Anzeigemesh und Controller-Objekte (de-)zuaktivieren, abhängig davon, ob eine Pose verfügbar ist
finger-cursor
-Komponente hinzugefügt, um mitcursor-target
durch Kollisionsüberlappung zu interagieren (z. B. mit Handtracking an der Spitze des Zeigefingers)
Docker Image
- Basis-Image auf ubuntu:20.04 umgestellt
edge
-Tag für Release-Kandidaten-Tester hinzugefügt