Введение
Актуальность и проблема
У кого проблема. У тех, кто делает небольшие игры и прототипы без 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 с датчиком глубины в игровой уровень. Приложение на телефоне записывает и проверяет съёмку, сервер собирает из неё видимую модель и отдельную опору для персонажа, а в браузере по карте можно пройти до того, как забрать её в игровой движок. Непригодная съёмка получает отказ с причиной.
Цель и задачи
Цель. Сократить путь от съёмки реального участка до проходимого игрового уровня до одного обхода телефоном, без ручной доводки геометрии.
Задачи.
- Выявить, где в нынешнем пути от съёмки до уровня теряются время и данные.
- Определить, чего не хватает существующим сканерам и исследовательским решениям, чтобы сразу получить проходимый уровень.
- Задать измеримые показатели успеха с базовыми и целевыми значениями.
- Описать, что делает пользователь, что проверяет система и в каких случаях она отказывает в сборке.
- Определить набор эталонных съёмок и проверок, по которым принимается результат, а также правовые ограничения и риски.
Объект и предмет
Объект — процесс создания игрового уровня по реальному месту: от съёмки до первой проверки уровня в игровом движке.
Предмет — автоматизируемая часть этого процесса: проверка съёмки, сборка карты с отдельной опорой для персонажа, проверка проходимости в браузере и выдача пакета для движков.
Методы
Требования собраны так:
- Анализ документов. Техническое задание и чертёж пайплайна проекта, спецификация 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) | Одна из четырёх сохранённых съёмок для приёмки: две пригодные и две непригодные |
| Проверка ходьбой | Проход персонажем по опоре в браузере до выдачи пакета |