3 pontos por GN⁺ 2025-01-01 | 1 comentários | Compartilhar no WhatsApp
  • Arnis é um projeto gratuito e de código aberto que gera mundos para Minecraft Java Edition 1.17+ e Bedrock Edition refletindo geografia, relevo e construções do mundo real
  • O algoritmo de geração processa dados geoespaciais do OpenStreetMap e dados de elevação para reproduzir com mais precisão o terreno e as edificações dentro do Minecraft
  • O usuário pode escolher uma área no mapa com a ferramenta retangular, selecionar um mundo do Minecraft e clicar em Start Generation; também é possível ajustar configurações como escala do mundo, ponto de spawn e geração do interior dos prédios
  • É possível criar mundos no navegador sem instalação ou, para tamanhos de mapa maiores e geração em dispositivos móveis, usar o MapSmith
  • Os únicos canais oficiais de download são arnismc.com e o repositório no GitHub; downloads do Arnis em outros sites são não oficiais e podem ser maliciosos

Mundos de Minecraft criados pelo Arnis

  • Arnis gera mundos de Minecraft que refletem a geografia, o relevo e as construções do mundo real
    • Suporta Minecraft Java Edition 1.17+ e Bedrock Edition
    • É possível transformar regiões reais, como sua cidade natal, grandes metrópoles ou paisagens naturais, em mundos de Minecraft
  • O projeto é uma ferramenta gratuita e de código aberto projetada para lidar com grandes volumes de dados geográficos reais
  • O processo de geração usa em conjunto dados geoespaciais do OpenStreetMap e dados de elevação
    • O objetivo é tornar mais precisa a representação do terreno e das construções no Minecraft

Como usar

  • O usuário pode baixar a versão mais recente ou fazer o build manualmente
  • Na GUI, basta selecionar a área desejada no mapa com a ferramenta retangular, escolher um mundo do Minecraft e clicar em Start Generation
  • As configurações de geração permitem ajustar vários itens
    • Escala do mundo
    • Ponto de spawn
    • Geração do interior dos prédios
  • Se precisar de geração em dispositivos móveis ou de mapas maiores, o MapSmith gera mundos no navegador sem instalação

Documentação e objetivos de desenvolvimento

  • A documentação completa está disponível na GitHub Wiki
    • Explicações técnicas
    • FAQ
    • Diretrizes de contribuição
    • Roadmap
  • Os principais objetivos do projeto são modularidade, desempenho, documentação, usabilidade e suporte multiplataforma
    • A ideia é separar claramente importação de dados, processamento e geração do mundo para melhorar manutenção e extensibilidade
    • Há forte foco em otimização de desempenho para gerar mundos rapidamente
    • Busca-se deixar a estrutura e a lógica mais claras por meio de documentação interna no código
    • O objetivo é oferecer uma experiência fácil de usar para o usuário final
    • A meta é funcionar bem em Windows, macOS e Linux

Build e contribuição

  • O projeto aceita contribuições de todos os níveis, incluindo correções de bugs, melhorias de desempenho, novos recursos e aprimoramentos de documentação
  • O fluxo de contribuição é fazer fork do repositório, aplicar as mudanças e enviar um pull request
  • Um exemplo de build pela linha de comando é o seguinte
    • cargo run --no-default-features -- --terrain --path="C:/YOUR_PATH/.minecraft/saves/worldname" --bbox="min_lat,min_lng,max_lat,max_lng"
  • O build da GUI é executado com o comando abaixo
    • cargo run
  • Usuários de Nix podem executar diretamente assim
    • nix run github:louis-e/arnis -- --terrain --path=YOUR_PATH/.minecraft/saves/worldname --bbox="min_lat,min_lng,max_lat,max_lng"
  • Quando um pull request é mesclado, as mudanças passam a integrar os lançamentos regulares de atualização

Reconhecimento, licença e fontes oficiais

