Xenolith
Открытый кроссплатформенный игровой движок для разработки игр на настольных и мобильных платформах.
Ключевые идеи Stappler Xenolith:
Золотая середина
Движок для игр среднего класса (не AAA), со средними требованиями по качеству графики. Не CryTech и UE5, а эффективная средняя рабочая лошадка.
Передовые технологии
Используем только современную технологическую базу. Устаревшие подходы не берём.
Удобство разработки
За счёт современных технологий упрощаем разработку и оптимизацию игр.
Наш подход
Клонируем и упрощаем технологии вроде Lumen и Nanites, в первую очередь, для упрощения жизни разработчикам игр, так как они удобнее в использовании, чем предшествующие. При этом, делаем их вычислительно эффективными, не требующими чрезмерных ресурсов. Затем, строим движок и средства разработки вокруг них. В разработке мы отталкиваемся прежде всего от возможностей мобильных устройств, предполагая, что там основная аудитория.
Высокопроизводительная 2D-графика
Основной принцип - перенос максимально возможной части работы на GPU. Частицы, анимации, трансформации, текстурные атласы, поиск коллизий - всё на GPU с минимальным участием CPU.
  • Современный Vulkan
    Не поддерживаем устаревшие устройства, за счёт чего поддерживаем наиболее современные техники работы с графикой.
  • Эффективная многопоточность
    Используем максимум из того, что может дать система, все доступные потоки системы, все доступные очереди Vulkan.
  • Расширяемый вариант RenderGraph
    Эффективное построение асинхронного графического конвейера, автоматическое вычисление эффективного пути рендеринга с параллельным (за счёт многопоточности) выполнением задач. Работает не через линеаризацию графа (как в Unity, Unreal 4, других движках, вынужденных поддерживать однопоточные API), а data-driven: путь рндеринга зависит от того, какие данные предоставлены раньше, чтобы как можно раньше начать работу.
  • Эффективный стриминг текстур и данных
    За счёт использования многопоточности на уровне очередей и семейств очередей Vulkan. Даёт возможность для создания бесшовных больших миров с динамической загрузкой-выгрузкой текстур на ходу.
  • Вычисления на GPU
    Возможность использовать вычислительные блоки Vulkan как в RenderGraph, так и для отдельных операций (физика, стратегическая и ИИ-логика)
  • Аналог Lumen
    Использование SDF-эффектов, в том числе, в качестве основного механизма освещения.
  • Эффективный тесселятор для векторной графики
    Позволяет напрямую использовать векторные объекты в играх, без предварительной растеризации или трансформации в меши.
  • Максимальный охват платформ
    Все технологии поддерживаются на настольных и мобильных платформах
  • В разработке:
    • Совмещённая система анимаций и частиц на GPU (упрощённый аналог Nanites).
    • Автоматическое упрощение векторных элементов по LOD.
    • Создание Acceleration structure (словаря рёбер) на основе работы векторного тесселятора для операций рейкастинга и поиска коллизий на GPU.
Данные и сетевой код
  • Поддержка работы с базами данных
    Встроенный в движок эффективный интерфейс к локальным БД на базе sqlite (примерно как в движке Larian). Подходит для работы с данными больших миров, для сохранения игр, и подобного. Для разработчиков этот же интерфейс работает с PostgreSQL, для совместной разработки уровней с использованием удалённой БД.
  • Скриптовые модули на WebAssembly
    • Любой язык, компилируемый в Wasm (включая подмножество Javascript) может быть языком скриптов. Универсальный ABI (бинарный интерфейс к функциям движка) реализуется через WIT.
    • Интерпретатор WASM с поддержкой максимально доступного числа оптимизаций (tail-call, SIMD, расширенное управление памятью)
    • Модули wasm могут быть дополнительно скомпилированы под целевую платформу, так, что их скорость исполнения не будет отличаться от нативной (скрипты с минимумом накладных расходов, только на песочницу).
    • (в разработке) поддержка современных интерфейсов WASI для Wasm, включая wasi-threads (позволяет создавать потоки из скриптов, как в Godot).
  • Работа с сервером
    • Механизм самообновления и синхронизации данных с сервером.
    • (в разработке) Сетевой код на базе протокола QUIC (и HTTP/3 как надстройки). Скорость UDP + гарантия доставки пакетов, решает проблему плохого качества связи, характерную для мобильных устройств.
  • Один код
    Единая кодовая база для клиента и сервера. Реализация всего проекта на одном фреймворке.
Команда проекта
  • Катунцев Роман
    Ведущий разработчик
  • Рыбников Виталий
    Разработчик
  • Немчинов Михаил
    Тестировщик
  • Муканин Дмитрий
    Менеджер, технический писатель
При поддержке
  • Фонда содействия развитию малых форм предприятий в научно-технической сфере
Made on
Tilda