Релиз 1.0.0

Релиз 1.0.0

Найдите полный список изменений ниже.

Wonderland Engine 1.0.0 — это создание прочного фундамента для будущих версий:

Интегрируя NodeJS и esbuild для сборки, нам удалось сделать все проекты на основе NodeJS, при этом сохраняя удобство предыдущего внутреннего сборщика. Мы упростили процесс обмена компонентами как npm пакеты как никогда прежде.

Мы переписали JavaScript API на TypeScript. Даже если вы продолжите использовать JavaScript для своих проектов, вы заметите, что ваша среда разработки (IDE) стала предлагать более интеллектуальные предложения благодаря этому. Но тогда вы пропустите такие новые функции, как:

1@property.string('Hello TypeScript!')
2message!: string;

С переписыванием мы создали тщательный набор тестов и исправили большое количество ошибок. Читайте все о новом API в нашем блоге “Wonderland Engine 1.0.0 JavaScript Migration”.

Для рендеринга мы внесли важные изменения, такие как адаптация модели освещения нашего дефолтного шейдера, чтобы использовать более интуитивную настройку intensity, заменив attenuation. Эти изменения прокладывают путь к замечательным функциям рендеринга в будущем.

Редактор Wonderland является сердцем рабочего процесса разработки в Wonderland Engine. Мы добавили новую экспериментальную функцию для запуска вашего проекта непосредственно на устройствах Android, например, автономные VR браузеры, настраивая пересылку портов для вас.

Наконец, открытый веб позволяет вам охватить широкую аудиторию. Не только совместимость с устройствами, но и язык может стать барьером. Мы добавили инструменты, которые помогут вам перевести ваши проекты и охватить еще более широкую аудиторию.

Найдите полный список изменений ниже.

Изменения, нарушающие совместимость 

Поскольку мы очень заботимся о поддержке обратной совместимости, у нас нечасто имеется возможность вносить кардинальные изменения. С переходом на основную версию у нас появилась редкая возможность навести порядок и сделать все правильно.

Итак, мы провели тщательную работу, но привлекли к этому и сообщество! Ваши любимые библиотеки уже обновлены и готовы к работе с новой версией.

Вот несколько примеров изменений, которые мы внесли, и как мы пришли к ним. Мы рады узнать, что вы думаете о результате.

Пример: .getTranslationWorld() и .getTransformationWorld() опасно похожи. Даже при использовании автозаполнения в вашей IDE, вы можете не осознавать, что используете неправильную функцию. Вместо этого мы теперь используем “Position” вместо “Translation”, чтобы описать положение объекта.

Пример: старая API сохраняла все в глобальном объекте WL. Это усложняло встраивание Wonderland Engine в другие библиотеки или запуск нескольких экземпляров на одной странице. Теперь, когда экземпляры Wonderland Engine обернуты в класс WonderlandEngine, вы имеете полный контроль над тем, как и когда их создавать.

Список изменений 

Редактор

  • Добавлен Benchmarking view
  • Добавлен Localization view для помощи в переводе WebXR опытов
  • Добавлен JavaScript макрос WL_EDITOR, который установлен в true, когда редактор собирает компоненты
  • Добавлен ползунок значения альфа к выбору цвета
  • Добавлен выбор между ETC1S (меньше, по умолчанию) и UASTC (высокое качество) для сжатия изображений
  • Добавлены дефолтные значения для свойств Sky Material colorStop
  • Добавлено выпадающее меню устройств для запуска непосредственно на подключенных устройствах Android вместо локального (перенаправление портов настраивается автоматически)
  • Упаковка: Удалены неиспользуемые SVG-изображения кнопок VR и AR
  • Windows: Исправлены случайные сообщения об ошибках из-за наблюдения за файлами
  • Компонент анимации с пустыми анимациями теперь неактивен во время выполнения
  • Автоматически определяет компоненты из скриптов и npm пакетов
  • Исправлена редкая ошибка, когда компонент, добавленный в редакторе, мог возвращать undefined во время выполнения
  • Исправлено случайное затемнение всего интерфейса при внесении различных изменений в проект
  • Исправлено поведение Gizmo при вращении на объектах с неравномерно масштабируемыми предками
  • Исправлены сбои при переключении проектов
  • Исправлено повторное размещение некоторых FBX файлов
  • Исправлены сбои и ошибки при импорте некоторых FBX файлов
  • При повторном размещении дорожки, для которых не найдено новой цели, теперь удаляются
  • Все значения альфа для цветовых свойств теперь по умолчанию установлены в 1.0
  • Значения отрицательного отступа текстового компонента теперь можно установить
  • Удален устаревший пакетировщик JavaScript в пользу стандартного “esbuild” пакетировщика
  • Удалена настройка “8thwallToken” в пользу указания в скрипте точки входа
  • Материалы текста теперь имеют миниатюры
  • Шрифты теперь имеют миниатюры
  • CLI
    • Исправлена команда –import, не создающая сцену
    • Токены были добавлены как более безопасный метод передачи учетных данных в редактор для упаковки на CI
    • Добавлен фреймворк для тестирования производительности
  • Linux
    • Исправлено наблюдение за файлами
    • Исправлены состояния клавиш-модификаторов
  • Views
    • Asset Browser: Удаленные файлы теперь перемещаются в системную корзину вместо постоянного удаления
    • Asset Browser: Рабочие директории для приложений по умолчанию, запускаемых двойным щелчком, теперь имеют корневую папку проекта
    • Console: Состояния чекбоксов Error, Warning, Info теперь сохраняются для каждого проекта
    • Console: Исправлен горизонтальный скроллинг
    • Project Settings: Исправлено значительное замедление при изменении порта сервера редактора
    • Properties: Исправлена вставка поворотов Эйлера
    • Resources: Добавлен горизонтальный скроллинг для обеспечения полной читаемости таблиц даже на меньших экранах
    • Profiler: Улучшено, какие секции профиля включены по умолчанию
  • Импорт сцены
    • Оптимизирована обработка сетки
    • Добавлен импорт для более широкого набора свойств света

