Doomba


Minha sala foi para o inferno.

Meu conversor Noesis agora tem um script do Roomba. Ele monitora o Roomba e armazena dados de rastreamento, o que permite visualizar esses dados de várias maneiras diferentes, incluindo, é claro, transformá-los em um cartão aleatório para DOOM.

Seria ótimo ter tempo para fazer isso até o 25º aniversário da DOOM, mas aconteceu e passou e eu ainda estava esperando a compra do Roomba 980 no eBay. A idéia surgiu em novembro, quando minha esposa e eu estudamos diferentes aspiradores de pó robóticos. Descobri que nas novas versões do Roomba SLAM é implementado de maneira bastante qualitativa, então me perguntei quais dados podem ser obtidos e o que pode ser feito com eles.

Logo percebi que tinha uma oportunidade conveniente de servir ao Lorde das Trevas, gerando uma legião de algoritmos perversos e aplicando-os em uma das melhores obras criadas em seu nome. Ao mesmo tempo, poderei lançar um trocadilho diabólico destinado a derrotar a humanidade. Então, o fruto do meu trabalho está pronto. Veja uma criatura chamada DOOMBA - uma meia-cabra, uma meia-script com suporte binário nativo para as partes mais caras do código, que sacrificarei em vez do meu primogênito nesta maravilhosa véspera de Natal.


Fluxo de trabalho DOOMBA

Voltar ao inferno nunca foi tão fácil!


Para usar o DOOMBA e o restante da nova funcionalidade do Roomba, você precisa fazer o download do Noesis mais recente. Vá para plugins opcionais \ python e copie o arquivo tool_roomba.py para plugins \ python. No menu Ferramentas do conversor Noesis, você verá um novo item “Roomba Tracker”. Ative-o para abrir a interface do Roomba Tracker.


Interface do rastreador Roomba

A interface permite que você verifique automaticamente a LAN em busca de robôs do Roomba (é necessário ativar a transmissão UDP) e exibe instruções para receber uma senha do Roomba. Após receber o IP Roomba e configurar as credenciais, você pode iniciar o rastreamento. Ao iniciar o rastreamento, você será solicitado a salvar o arquivo .noeroomba. Se você decidir salvá-lo, após a conclusão do rastreamento, esse arquivo conterá todos os dados úteis.

Eu testei apenas com o Roomba 980, por isso não posso garantir a compatibilidade com outros dispositivos Roomba. No entanto, mesmo se você não tiver um dispositivo compatível, poderá usar o arquivo .noeroomba do diretório Noesis de cenas e brincar com o DOOMBA e outros recursos relacionados ao Roomba.

Depois de gerar o arquivo .noeroomba (ou pegar o arquivo finalizado), vá para ele exibindo arquivos Noesis. Você terá novos itens de menu de contexto com o botão direito do mouse com uma opção de tipo de arquivo:


Novos itens de menu de contexto do Roomba

A opção NoeRoomba Merger é útil para combinar vários arquivos .noeroomba. Às vezes, ao rastrear, a conexão é perdida ou deve ser interrompida, porque o Roomba é recarregado entre as sessões. Isso significa que você pode optar por gerar vários arquivos .noeroomba e depois combiná-los.

Selecionar o item DOOMBA iniciará a interface principal do DOOMBA para gerar DOOM PWAD a partir do arquivo .noeroomba selecionado:



Se você deixar o valor "Seed" 0, o nível será gerado independentemente. Caso contrário, se você selecionar o valor que mais lhe convém, poderá salvá-lo e usá-lo novamente, além de definir outras opções. Todas as opções acima se referem à localização de inimigos / objetos. O script em si foi escrito para simplificar a criação de novos tipos de objetos, além de adicionar suporte para outros jogos baseados em DOOM, alterando o ID da COISA. No entanto, se você não gosta muito de experimentar, pode simplesmente ajustar os valores disponíveis na interface. Você também pode alterar as listas de texturas de piso / teto / parede e, se carregar DOOM IWAD no Noesis, verá que todos os nomes de texturas estão ordenadamente listados no Data Viewer.

No canto inferior direito, existem muitas outras opções que afetam o processo de geração e simplificação da geometria. As opções na seção Avançado, se configuradas incorretamente, podem estragar tudo muito seriamente, porque eu não as testei particularmente e não verifiquei a validade dos valores no lado do motor. No entanto, outras opções também podem prejudicar seriamente; portanto, se você não tiver certeza, não altere os valores padrão. Lembre-se também de que a interface não protege contra restrições padrão de DOOM no campo de visplane, objetos etc.

Como bônus, adicionei a ferramenta Image ao NoeRoomba, que só é ativada quando a variável ENABLE_TEST_FUNCTIONS em tool_roomba.py está definida como True. Ele permite gerar arquivos .noeroomba a partir de arquivos de imagem regulares, fornecendo uma maneira simples e eficiente de converter uma imagem em um cartão DOOM aleatório. Não posso prometer que meus algoritmos maliciosos projetados para cartões do Roomba não falharão se você fornecer todos os tipos de dados aleatórios, mas no caso das imagens que selecionei, o sistema lidou muito bem:


KOMBAAAT MORTAL!

Espero que você goste desta ferramenta. Ele definitivamente me trouxe muito prazer! Alguém pode dizer que não faz sentido, mas no meu coração há uma crença de que o Lorde das Trevas apagará essas pessoas da face da Terra e as aprisionará em um universo de fogo eterno do inferno, e lendas serão compostas por seus sofrimentos.

Isso já foi mencionado nas notas do script, mas direi novamente que a biblioteca dorita980 foi útil para partes relacionadas ao protocolo Roomba. Eu o usaria diretamente, mas o Node.js é um desastre completo. Gostaria também de agradecer a Rafael Quine pelo antigo código nodebuilder, incluído nesta versão como parte da funcionalidade DOOMBA. Foi um dos poucos construtores de nó que encontrei que não foram corrompidos pela GPL.

Source: https://habr.com/ru/post/pt434284/


All Articles