
Descobrindo o Polymer: O Cliente C++ Alternativo do Minecraf
atxi/Polymer
Cliente do Minecraft em desenvolvimento, utilizando C++ e Vulkan.
Ver no GitHub ↗O Polymer é um cliente do Minecraft em C++ que utiliza renderização Vulkan, projetado para visualizar mundos em servidores offline. Além disso, vem com uma câmera de espectador, carregamento de chunks otimizado e suporte ao Minecraft 1.21.4. Se deseja explorar mundos massivos sem os problemas de estouro do cliente vanilla, ou está curioso sobre como clientes alternativos lidam com renderização, vale a pena tentar.
O que Esse Projeto Faz
Aqui está a premissa central: em vez de executar o cliente Java do Minecraft, você lança um executável autônomo que se conecta ao seu servidor e renderiza o mundo usando Vulkan, uma API gráfica moderna. O projeto é escrito integralmente em C++ por um desenvolvedor claramente interessado na otimização de gráficos. No entanto, ele baixa os ativos originais do Minecraft, constrói a geometria do mundo e mostra tudo de uma perspectiva de espectador - voando por volta, olhando para os chunks à medida que carregam.
No momento, é limitado a servidores offline apenas. O modo online está planejado, mas não implementado ainda.
O que torna o Polymer diferente é que não é apenas um lançador ou mod. É uma reescrita de base sobre como a renderização do Minecraft pode funcionar. A versão mais recente (v0.0.5) suporta o Minecraft 1.21.4 e inclui algumas otimizações impressionantes: gráficos de conectividade de chunks para pular blocos ocultos, construção de malhas diferidas até que um chunk entre em vista, e anti-aliasing com multisampling 4x. Na teoria, essas são as otimizações que devem ajudar com o desempenho de renderização em mundos pesados.
Por Que Você Quereria Isso
A resposta honesta? A maioria dos jogadores não precisará do Polymer. Não é uma substituição para o cliente vanilla para jogar em modo de sobrevivência ou criativo. Você não pode quebrar blocos, colocar qualquer coisa, ou interagir com o mundo de forma tradicional. Você está olhando, não construindo.
No entanto, se já tentou abrir um mundo SMP massivo - digamos, algo com 10.000+ edifícios personalizados espalhados por dezenas de chunks - você sabe que o cliente vanilla pode ter dificuldades. O carregamento de chunks trava. A renderização estoura. Não é impossoível jogar, mas não é suave. O Polymer contorna alguns desses problemas usando um pipeline de renderização diferente. Também apeala para quem tem curiosidade sobre programação gráfica: aqui está a prova de que a renderização do Minecraft pode ser completamente reimplementada.
Outro ângulo: se você administra um servidor e deseja capturar screenshots cimáticos ou criar um tour pelo mundo sem as preocupações de desempenho de um jogador em modo de sobrevivência, o design apenas para espectadores do Polymer o torna uma opção leve. Você carrega o mundo, voa por volta, captura as imagens, pronto. Nenhuma modificação de arquivos, nenhuns mods interferindo com as visualizações.
Executando o Polymer
Aqui é onde a curva de aprendizado começa. O Polymer não é um modpack ou um lançador. Você precisa compilar a partir do código-fonte.
No Windows, o processo parece com isso:
git clone https://github.com/atxi/Polymer.git
cd Polymer
git submodule update --init
cmake -B build -S . --preset msvcEm seguida, abra o arquivo `build/polymer.sln` no Visual Studio e compile no modo x64 Release. Você precisará do MSVC 2022 ou Clang instalado, além do CMake 3.28 ou posterior. O executável final fica em `build/Release`.
Compilar shaders requer o SDK do Vulkan (especificamente `glslc`). Baixe-o da LunarG, defina a variável de ambiente `VULKAN_SDK`, então execute `compile_shaders.bat`. Essa é a parte irritante se você não está acostumado com desenvolvimento de gráficos - é um passo de compilação extra que não existe em configurações de jogo típicas.
No Linux, é ligeiramente mais simples, mas requer dependências do sistema primeiro:
sudo apt-get install libglfw3 libglfw3-dev glslang-tools
git clone https://github.com/atxi/Polymer.git
cd Polymer
git submodule update --init
cmake -B build -S .
cd build && makeO executável é gerado em `build/bin`. Execute `compile_shaders.sh` para compilar os shaders.
Antes de iniciar, pegue o arquivo `blocks-1.21.4.json` - disponível na página de releases do GitHub ou gerado executando o Minecraft com o gerador de dados. Coloque-o onde você vai executar o cliente. Na primeira execução, o Polymer baixa os ativos do jogo (texturas, sons, modelos) do servidor de recursos oficial do Minecraft e os armazena localmente em `~/.polymer/` (Linux) ou `%appdata%/Polymer/` (Windows).
Por padrão, o Polymer tenta se conectar ao localhost como usuário 'polymer'. Seu servidor precisa estar no modo offline. Substitua isso com flags de linha de comando:
polymer.exe -u SeuUsername -s 192.168.1.100:25565Um detalhe crítico: você precisa estar no modo espectador no servidor para que os chunks carreguem enquanto voa por volta. Honestamente, se o servidor o coloca no modo de sobrevivência, você verá apenas os chunks que já estavam carregados, o que não é muito útil. Acesse o console do servidor ou use `/gamemode spectator` para corrigir isso.
Recursos Principais a Notar
O gráfico de conectividade de chunks é a otimização de destaque aqui. Renderizadores tradicionais desenham cada face de bloco, mesmo aquelas que você nunca verá (os lados de blocos enterrados dentro de chunks). O Polymer calcula quais chunks são realmente visíveis e salta a geometria para faces internas. Isso reduz o que o GPU tem que processar.
A construção de malhas diferida também é inteligente. Em vez de mesclar chunks no momento em que carregam, o Polymer as constrói apenas quando entram no seu frustum de vista. Para servidores com milhares de chunks, isso economiza memória e ciclos de CPU em chunks que você nunca verá.
O anti-aliasing com multisampling 4x suaviza bordos pontilhados melhor do que as configurações padrão do vanilla, embora isso venha com um custo de desempenho dependendo da sua GPU. As texturas interpoladas e o cronograma de animação são sutis, mas notáveis se você está procurando por coisas como animação de água e fusão de texturas para se sentir cru.
O desempenho variará muito dependendo do seu hardware. Os desenvolvedores testaram principalmente no Windows; o Linux funciona, mas não é altamente otimizado. Se você tiver uma GPU de gama média dos últimos anos, deve ficar bem. Gráficos integrados mais antigos terão dificuldades com distâncias de renderização altas.
Falhas e Limitações
O Polymer é um software de estágio inicial. Espere bugs e recursos faltantes.
Nenhuma física, nenhuma detecção de colisão, nenhuma interação de jogador. Você não pode minerar blocos, colocar blocos, abrir cofres, ou fazer qualquer coisa além de olhar em volta. Se você quiser um cliente alternativo para jogabilidade real, isso não é.
Servidores online não funcionam ainda. Essa é uma limitação rígida - o código não lida com autenticação. Se você usar o Polymer em um servidor online de alguém, será desconectado. Apenas o modo offline com `online-mode=false` no server.properties funciona.
O Windows é a plataforma de desenvolvimento principal. Compilações do Linux funcionam, mas recebem menos testes. O suporte ao Mac não é documentado (o sistema de compilação mira o GLFW, que suporta macOS, mas ninguém confirmou que funciona).
O próprio processo de compilação é capricioso. Se você não está familiarizado com o CMake, arquivos de projeto do Visual Studio ou compilação de shaders, espere passar tempo debugando variáveis de ambiente e dependências faltantes. Isso não é uma instalação de um clique.
Sobre Clientes de Terceiros e Anti-Trapaça
Desinstalar o Polymer é limpo. O executável é independente, e os ativos são armazenados localmente. Exclua o executável e a pasta `~/.polymer/` ou `%appdata%/Polymer/`, e pronto. Nada é injetado em sua instalação do Minecraft vanilla.
Projetos Similares para Conhecer
Se o Polymer o interessou, alguns alternativos existem no espaço. O Minetest é um motor de jogo de voxel inspirado no Minecraft, mas não é o Minecraft em si - é mais um sandbox para construir jogos. O Chunky é uma ferramenta de renderização que cria imagens estáticas de alta qualidade de mundos do Minecraft usando traçado de raios, mas não é em tempo real e não é um cliente. O VoxelMap é um mod que adiciona funcionalidade de minimapa e waypoint ao cliente vanilla, mas é uma sobreposição, não uma reescrita de base.
O Polymer se destaca como um cliente de base C++ com APIs gráficas modernas. Isso é tanto seu apelo quanto sua limitação - menos recursos do que mods, mas potencialmente melhor desempenho e técnicas de renderização mais experimentais.
Se você quer personalizar a aparência do seu personagem enquanto explora, verifique o Criador de Skins do Minecraft - você pode projetar um look único antes de se conectar ao servidor. E se você planeja executar qualquer tipo de comunicação de servidor ou rótulos de construção, o Gerador de Texto do Minecraft torna a criação de texto formatado direta.
Minha Visão
O Polymer é fascinante do ponto de vista técnico. Ver um mundo do Minecraft renderizado por um pipeline completamente diferente é legal, especialmente se você se importa com como os motores de jogo funcionam. As otimizações são reais, o código é limpo, e é um conceito sólido de prova de que o Minecraft poderia ser se abandonasse o Java para o Vulkan.
Para uso real? Diria que vale a pena construir e tentar uma vez, especialmente se você tiver um grande mundo em um servidor local e estiver curioso sobre o desempenho de renderização. Mas não espere que substitua seu cliente principal. É um visualizador, não um jogador, e ainda é áspero nas bordas na v0.0.5. O desenvolvedor claramente está trabalhando nisso, e o suporte ao modo online está vindo, mas ainda não estamos lá.
Se você tiver algumas horas para gastar em compilações e compilação de shaders, e estiver interessado no que APIs gráficas modernas podem fazer pelo Minecraft, vá em frente. Apenas defina expectativas: você está testando software experimental, não usando um cliente alternativo pronto.
atxi/Polymer - MIT, ★135Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.