1 comentários

 
GN⁺ 2025-01-01
Opiniões no Hacker News
  • É muito bom que o ecossistema OpenStreetMap ofereça ferramentas maduras que permitem a qualquer pessoa usar dados geoespaciais
    Há mais de 10 anos, criei o maps4cim, um projeto open source de gerador de cidades para Cities in Motion 2, usando dados do OSM para ruas e edifícios e dados NASA SRTM para elevação
    O lado do OSM é muito mais complexo e os dados também mudam todos os dias, mas, se você enviar a mesma consulta para a Overpass API, ainda consegue receber os dados mais recentes no formato esperado
    Já a NASA, em algum momento, fechou o acesso público aos dados SRTM, que eram de domínio público, e os escondeu atrás de um webservice não REST acessível apenas a usuários registrados
    Se os dados não fossem gratuitos e facilmente acessíveis, eu nem teria começado um projeto open source como esse; quando se cria uma barreira de entrada, perdemos todas as boas ferramentas que poderiam ter sido construídas sobre os ombros de gigantes
    Tomara que projetos como o OSM, que colocam em prática o espírito dos dados abertos, ganhem ainda mais força
    1: https://github.com/Klamann/maps4cim
    • Contribuir também é surpreendentemente fácil
      Graças às missões gamificadas do StreetComplete ou ao editor baseado em navegador do osm.org, qualquer pessoa com internet consegue corrigir lugares ao redor em poucos minutos
      Por outro lado, o fato de ainda haver algo a corrigir em qualquer lugar também significa que não há contribuidores suficientes
      O grande problema é que não existe um app de referência que as pessoas usem sempre e no qual acabem encontrando erros, mas isso está mudando aos poucos com o Organic Maps, e ouvi dizer que o estacionamento automático da Tesla também levou novas pessoas a mapear
    • Parece que é possível baixar o dataset SRTM inteiro; fico curioso se isso não resolveria
      https://www.reddit.com/r/gis/comments/qg4b6j/is_it_possible_...
      O Geonames também oferece um serviço de consulta de elevação baseado em SRTM e outros dados: http://www.geonames.org/export/web-services.html
      Mas, se você precisar amostrar uma área ampla em alta resolução, pode esbarrar nos limites da API ou sobrecarregar o serviço
      Ainda assim, isso mostra que é possível um terceiro obter o dataset e oferecer uma API sobre ele
  • Posso recriar meu bairro no Minecraft, mostrar para meu filho de 8 anos e fingir que fui eu que fiz
    Até onde sei, a GPL não tem nenhuma cláusula que proíba criar falsos heróis
    • A GPL não restringe a forma de uso do programa em si, ou seja, isso corresponde à liberdade 0
      Porém há exceções quando a saída inclui partes do próprio código-fonte do programa, como em geradores de lexer/parser, e a licença do GNU Bison traz uma exceção explícita permitindo isso
      O Minecraft tem Redstone e Command Blocks, e as pessoas já criaram coisas como 8086 ou Tetris
      Fico curioso se existiria algum caso-limite em que mundos gerados por esse tipo de ferramenta de geração de mundos fossem contaminados pela GPL
      Pessoalmente, é por esse tipo de motivo que prefiro licenças BSD/MIT. Não quero gastar com advogado para responder a uma pergunta simples como “posso realmente usar este programa?”
  • Seria muito bom se ele também gerasse placas de rua nos cruzamentos
    Eu gostaria de usar isso para ajudar meus filhos a se familiarizarem mais com nosso bairro
    Estou cansado de ficar perguntando o nome das ruas ou onde precisamos virar e, às vezes, até dou instruções completas curva a curva
    Até agora, só nos perdemos algumas vezes
  • O IGN, órgão público francês, também oferece um serviço que gera mapas de Minecraft a partir de lugares reais
    Mas provavelmente não é tão detalhado quanto este projeto
    [0]: https://minecraft.ign.fr/
  • Este projeto parece enfatizar bastante, sempre que tem oportunidade, que foi feito em Rust
    • Há uma explicação dizendo: “decidi portar o projeto para Rust para aprender melhor a linguagem e levar ainda mais longe o desempenho dos algoritmos. Em Python, eu estava me aproximando dos limites de otimização, e as capacidades do Rust possibilitam desempenho e eficiência melhores”
      Como havia uma implementação anterior em Python, parece razoável explicar logo no começo por que esta versão é diferente
    • Como você sabe quem é programador Rust? A própria pessoa te conta
    • Ainda estamos longe da época em que bibliotecas ou aplicações escritas em Java começavam todas com J
      Muitas vezes nem era uma palavra que realmente começava com J; era só colocar J na frente de qualquer nome
    • A essa altura, isso já deveria entrar no guia de estilo do Rust
    • Na prática, o README menciona “Rust” 6 vezes, e metade dessas ocorrências está em um parágrafo de FAQ que explica por que o projeto foi portado de Python para Rust
      O número de menções a Python é quase o mesmo
  • Seria legal haver uma versão que criasse pistas de corrida baseadas em regiões do mundo real, como os jogos mais recentes de Flight Simulator da Microsoft
    • Ou talvez GTA: Auburn, AL
  • Links de referência sobre clima em tempo real, voo, tráfego, cockpit baseado em React, dados GlTF open source do Google Earth e apps de simulador de voo como MSFS e X-Plane: https://news.ycombinator.com/item?id=38437821
    Talvez seja mais fácil distinguir se uma referência de localização, como fala ou (lat,long,game), aponta para uma posição dentro do jogo ou para uma localização virtual no jogo com o mesmo nome

Documentação sobre tiles 3D GlTF do Google Maps https://developers.google.com/maps/documentation/tile/3d-til... diz que, para renderizar os tiles fotorrealistas do Google, é preciso usar um renderizador de 3D Tiles com suporte a atribuição de direitos autorais, e que é possível usar CesiumJS ou Cesium for Unreal
Entre os jogos de código aberto no estilo Minecraft com API Python há o sensorcraft, baseado em pyglet para OpenGL 3D, e que aborda self.add_block(), gravidade, IA, circuitos etc.
Fico curioso se WebGL tem portabilidade melhor que OpenGL e se dá para compilar pyglet para WASM
Pelo que sei, panda3d e godot compilam facilmente para WASM
Como engine de física open source em Python que pode ser útil para clones de Minecraft, existe o Genesis-Embodied-AI/Genesis: “Genesis: A Generative and Universal Physics Engine for Robotics and Beyond” https://news.ycombinator.com/item?id=42457213#42457224
“Approximating mathematical constants using Minecraft” https://news.ycombinator.com/item?id=42319313 também menciona luanti, minetest, mcpi, MCPI-Revival/minecraft-pi-reborn

  • O FlightGear já fazia algo parecido há muito tempo, mas apenas com mapas
  • Curiosamente, meu condomínio não é renderizado, mas os prédios ao redor e a piscina são
    Também verifiquei os dados do OSM, então fica ainda mais estranho
    Por outro lado, a escola do meu filho não fica longe e é renderizada com bastante detalhe
    Investigando mais, parece que aquele prédio é renderizado no OSM como um multipolygon com duas camadas diferentes, enquanto os demais parecem ser renderizados com base em um conjunto de nós
  • Muito legal. A geração dos trilhos do Chicago L parece ter sido um desafio algorítmico considerável
  • Seria bom alinhar o mapa de pontos divulgado pelo Japão com o OpenStreetMap para criar edifícios mais detalhados
    • Fico curioso sobre o link do mapa de pontos