Indeck은 VR 내에서 VR을 개발하기위한 독립형 3D 코딩 환경 애플리케이션입니다. 이 프로젝트는 LUA로 작성되었으며 Lövr 프레임 워크 위에 실행됩니다. Lövr와 Indeck은 일반적으로 접근 가능한 모든 VR 플랫폼을 타겟팅 할 수 있습니다.

Indeck 환경의 주요 이점은 LUA 코드와 해석 된 3D 런타임 간의 단단한 반복 루프입니다. 코드가 즉시 실행 런타임과 동기화되면 개발이 더 매력적이고 생산적이됩니다. VR 헤드셋을 지속적으로 이륙 할 필요가 없으면 약간의 마찰이 제거됩니다.
Focus 플랫폼은 연결된 Bluetooth 키보드가있는 Oculus Quest입니다. Quest는 데스크탑 개발을위한 소비자 플랫폼 및 대상으로 간주되지만 Indeck은 독립형 VR 개발 장치로 전환합니다. Indeck은 Lövr를 실행할 수 있고 키보드가 부착 된 다른 환경에서 작동합니다.
현재 단계에서 Indeck은 기능적이고 유용하지만 몹시 사용자 친화적이지는 않습니다. VR 프로토 타이핑 및 기존 프로젝트 조정에 정기적으로 사용합니다. 이 프로젝트는 안정적인 API가있는 기능적으로 완성 된 IDE가 아니라 간단하고 확장 가능한 개발 환경이어야합니다.
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 구문 강조 표시로 텍스트 편집기의 표준 (최소값) 구현이며, 대부분 숭고한 텍스트를 모델로합니다. 편집자는 대화 상자, 팝업 또는 모달없이 키보드 단축키에 의해 완전히 구동됩니다. 마우스 및 VR 컨트롤러 상호 작용은 사용자 프로젝트에서 제어 처리와의 충돌을 피하기 위해 완전히 결석합니다.
참고 : 편집자는 폐쇄시 변경 사항을 저장하도록 요구하지 않으며 구원받지 않은 진행 상황이 손실됩니다.
사용자는 Ctrl+Shift+Enter를 눌러 커서 아래에서 한 줄의 LUA 코드를 실행할 수 있습니다. 코드는 현재 활성 편집기의 맥락에서 실행됩니다. 실행 결과는 편집기 위에 상태 라인에 나타납니다. 예를 들어, 편집기에서 return 2 + 2 입력하고 해당 라인을 실행하면 "OK> 4"를 상태 줄에 넣어 실행 상태 및 결과를 나타냅니다.
이 코드를 실행하는이 메커니즘은 개발 환경과 상호 작용하는 직접적인 방법으로 사용됩니다. 파일 구조를 탐색하고 실행할 프로젝트를 선택하는 것은 준비된 명령이있는 라인을 선택하고 Ctrl+Shift+Enter 로 실행하여 수행됩니다. 이 명령은 디렉토리 목록을 기반으로 자동 구성됩니다.
바로 가기 :
Ctrl+Shift+Enter 편집 된 줄을 단일 라인 LUA 청크로 실행합니다Ctrl+Shift+Home 현재 헤드 오리엔테이션 앞에 편집기를 배치합니다.Ctrl+P 새로운 편집기를 만듭니다Ctrl+W 현재 편집기를 닫습니다 (구원받지 않은 변경 사항이 있더라도!)Ctrl+Tab 선택합니다Ctrl+O 현재 편집기에서 열기위한 파일을 나열합니다 (구원받지 않은 변경 사항을 폐기하십시오!)Ctrl+S 열린 파일에 변경 사항을 저장합니다Ctrl+H 별도의 편집기에서 LOVR API 문서를 엽니 다Ctrl+Shift+S 현재 편집기를 세션 파일에 저장합니다Ctrl+Shift+L 세션 파일에서로드 된 편집기를 엽니 다Ctrl+Shift+P 1 초 동안 코드 프로파일러를 실행하고 별도의 편집기에서 보고서를 표시합니다.Ctrl+down 10 줄을 아래로 점프합니다Ctrl+up 10 줄을 점프합니다 사용자 프로젝트가로드되면 콜백 기능 (Draw, Update ...)이 프로젝트가 독립형 모드로 실행 된 경우와 같이 실행됩니다.
코드를 변경하고 사용자 프로젝트를 실행하면 런타임 오류가 발생할 수 있습니다. 그런 다음 해석 환경은 프로젝트 실행을 중단하고 모든 오픈 편집자는 계속 작동합니다. 오류 지점에서 스택 추적이 포함 된 새로운 편집기 창이 나타납니다. 오류가 처리되면 Ctrl+R을 사용하여 처음부터 사용자 프로젝트를 실행하십시오.
프로젝트를 실행하기 전에 디렉토리는 / 루트에 장착됩니다. 이를 통해 사용자 코드는 자산을로드 할 때 상대 경로를 계속 사용할 수 있습니다. 예를 들어 Bark.ogg가 사용자 프로젝트 디렉토리에 존재하는 경우 lovr.data.newSound('bark.ogg') 사용하여로드 할 수 있습니다.
Lövr 프로젝트를 독립적으로 그리고 Indeck 환경 내에서 실행하는 것 사이의 불일치를보고하십시오.
수정 된 코드로 실행중인 환경을 업데이트하는 두 가지 방법이 있습니다. 기본 방법은 애플리케이션의 완전한 재시작입니다. 모든 파일의 모든 코드 변경이 다시로드됩니다. 주요 단점은 모든 편집기 컨텍스트가 손실되었다는 것입니다 (파일, 스크롤 위치, 변경). 재시작하기 전에 편집기 세션을 수동으로 저장하십시오. 사용자 프로젝트에 많은 초기화 코드 (자산로드 또는 생성)가 있으면 재시작이 느려질 수 있습니다.
다른 다시로드 방법은 부분 핫 스왑으로, 사용자 프로젝트의 main.lua 소스 코드 파일을 다시 실행하도록 강요합니다. 사용자 프로젝트 만 다시로드되므로 편집기 컨텍스트가 보존됩니다. 이것은 올바르게 사용하면 빠르고 효율적인 반복주기를 허용합니다. 핫 스왑 방법은 앱 로직을 설계하거나 셰이더 코드를 수정하거나 상수를 조정할 때 매우 효과적 일 수 있습니다.
열렬한 런타임의 어떤 부분에 영향을 미치는지에 대한 규칙이 있습니다. 이것들은 로딩 모듈을위한 표준 LUA 메커니즘 일뿐입니다. 직장에는 추가적인 '마법'이 없습니다. 여전히 그들은 일반적인 오류의 원천이며 이해하는 것이 중요합니다. Indeck 자체는 이전에로드 된 버전을 잊어 버리도록 강요하여 main.lua 소스 파일을 다시 실행합니다. package.loaded['main'] = nil . 이전 실행 중에 다른 모듈이 이미 'd에서 main.lua 에서 'D가 require 하다면, 이전 실행 중에 다시 처리되지 않으며 이미로드 된 버전이 재사용됩니다. 하위 모듈을 핫 스왑에 동적으로 다시로드하도록하려면 require(module_name) main.lua 전에 package.loaded['module_name'] = nil 이를 통해 핫 스왑 중에 사용자 프로젝트의 어떤 부분을 다시 실행 해야하는지 세밀하게 제어 할 수 있으며 핫 스왑에서 응용 프로그램 데이터/상태의 일부를 보존 할 수 있습니다.
편집기가 루트 디렉토리에 파일을 나열 할 때 다른 사용자 프로젝트간에 전환 할 수있는 옵션도 제공합니다. 이것은 같은 환경 내에서 새로운 프로젝트를 실행할 것입니다. 로드 된 프로젝트가 글로벌 상태를 변경하면 종종 잘 작동하지만 미묘한 문제를 일으킬 수 있습니다. 환경이 깨끗한 지 확인하기 위해 프로젝트를 전환하기 전에 앱을 다시 시작하는 것이 좋습니다.
바로 가기 :
Ctrl+Shift+R 응용 프로그램을 다시 시작합니다Ctrl+R Reloads (핫 스왑) main.lua 의 사용자 모듈Esc 는 OS로 나옵니다 Lövr은 모든 파일 이름에서 프로젝트를 실행하는 것을 지원하지만 Indeck은 main.lua 파일 내부의 디렉토리 실행을 지원합니다. 사용자 프로젝트에는 projects 라는 파일 또는 폴더가 포함되어서는 안됩니다. 이러한 엔티티는 사용자 프로젝트 디렉토리가 저장 디렉토리의 루트에 장착되면 "프로젝트"디렉토리와 충돌합니다. indeck-session.lua 는 내부적으로 사용되는 또 다른 예약 된 파일 이름입니다.
사용자 프로젝트의 conf.lua 파일은 처리되지 않습니다. Indeck은 다양한 프로젝트의 요구를 충당 해야하는 자체 다목적 구성을 제공하려고합니다. Indeck 내에서 실행될 때 프로젝트에 문제가있는 경우 문제를여십시오.
코드 편집기에는 검색 기능 및 UNDO 명령과 같은 기본 기능이 없습니다.
문서를 계속 찾기 위해 헤드셋을 지속적으로 제거하지 않고도 전체 응용 프로그램을 효율적으로 개발하려면 Lövr 프레임 워크에 대한 실무 지식이 필요합니다. 공식 문서만큼 읽을 수는 없지만 Indeck 환경에는 기능 및 매개 변수 설명을 나열하는 모든 Lövr API 파일이 포함됩니다. API 문서는 Ctrl+H 키를 눌러 액세스 할 수 있습니다.
PC에서 원격으로 Quest에서 Indeck 앱을 시작하려면 adb shell am start org.indeck.app/org.indeck.app.Activity 명령을 실행하십시오. Quest의 Termux Shell 내에서 실행되도록 동일한 라인을 조정할 수 있습니다 (Termux는 Quest에서 Git을 실행할 수도 있음).