Indeck является автономным приложением 3D -кодирования для разработки VR из VR. Проект написан в Lua и работает на вершине Lövr Framework. Lövr и Indeck могут нацелиться на все широко доступные VR -платформы.

Основным преимуществом среды Indeck является жесткий цикл итерации между кодом LUA и интерпретированным 3D -средней. Когда код мгновенно синхронизируется со временем выполнения, разработка становится более привлекательной и продуктивной. Не нужно постоянно взлетать и надевать гарнитуру VR также устраняет некоторое трение.
Фокус -платформа - Oculus Quest с подключенной клавиатурой Bluetooth. Хотя Quest считается потребительской платформой и целью для разработки настольных компьютеров, Indeck превращает ее в автономную единицу разработки VR. Indeck работает в любой другой среде, которая может запускать Lövr и прикреплена клавиатура.
На текущем этапе Indeck функциональна и полезна, но не очень удобна для пользователя. Я регулярно использую его для прототипирования VR и настраиваю существующие проекты. Проект состоит в том, чтобы быть простой и расширяемой средой разработки, а не полной полированной IDE с стабильным API.
Indeck состоит из 3D-рендерированного редактора LUA и жгута для выполнения пользовательского проекта. Несколько экземпляров редактора могут быть открыты и свободно расположены в космосе. Один редактор открыт на старте и может использоваться для загрузки и выполнения любого проекта Lövr. Когда проект будет выполнен, он начнет работать, а основной исходный файл будет открыт в редакторе кода. Поскольку пользователь редактирует код проекта, он может иногда перезагрузить время выполнения, чтобы повторно рассредоточить модифицированный код. Поддерживается как частичная перезагрузка, так и полная перезагрузка среды. Если пользователь вводит ошибку в своем коде, время выполнения проекта будет приостановлено, и пользователь получит возможность быстро исправить ошибку с помощью трассировки стека и перезапустить выполнение.
По дизайну среда Indeck может получить доступ только к файлам в каталоге LOVR «Сохранить». Любой существующий проект Lövr должен работать в рамках среды Indeck, как только он скопирован в правильное место:
/sdcard/Android/data/org.indeck.app/files/projects/Users/<user>/Library/Application Support/LOVR/indeck/projects/home/<user>/.local/share/LOVR/indeck/projectsC:Users<user>AppDataRoamingLOVRindeckprojects Редактор кода довольно стандартная (если минимальная) реализация текстового редактора с выделением синтаксиса LUA, в основном моделируемой после превосходного текста. Редактор полностью управляется сочетаниями клавиатуры без каких -либо диалогов, всплывающихчасныхчанетов или модалов. Взаимодействие контроллера мыши и виртуальной реальности полностью отсутствует, чтобы избежать столкновений с управлением управлением в пользовательских проектах.
Примечание. Редактор никогда не просит сохранить изменения при закрытии, и любой неспасенный прогресс теряется
Пользователь может выполнить одну строку кода LUA под курсором, нажав Ctrl+Shift+Enter . Код выполняется в контексте в настоящее время активного редактора. Результат выполнения появляется в строке состояния в верхней части редактора. Например, ввод return 2 + 2 в редакторе и выполнение этой строки поместит «OK> 4» в строку статуса, указывая на статус выполнения и результат.
Этот механизм выполнения строки кода используется как прямой способ взаимодействия с средой разработки. Просмотр структуры файла и выбор проекта для выполнения выполняется путем выбора строки с подготовленной командой и выполнения ее с помощью Ctrl+Shift+Enter . Эти команды автоматически построены на основе списков каталогов.
Ярлыки:
Ctrl+Shift+Enter выполняет отредактированную линию в виде однострочной LUA ChunkCtrl+Shift+Home помещает редактор перед текущей ориентацией головыCtrl+P создает новый редакторCtrl+W закрывает текущего редактора (даже с неспасенными изменениями!)Ctrl+Tab выбирает следующий редакторCtrl+O перечисляет файлы для открытия в текущем редакторе (отбрасывает неспасенные изменения!)Ctrl+S сохраняет изменения в открытом файлеCtrl+H открывает документацию API LOVR в отдельном редактореCtrl+Shift+S хранит текущие редакторы в файл сеансаCtrl+Shift+L открывает редакторы, загруженные из файла сеансаCtrl+Shift+P запускает профилировщик кода в течение одной секунды и показывает отчет в отдельном редактореCtrl+down прыгает 10 линий внизCtrl+up прыгает 10 линий Когда пользовательский проект загружен, его функции обратного вызова (Draw, Update ...) будут выполнены, как и если проект будет выполнен в автономном режиме.
Изменение кода и запуск пользовательского проекта могут привести к ошибке времени выполнения. Затем среда интерпретации перестанет запускать проект, в то время как любые открытые редакторы будут продолжать функционировать. Появится новая панель редактора, содержащая трассировку стека в точке ошибки. Когда ошибка рассматривается с использованием CTRL+R для запуска пользовательского проекта с самого начала.
Перед выполнением проекта его каталог включен в / root. Это позволяет коду пользователя продолжать использовать относительные пути при загрузке активов, как это обычно делало бы при разработке вне среды Indeck. Например, если Bark.ogg существует в каталоге Project Project The lovr.data.newSound('bark.ogg') может использоваться для его загрузки.
Пожалуйста, сообщите о любых несоответствиях между управлением проектом Lövr независимо и в среде Indeck.
Существует два метода обновления работой среды с модифицированным кодом. Основным методом является полный перезапуск приложения. Все изменения кода во всех файлах будут перезагружены. Основным недостатком является то, что весь контекст редактора потерян (открытые файлы, позиции прокрутки, изменения), поэтому обязательно сохраните вручную сеанс редактора перед перезапуском. Перезапуск также может быть медленным, если пользовательский проект имеет много кода инициализации (загрузка или генерация активов).
Другим методом перезагрузки является частичный горячий своп, который заставляет пользовательский файл исходного кода main.lua . Только пользовательский проект перезагружен, поэтому контекст редактора сохраняется. Это обеспечивает быстрые и эффективные итерационные циклы, если правильно используется. Метод горячего обмена может быть очень эффективным при разработке логики приложения, изменяя код шейдера или настройку констант.
Есть некоторые правила о том, какие части времени выполнения будут затронуты при горяче. Это просто стандартные механизмы LUA для загрузочных модулей; Там нет дополнительной «магии» на работе. Тем не менее, они являются общим источником ошибок и важны для понимания. Indeck само по себе только повторно предъявляет исходный файл main.lua , заставив время выполнения забыть о ранее загруженной версии: package.loaded['main'] = nil . Если другой модуль уже require «d от main.lua во время предыдущего исполнения, он не будет обработан снова, и уже загруженная версия будет повторно использована. Чтобы заставить подмодуль быть динамически перезагруженным при горячем подмене, вставьте package.loaded['module_name'] = nil line в файле main.lua до его команды require(module_name) . Это допускает мелкозернистый контроль над тем, какие части пользовательского проекта должны быть повторно выполнены во время горячего обмена, а части данных/состояния приложения могут быть сохранены через горячий своп.
Когда редактор перечисляет файлы в корневом каталоге, он также представит параметры для переключения между различными пользовательскими проектами. Это выполнит новый проект в той же среде; Это часто работает хорошо, но может вызвать тонкие проблемы, если загруженные проекты изменят глобальное состояние. Рекомендуется перезапустить приложение перед переключением проектов, чтобы убедиться, что среда чистая.
Ярлыки:
Ctrl+Shift+R перезагружает приложениеCtrl+R Reloads (Hot Swap) main.lua пользовательского модуляEsc выходит в ОС В то время как Lövr поддерживает запуск проекта из любого имени файла, Indeck поддерживает только выполнение каталогов с файлом main.lua внутри. Пользовательские проекты не должны содержать файл или папку с именем projects . Такая сущность столкнется с каталогом «Проекты», как только каталог пользовательского проекта будет установлен на корне каталога сохранения. indeck-session.lua -это еще одно зарезервированное имя файла, используемое внутри.
Файл conf.lua пользовательского проекта не будет обработан. Indeck пытается обеспечить свою универсальную конфигурацию, которая должна охватывать потребности различных проектов. Если у вашего проекта есть проблемы при работе в Indeck, пожалуйста, откройте проблему.
Редактору кода не хватает базовой функциональности, например, функция поиска и команда Undo.
Для эффективного разработки полных приложений необходимы для эффективного разработки полных приложений, не снимая гарнитуру постоянно для поиска документации. Хотя среда Indeck, хотя и не так читаема, как официальная документация, включает в себя все файлы API Lövr, которые перечисляют функции и объяснения параметров. Документы API доступны, нажимая клавишу Ctrl+H .
Чтобы запустить приложение Indeck на Quest удаленно с ПК, запустите команду adb shell am start org.indeck.app/org.indeck.app.Activity . Та же самая строка может быть отрегулирована для работы в рамках Shell Termux на квесте (Termux также может запустить GIT на квесте).