Движок

  • Рендеринг
    • Исправлена текстурная шов на Sky шейдере
    • Обновлено до последней версии Slug Library
  • Исправлена ошибка затемнения из-за того, что количество внутренних теней не было обновлено
  • Улучшены запросы профилирования GPU
  • Отрицательная скорость анимации теперь проигрывает анимацию в обратном направлении
  • Шейдеры теперь компилируются асинхронно для еще более быстрой загрузки
  • Поддержка сжатия UASTC
  • Переключен механизм анимации для предстоящих функций
  • Систематически исправлены различные редкие сбои из-за выхода за границы массива
  • Свет “attenuation” был удален в пользу более интуитивного “intensity”
  • Phong
    • Термин Ambient теперь вычисляется путем умножения цвета окружения на диффузный термин
    • Диффузный цвет теперь умножается на диффузную текстуру
    • Цвет вершины теперь умножается на диффузную текстуру и цвет
    • Модель расстояния по умолчанию для света теперь стандартная обратная квадратичная зависимость (старое поведение устарело, но еще доступно через поле с флажком)
    • Добавлена базовая функция TONE_MAPPING
  • Flat
    • Цвет вершины теперь умножается на цвет и текстуру
  • Оптимизировано время работы ЦП для Streaming Textures
  • Исправлены различные редкие сбои Streaming Textures
  • Добавлено больше областей профиля к Profiler

Время выполнения

  • PWA: Исправлены различные файлы, не кэшируемые рабочей службой для оффлайн-использования
  • Исправлен потенциальный сбой в Profiler
  • Исправлен тип ввода “Head”
  • Полностью использованные .bin файлы данные теперь удаляются после загрузки, улучшая использование памяти
  • Теперь возможно использовать несколько экземпляров движка на одной веб-странице
  • Урезан максимальный доступный объем памяти WebAssembly до 512 МБ для лучшего опыта отладки и совместимости с более старым оборудованием iOS
  • WebAssembly теперь правильно модульная, что позволяет использовать с любым другим модулем WebAssembly
  • Изменение размера теперь обрабатывается через ResizeObserver

JavaScript API

  • TypeScript
    • Добавлен декоратор @property.<type> для определения настраиваемых свойств непосредственно в теле класса
    • Полностью переписан API на TypeScript
  • Добавлены PhysXComponent.group, PhysXComponent.block и многие другие отсутствующие свойства
  • Добавлены XR.currentReferenceSpace, XR.currentReferenceSpaceType и XR.referenceSpaceForType
  • Добавлены XR и WonderlandEngine.xr для доступа к состоянию связанному с WebXR
  • Добавлено огромное количество новых автоматизированных тестов
  • Добавлен новый тип свойства Color
  • Добавлены методы equals() для Mesh, Material, Texture, Animation и Skin
  • Добавлен LightComponent.setColor
  • Добавлены _wl_nextUpdate и _wl_nextFrame для обеспечения автоматизированного тестирования компонентов
  • Добавлены оставшиеся свойства LightComponent
  • LightComponent.color теперь возвращает только 3 элемента для RGB
  • Добавлены проверки совместимости версий времени выполнения и API
  • Добавлен onRegister для выполнения дополнительных действий при регистрации компонента
  • Все глобальные состояния API были удалены
  • Пользовательские компоненты теперь классы: export class CustomComponent extends Component
  • Исправлено AnimationComponent.state, возвращающее некорректные значения перечисления
  • Исправлено Object3D.lookAt() и разъяснено его поведение в документации
  • Исправлено клонирование компонентов с Object3D.addComponent(type, otherComponent)
  • Исправлено Component.destroy(), которое только уничтожало, но не удаляло компоненты из объектов
  • Исправлены элементы RayHit.objects, не равные null для неиспользуемых индексов
  • Сделаны параметры по умолчанию, чтобы они применялись согласованно с редактором
  • Удален обратный вызов onXRSupported, поскольку WonderlandEngine.arSupported и WonderlandEngine.vrSupported теперь доступны с самого начала приложения
  • Переименовано Material.shader в Material.pipeline
  • Заменены массивы обратных вызовов (onSceneLoaded, onXRSessionStart, …) новым классом Emitter
  • onXRSessionStart теперь является RetainEmitter, который сохраняет обратные вызовы и запускает их немедленно, если XR сессия уже запущена.
  • AnimationComponent.animation теперь правильно возвращает null, когда не установлен
  • Component.onDestroy теперь вызывается при загрузке новой сцены
  • Object теперь Object3D, чтобы избежать затенения встроенного типа JavaScript
  • Scene.load() и Scene.append() теперь async
  • Функции Translation переименованы в Position, чтобы избежать путаницы с функциями Transform

Компоненты

  • Все компоненты переведены на классы
  • Некоторые компоненты переведены на TypeScript
  • Добавлен компонент следа (trail component)
  • Добавлен компонент обнаружения плоскости
  • Добавлен компонент якоря (anchor component)
  • cursor-target: Устарело add*Function в пользу генераторов событий onClick, onHover, onUnhover, onMove

Известные проблемы

  • Ввод через расширения WebXR Emulator не работает
  • Отсутствующие настраиваемые компоненты могут вызвать зацикливание упаковки на Windows
Last Update: May 1, 2023

Будьте в курсе.