00NVC Maps

Введение

Актуальность и проблема

У кого проблема. У тех, кто делает небольшие игры и прототипы без 3D-художника. Это инди-разработчики и участники гейм-джемов, level-дизайнеры небольших студий, авторы настольных макетов и диорам, преподаватели и студенты геймдев-курсов. В 2025 году в Steam вышло больше 18 тысяч игр [1]. В Fortnite за 2024 год число авторов карт выросло с 24 до 70 тысяч [2]. У Roblox к концу 2025 года в программе выплат было больше 35 тысяч авторов [3].

В чём проблема. Человек хочет сделать уровень с реального места: угла стола, куска пола, макета. Телефон с датчиком глубины LiDAR снимает такое место в метрах [4], [5]. Но приложения-сканеры отдают модель для просмотра, а не уровень [6]–[9]. По ней нельзя сразу пустить персонажа. Опору под ноги, упрощение модели, размеры и проверку проходимости делают вручную в 3D-редакторе и движке. Без навыков 3D-моделирования реальное место в прототип не попадает, а с навыками на него уходит много ручной работы. Плохая съёмка при этом выглядит как удачная: сканер выдаёт модель всегда, и брак становится виден только в движке.

Почему сейчас. LiDAR есть во всех iPhone Pro начиная с iPhone 12 Pro и в iPad Pro [5], [10]. Формат glTF 2.0 открывают браузер и популярные игровые движки [11]. Число людей, которые делают игры и карты, растёт [1]–[3]. Методы, на которых строится автоматическая сборка, — объёмное слияние глубины, построение поверхности и упрощение сетки — давно отработаны [12]–[15]. Не хватает продукта, который соберёт их в путь «снял — прошёл по уровню».

Решение. NVC Maps — сервис, который превращает короткую съёмку участка на iPhone с датчиком глубины в игровой уровень. Приложение на телефоне записывает и проверяет съёмку, сервер собирает из неё видимую модель и отдельную опору для персонажа, а в браузере по карте можно пройти до того, как забрать её в игровой движок. Непригодная съёмка получает отказ с причиной.

Цель и задачи

Цель. Сократить путь от съёмки реального участка до проходимого игрового уровня до одного обхода телефоном, без ручной доводки геометрии.

Задачи.

  1. Выявить, где в нынешнем пути от съёмки до уровня теряются время и данные.
  2. Определить, чего не хватает существующим сканерам и исследовательским решениям, чтобы сразу получить проходимый уровень.
  3. Задать измеримые показатели успеха с базовыми и целевыми значениями.
  4. Описать, что делает пользователь, что проверяет система и в каких случаях она отказывает в сборке.
  5. Определить набор эталонных съёмок и проверок, по которым принимается результат, а также правовые ограничения и риски.

Объект и предмет

Объект — процесс создания игрового уровня по реальному месту: от съёмки до первой проверки уровня в игровом движке.

Предмет — автоматизируемая часть этого процесса: проверка съёмки, сборка карты с отдельной опорой для персонажа, проверка проходимости в браузере и выдача пакета для движков.

Методы

Требования собраны так:

  • Анализ документов. Техническое задание и чертёж пайплайна проекта, спецификация glTF 2.0 [11], документация ARKit и RoomPlan [16], регламент GDPR [17], WCAG 2.1 [18].
  • Обзор литературы. Научные работы по реконструкции поверхности, упрощению сеток и превращению видео в интерактивные сцены [4], [12]–[15], [19]–[22].
  • Бенчмаркинг аналогов. Сравнение девяти решений по открытым описаниям, документации и ценам [6]–[9], [16], [19], [23], [24] (раздел 1.3).
  • Прото-персона. Персона построена по результатам анализа документов и рынка. Интервью с пользователями не проводились; проверка персоны на реальных людях вынесена в риски (раздел 2.9).

Техники описаны по BABOK v3 [25]: анализ документов, бенчмаркинг и анализ рынка, моделирование процессов, user stories, приоритизация MoSCoW.

Термины

Термин Что значит
Съёмка (capture) Запись участка на телефоне: видео, позы камеры, служебные данные и кадры глубины одним файлом
Позы камеры Где был телефон и куда смотрел в каждый момент записи
Видимая модель (visual mesh, map.glb) Та часть карты, которую видит игрок
Способ построения Как сервер получил поверхность; для пригодной съёмки — слияние глубины LiDAR
Опора (collision mesh, collision.glb) Невидимая упрощённая модель, по которой ходит персонаж
Пакет карты Пять файлов: видимая модель, опора, манифест, границы, отчёт
Задание (job) Одна сборка карты на сервере со статусом «в очереди», «собирается», «готово» или «отказ»
Отказ Ответ сервиса «карту собрать нельзя» с текстом причины вместо карты
Эталонная съёмка (reference capture) Одна из четырёх сохранённых съёмок для приёмки: две пригодные и две непригодные
Проверка ходьбой Проход персонажем по опоре в браузере до выдачи пакета