Xenolith

Открытый кроссплатформенный игровой движок для разработки игр на настольных и мобильных платформах.

Ключевые идеи Stappler Xenolith

Золотая середина

Движок для игр среднего класса (не AAA), со средними требованиями по качеству графики. Не CryTek и 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.

Работа с сервером

  • Механизм самообновления и синхронизации данных с сервером.
  • (в разработке) Сетевой код на базе протокола QUIC (и HTTP/3 как надстройки). Скорость UDP + гарантия доставки пакетов, решает проблему плохого качества связи, характерную для мобильных устройств.

Один код

Единая кодовая база для клиента и сервера. Реализация всего проекта на одном фреймворке.

Команда проекта

  • Катунцев Роман

    Катунцев Роман

    Ведущий разработчик

  • Рыбников Виталий

    Рыбников Виталий

    Разработчик

  • Немчинов Михаил

    Немчинов Михаил

    Тестировщик

  • Муканин Дмитрий

    Муканин Дмитрий

    Менеджер, технический писатель

Партнёры

При поддержке

Фонд содействия инновациям

Фонда содействия развитию малых форм предприятий в научно-технической сфере