Release 1.0.0
Finde das vollständige Änderungsprotokoll unten.
Wonderland Engine 1.0.0 baut eine starke Grundlage für zukünftige Versionen:
Durch die Integration von NodeJS und esbuild zum Bundling können wir alle Projekte auf NodeJS basieren lassen und gleichzeitig den Komfort des vorherigen internen Bundlers beibehalten. Und wir haben das Teilen von Komponenten als npm-Pakete einfacher gemacht als je zuvor.
Wir haben die JavaScript-API in TypeScript neu geschrieben. Auch wenn Du weiterhin JavaScript für Deine Projekte verwendest, wirst Du feststellen, dass Deine IDE aufgrund dessen intelligentere Vorschläge machen kann. Aber dann würdest Du auf schicke neue Features verzichten wie:
Mit der Neuschreibung haben wir eine umfassende Testsuite erstellt und eine große Anzahl von Bugs behoben. Lies alles über die neue API in unserem Blogbeitrag “Wonderland Engine 1.0.0 JavaScript Migration”.
Für das Rendering haben wir einige wichtige Änderungen vorgenommen, wie z.B. das Anpassen des Beleuchtungsmodells unserer Standardshader, um eine intuitivere intensity
-Einstellung anstelle von attenuation
zu verwenden. Diese Änderungen ebnen den Weg für wunderbare Rendering-Features in der Zukunft.
Der Wonderland Editor ist das Herzstück des Entwicklungsprozesses mit der Wonderland Engine. Wir haben ein neues experimentelles Feature hinzugefügt, um Dein Projekt direkt auf Android-Geräten zu starten, z.B. auf eigenständigen VR-Browsern, indem das Port-Forwarding für Dich eingerichtet wird.
Schließlich ermöglicht es das offene Web, ein breites Publikum zu erreichen. Nicht nur die Gerätekombatibilität, sondern auch die Sprache kann eine Barriere sein. Wir haben Tools hinzugefügt, um Dir zu helfen, Deine Projekte zu übersetzen und ein noch breiteres Publikum zu erreichen.
Finde das vollständige Änderungsprotokoll unten.
Breaking Changes
Da uns die Rückwärtskompatibilität sehr am Herzen liegt, haben wir nur selten die Gelegenheit, Dinge grundlegend zu ändern. Mit dem Wechsel der Hauptversion haben wir eine seltene Gelegenheit, Dinge zu bereinigen und richtigzustellen.
Wir waren also gründlich, haben aber die Community mitgenommen! Deine Lieblingsbibliotheken sind bereits aktualisiert und bereit für die neue Version.
Hier sind einige Beispiele für die Änderungen, die wir vorgenommen haben, und wie wir sie beschlossen haben. Wir sind gespannt, was Du von dem Ergebnis hältst.
Beispiel: .getTranslationWorld()
und .getTransformationWorld()
sind gefährlich
ähnlich. Selbst mit Autovervollständigung in Deiner IDE könntest Du nicht bemerken, dass Du die
falsche Funktion verwendest. Stattdessen verwenden wir jetzt “Position” anstelle von “Translation”, um die Position eines
Objekts zu beschreiben.
Beispiel: Die alte API speicherte alles in einem globalen WL
Objekt. Das machte es
schwierig, Wonderland Engine in andere Bibliotheken einzubetten oder mehrere
Instanzen auf einer Seite auszuführen. Jetzt, da Instanzen der Wonderland Engine in eine
WonderlandEngine
Klasse eingebettet sind, hast Du die volle Kontrolle darüber, wie und wann Du sie instanziierst.
Changelog
Editor
- Benchmarking-Ansicht hinzugefügt
- Lokalisierungsansicht hinzugefügt, um die Übersetzung von WebXR-Erlebnissen zu unterstützen
- WL_EDITOR JavaScript-Makro hinzugefügt, das auf
true
gesetzt ist, wenn der Editor Komponenten bündelt - Alpha-Wert-Schieberegler zu Farbpicker hinzugefügt
- Auswahlmöglichkeit für ETC1S (kleiner, Standard) und UASTC (höhere Qualität) für Bildkompression hinzugefügt
- Standardwerte für Sky Material colorStop-Eigenschaften hinzugefügt
- Geräte-Dropdown zur Startseite hinzugefügt, um direkt auf angeschlossenen Android-Geräten statt lokalem Gerät zu starten (Port-Forwarding wird automatisch eingerichtet)
- Packaging: Unbenutzte VR- und AR-Button-SVGs entfernt
- Windows: Zufällige Fehlermeldungen durch Dateiüberwachung behoben
- Animationskomponente mit leeren Animationen sind jetzt zur Laufzeit inaktiv
- Komponenten werden jetzt automatisch von Skripten und npm-Paketen erkannt
- Ein seltener Bug behoben, bei dem eine im Editor hinzugefügte Komponente
undefined
zurückgeben konnte, wenn sie zur Laufzeit abgerufen wurde - Zufällige Verdunkelung der gesamten Benutzeroberfläche bei verschiedenen Änderungen am Projekt behoben
- Verhalten des Rotations-Gizmos bei Objekten mit nicht gleichmäßig skalierten Vorfahren behoben
- Abstürze beim Wechseln von Projekten behoben
- Retargeting einiger FBX-Dateien behoben
- Abstürze und Importfehler mit einigen FBX-Dateien behoben
- Beim Retargeting werden Tracks, für die kein neues Ziel gefunden werden konnte, nun entfernt
- Alle Alphawerte der Farbeigenschaften standardmäßig auf
1.0
gesetzt - Negative Abstandswerte der Textkomponente können jetzt eingestellt werden
- Legacy JavaScript-Bundler zugunsten des Standard-“esbuild”-Bundlers entfernt
- “8thwallToken”-Einstellung entfernt und durch spezifizieren im Einstiegsskript ersetzt
- Textmaterialien haben jetzt Thumbnails
- Schriftarten haben jetzt Thumbnails
- CLI
- Problem mit dem –import Befehl behoben, das die Szene nicht instanziierte
- Tokens wurden als sicherere Methode hinzugefügt, um Anmeldeinformationen für das Packen im CI an den Editor zu übergeben
- Benchmarking-Framework hinzugefügt
- Linux
- Dateiüberwachung behoben
- Zustände der Modifikatortasten behoben
- Ansichten
- Asset-Browser: Gelöschte Dateien werden nun in den Papierkorb des Systems verschoben, anstatt dauerhaft gelöscht zu werden
- Asset-Browser: Arbeitsverzeichnisse für Standardanwendungen, die durch Doppelklick gestartet werden, sind jetzt das Projekt-Root
- Konsole: Zustände der Kontrollkästchen für Fehler, Warnungen und Informationen werden nun projektübergreifend gespeichert
- Konsole: Horizontales Scrollen behoben
- Projekteinstellungen: Starke Verzögerung beim Ändern des Editor-Server-Ports behoben
- Eigenschaften: Einfügen von Eulerdrehungen behoben
- Ressourcen: Horizontales Scrollen hinzugefügt, um sicherzustellen, dass die gesamten Tabellen auch auf kleineren Bildschirmen gelesen werden können
- Profiler: Verbesserte, welche Profilsektoren standardmäßig aktiviert sind
- Szeneimport
- Mesh-Verarbeitung optimiert
- Import für weitere Licht-Eigenschaften hinzugefügt
Engine
- Rendering
- Texturansatz auf Sky-Shader behoben
- Auf die neueste Slug-Bibliothek aktualisiert
- Schatten-Bug behoben, da die interne Schattenanzahl nicht aktualisiert wurde
- Verbesserte GPU-Profiling-Abfragen
- Negative Animationsgeschwindigkeit spielt die Animation jetzt rückwärts ab
- Shader werden jetzt asynchron kompiliert für noch schnellere Ladezeiten
- Unterstützung für UASTC-Kompression
- Animations-Engine für kommende Features umgestellt
- Verschiedene seltene Abstürze aufgrund von Zugriffe außerhalb des Arraybereichs systematisch behoben
- Licht-“Attenuation” wurde zugunsten einer intuitiveren “Intensity” entfernt
- Phong
- Ambientes Element wird jetzt ermittelt, indem die Umgebungsfarbe mit dem Diffuse-Element multipliziert wird
- Diffuse Farbe wird jetzt mit der Diffuse-Textur multipliziert
- Vertex-Farbe wird jetzt mit Diffuse-Textur und Farbe multipliziert
- Standard Lichtabstandsmodell ist jetzt ein Standardfall mit invers quadratischem Abfall (altes Verhalten ist veraltet, aber noch durch ein Feature-Kontrollkästchen verfügbar)
- Einfaches
TONE_MAPPING
-Feature hinzugefügt
- Flat
- Vertex-Farbe wird jetzt mit Farbe und Textur multipliziert
- CPU-Zeiten des Texture Streamings optimiert
- Verschiedene seltene Abstürze beim Texture Streaming behoben
- Mehr Profilsektoren zum Profiler hinzugefügt
Runtime
- PWA: Verschiedene Dateien, die nicht vom Service Worker für die Offline-Nutzung zwischengespeichert wurden, behoben
- Möglichen Absturz im Profiler behoben
- Eingabetyp “Head” behoben
- Vollständig verbrauchte .bin-Dateidaten werden jetzt nach dem Laden verworfen, was die Speichernutzung verbessert
- Es ist jetzt möglich, mehrere Instanzen der Engine auf einer einzelnen Webseite zu verwenden
- Maximaler verfügbarer WebAssembly-Speicher auf 512 MB gesenkt für eine bessere Debugging-Erfahrung und ältere iOS-Hardwarekompatibilität
- Das WebAssembly ist jetzt richtig modularisiert, um die Verwendung mit jedem anderen WebAssembly-Modul zu ermöglichen
- Resize wird jetzt durch
ResizeObserver
behandelt
JavaScript API
- TypeScript
@property.<type>
-Decorator hinzugefügt, um konfigurierbare Eigenschaften direkt im Klassenkörper zu definieren- API vollständig in TypeScript neu geschrieben
PhysXComponent.group
,PhysXComponent.block
und viele weitere fehlende Eigenschaften hinzugefügtXR.currentReferenceSpace
,XR.currentReferenceSpaceType
undXR.referenceSpaceForType
hinzugefügtXR
undWonderlandEngine.xr
hinzugefügt, um Zugriff auf WebXR-bezogene Zustände zu ermöglichen- Eine große Anzahl neuer automatisierter Tests hinzugefügt
- Einen neuen
Color
-Eigenschaftstyp hinzugefügt - equals() Methoden für Mesh, Material, Texture, Animation und Skin hinzugefügt
LightComponent.setColor
hinzugefügt_wl_nextUpdate
und_wl_nextFrame
hinzugefügt, um automatisiertes Testen von Komponenten zu ermöglichen- Verbleibende
LightComponent
-Eigenschaften hinzugefügt LightComponent.color
gibt jetzt nur 3-Elemente für RGB zurück- Laufzeit- und API-Versionskompatibilitätsprüfungen hinzugefügt
onRegister
hinzugefügt, um beim Registrieren einer Komponente zusätzliches Verhalten auszuführen- Der gesamte globale Status der API wurde entfernt
- Benutzerdefinierte Komponenten sind jetzt Klassen:
export class CustomComponent extends Component
AnimationComponent.state
gibt nun die korrekten Enumerationswerte zurückObject3D.lookAt()
und sein Verhalten in der Dokumentation klargestellt- Klonen von Komponenten mit
Object3D.addComponent(type, otherComponent)
behoben Component.destroy()
zerstört nur noch, entfernt aber keine Komponenten mehr von ObjektenRayHit.objects
-Elemente sind für ungenutzte Indizes nichtnull
- Standardparameter werden konsistent mit dem Editor angewendet
onXRSupported
-Callback entfernt, daWonderlandEngine.arSupported
undWonderlandEngine.vrSupported
jetzt ab Start der Anwendung verfügbar sindMaterial.shader
inMaterial.pipeline
umbenannt- Callback-Arrays (
onSceneLoaded
,onXRSessionStart
, …) durch eine neueEmitter
-Klasse ersetzt onXRSessionStart
ist jetzt einRetainEmitter
, der sofort ausgelöst wird, wenn eine XR-Sitzung bereits läuft.AnimationComponent.animation
gibt nun ordnungsgemäßnull
zurück, wenn nicht gesetztComponent.onDestroy
wird nun aufgerufen, wenn eine neue Szene geladen wirdObject
ist jetztObject3D
, um das Überschatten des eingebauten JavaScript-Typs zu vermeidenScene.load()
undScene.append()
sind jetztasync
Translation
Funktionen inPosition
umbenannt, um Verwechslungen mitTransform
Funktionen zu vermeiden
Komponenten
- Alle Komponenten in Klassen umgewandelt
- Einige Komponenten in TypeScript umgewandelt
- Trail-Komponente hinzugefügt
- Plane-Detection-Komponente hinzugefügt
- Anchor-Komponente hinzugefügt
- cursor-target:
add*Function
zugunsten vononClick
,onHover
,onUnhover
,onMove
Event-Emittern veraltet
Bekannte Probleme
- Eingabe über WebXR Emulator-Erweiterungen funktioniert nicht
- Fehlende benutzerdefinierte Komponenten können auf Windows eine Packaging-Schleife verursachen