Indeck é um aplicativo de ambiente de codificação 3D independente para o desenvolvimento da VR a partir do VR. O projeto está escrito em Lua e é executado no topo da estrutura Lövr. Lövr e Indeck podem atingir todas as plataformas VR comumente acessíveis.

O principal benefício do ambiente Indeck é um loop de iteração apertado entre o código Lua e o tempo de execução 3D interpretado. Quando o código é instantaneamente sincronizado com o tempo de execução de execução, o desenvolvimento se torna mais envolvente e produtivo. Não ter que decolar constantemente e colocar o fone de ouvido VR também elimina um pouco de atrito.
A plataforma de foco é o Oculus Quest com o teclado Bluetooth conectado. Embora a missão seja considerada uma plataforma de consumidores e um alvo para o desenvolvimento da área de trabalho, o Indeck o transforma em uma unidade de desenvolvimento de VR independente. Indeck funciona em qualquer outro ambiente que possa executar o Lövr e possui o teclado anexado.
No estágio atual, o Indeck é funcional e útil, mas não muito fácil de usar. Eu o uso regularmente para prototipagem de VR e ajustes de projetos existentes. O projeto deve ser um ambiente de desenvolvimento simples e extensível, não um IDE polido de recurso com API estável.
A Indeck consiste em um editor de código Lua renderizado em 3D e o chicote para a execução do projeto do usuário. Várias instâncias do editor podem ser abertas e posicionadas livremente no espaço. Um único editor é aberto no início e pode ser usado para carregar e executar qualquer projeto Lövr. Quando o projeto for executado, ele começará a ser executado e o arquivo de origem principal será aberto no editor de código. Como o usuário edita o código do projeto, eles podem ocasionalmente recarregar o tempo de execução para reexecionar o código modificado. Tanto a recarga parcial quanto a reinicialização completa do ambiente são suportados. Se o usuário introduzir um erro em seu código, o tempo de execução do projeto será pausado e o usuário terá a chance de corrigir rapidamente o erro com a ajuda de um rastreamento de pilha e reiniciar a execução.
Por design, o ambiente do Indeck só pode acessar arquivos dentro do diretório "salvar" do LOVR. Qualquer projeto Lövr existente deve funcionar pronto para uso dentro do ambiente Indeck, uma vez copiado para o local correto:
/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 O editor de código é bastante padrão (se mínimo) implementação do editor de texto com destaque da sintaxe Lua, principalmente modelado após o texto sublime. O editor é acionado completamente por atalhos de teclado sem diálogos, pop -ups ou modais. As interações do controlador de mouse e VR estão completamente ausentes para evitar confrontos com o manuseio de controle em projetos de usuários.
Nota: O editor nunca pede para salvar as mudanças no fechamento e qualquer progresso não salvo é perdido
O usuário pode executar uma única linha de código Lua sob o cursor pressionando o Ctrl+Shift+Enter . O código é executado no contexto do editor atualmente ativo. O resultado da execução aparece na linha de status na parte superior do editor. Por exemplo, digitar return 2 + 2 no editor e executando essa linha colocará "OK> 4" na linha de status, indicando o status da execução e o resultado.
Esse mecanismo de execução da linha de código é usado como uma maneira direta de interagir com o ambiente de desenvolvimento. Navegar a estrutura do arquivo e escolher um projeto para executar é feito selecionando uma linha com comando preparado e executando -o com Ctrl+Shift+Enter . Esses comandos são construídos automaticamente com base nas listagens de diretórios.
Atalhos:
Ctrl+Shift+Enter Executa a linha editada como um pedaço Lua de linha únicaCtrl+Shift+Home coloca o editor em frente à orientação atual da cabeçaCtrl+P cria um novo editorCtrl+W fecha o editor atual (mesmo com alterações não salvas!)Ctrl+Tab seleciona o próximo editorCtrl+O lista os arquivos para abertura no editor atual (decantes alterações não salvas!)Ctrl+S salva alterações no arquivo abertoCtrl+H abre documentação da API LoVR em um editor separadoCtrl+Shift+S armazena os editores atuais em um arquivo de sessãoCtrl+Shift+L abre editores carregados de um arquivo de sessãoCtrl+Shift+P executa o Profiler de código por duração de um segundo e mostra o relatório em editor separadoCtrl+down salta 10 linhas para baixoCtrl+up pula 10 linhas para cima Quando o projeto do usuário é carregado, suas funções de retorno de chamada (desenhar, atualizar ...) serão executadas como faria se o projeto fosse executado no modo independente.
Alterar o código e executar o projeto do usuário pode resultar em um erro de tempo de execução. O ambiente de interpretação parará de executar o projeto, enquanto quaisquer editores abertos continuarão funcionando. Um novo painel editor aparecerá contendo o rastreamento da pilha no ponto de erro. Quando o erro é tratado, use o Ctrl+R para executar o projeto do usuário desde o início.
Antes de executar o projeto, seu diretório é montado em / raiz. Isso permite que o código do usuário continue usando caminhos relativos ao carregar ativos, como normalmente faria ao desenvolver fora do ambiente Indeck. Por exemplo, se houver bark.ogg no diretório do projeto do usuário, o lovr.data.newSound('bark.ogg') pode ser usado para carregá -lo.
Por favor, relate quaisquer discrepâncias entre a execução do projeto Lövr de forma independente e dentro do ambiente Indeck.
Existem dois métodos de atualização de um ambiente em execução com código modificado. O método básico é uma reinicialização completa do aplicativo. Todas as alterações de código em todos os arquivos serão recarregadas. A principal desvantagem é que todo o contexto do editor é perdido (arquivos abertos, posições de rolagem, alterações); portanto, salve manualmente a sessão do editor antes de reiniciar. O reinício também pode ser lento se o projeto do usuário tiver muito código de inicialização (carregando ou gerando ativos).
O outro método de recarga é a troca parcial, que força o arquivo de código-fonte main.lua do projeto do usuário a ser reexecionado. Somente o projeto do usuário é recarregado, para que o contexto do editor seja preservado. Isso permite ciclos de iteração rápidos e eficientes, se usados corretamente. O método de troca a quente pode ser muito eficaz ao projetar a lógica do aplicativo, modificar o código do shader ou ajustar constantes.
Existem algumas regras sobre quais partes do tempo de execução serão afetadas ao fazer o HotSwapeing. Estes são apenas os mecanismos LUA padrão para os módulos de carregamento; Não há 'mágica' adicional no trabalho. Ainda assim, eles são uma fonte comum de erros e importantes para entender. O INDECK por si só apenas reexecionará o arquivo de origem main.lua , forçando o tempo de execução a esquecer a versão carregada anteriormente: package.loaded['main'] = nil . Se outro módulo já foi require 'D do main.lua durante a execução anterior, ele não será processado novamente e a versão já carregada será reutilizada. Para forçar o sub-módulo a ser dinamicamente recarregado na troca de hot, insira o package.loaded['module_name'] = nil no arquivo main.lua antes do comando require(module_name) . Isso permite o controle de granulação fina sobre qual partes do projeto do usuário devem ser reexecutadas durante a troca quente, e partes dos dados/estado do aplicativo podem ser preservadas em toda a troca.
Quando o editor estiver listando arquivos no diretório raiz, ele também apresentará opções para alternar entre diferentes projetos de usuário. Isso executará o novo projeto no mesmo ambiente; Geralmente funciona bem, mas pode causar problemas sutis se os projetos carregados mudarem o estado global. Recomenda -se reiniciar o aplicativo antes de alterar os projetos para garantir que o ambiente esteja limpo.
Atalhos:
Ctrl+Shift+R reinicia o aplicativoCtrl+R Reloads (Swap Hot) O main.lua do Módulo de UsuárioEsc sai para o sistema operacional Enquanto o Lövr suporta a execução do projeto a partir de qualquer nome de arquivo, o Indeck suporta apenas a execução de diretórios com o arquivo main.lua dentro. Os projetos de usuário não devem conter projects de arquivo ou pasta. Essa entidade entraria em conflito com o diretório "Projetos" assim que o diretório do projeto do usuário for montado na raiz do diretório salvo. O indeck-session.lua é outro nome de arquivo reservado usado internamente.
O arquivo conf.lua do projeto do usuário não será processado. Indeck tenta fornecer sua própria configuração versátil, que deve cobrir as necessidades de diferentes projetos. Se o seu projeto tiver problemas ao ser executado no Indeck, abra um problema.
O editor de código não possui alguma funcionalidade básica, como o recurso de pesquisa e o comando desfazer.
É necessário um conhecimento prático da estrutura do Lövr para desenvolver com eficiência aplicativos completos, sem tirar o fone de ouvido constantemente para procurar a documentação. Embora não seja tão legível quanto a documentação oficial, o ambiente Indeck inclui todos os arquivos da API Lövr que listam funções e explicações dos parâmetros. Os documentos da API estão acessíveis pressionando a tecla Ctrl+H .
Para iniciar o aplicativo Indeck no Quest remotamente do PC, execute o adb shell am start org.indeck.app/org.indeck.app.Activity Command. A mesma linha pode ser ajustada para executar no shell do Termux no Quest (o Termux também pode executar o Git no Quest).