Skip to content
Voltar ao Blog
Jogue Minecraft no Navegador com prismarine-web-client

Jogue Minecraft no Navegador com prismarine-web-client

ice
ice
@ice
Updated
2 visualizações
TL;DR:prismarine-web-client é um cliente Minecraft de código aberto baseado em navegador que se conecta a servidores reais via proxy WebSocket. Construído em mineflayer e prismarine-viewer, funciona em Chrome ou Firefox sem instalação do jogo.
<! - gh-polish-start - >
GitHub · Projeto da comunidade Minecraft

prismarine-web-client (PrismarineJS/prismarine-web-client)

Cliente web Minecraft executado no seu navegador

Marque com estrela no GitHub ↗
⭐ 539 estrelas💻 JavaScript📄 MIT
<! - gh-polish-end - >

Já quis entrar em um servidor Minecraft em um Chromebook da escola, em um laptop emprestado ou em qualquer máquina que não tenha o jogo instalado? prismarine-web-client resolve exatamente esse problema. Ele executa um cliente Minecraft real dentro de uma aba do navegador e se conecta a servidores Minecraft reais, sem necessidade de instalação local por parte do jogador.

O que é prismarine-web-client

Este não é um clone 2D simplificado ou alguma aproximação da era do Flash do Minecraft. É um cliente baseado em navegador genuíno construído em duas bibliotecas PrismarineJS bem estabelecidas: mineflayer manipula o protocolo Minecraft e a lógica do cliente, enquanto prismarine-viewer renderiza o mundo 3D. Juntos, eles fazem algo que realmente funciona.

O projeto tem 539 estrelas no GitHub com licença MIT, o que significa que é gratuito para usar, fazer fork e modificar como quiser. Foi escrito em JavaScript, que é parte do motivo pelo qual executá-lo em um navegador é possível em primeiro lugar. O ecossistema PrismarineJS existe há anos e alimenta muitas ferramentas de automação comunitária e bots, então este não é um experimento de fim de semana com uma cadeia de dependências quebrada.

Há uma demonstração ao vivo hospedada no GitHub Pages. Abra-a em Chrome ou Firefox em um desktop agora mesmo e conecte-se a um servidor sem instalar nada. É o caso de uso mais simples e, honestamente, uma boa maneira de entender com o que você está lidando antes de se preocupar com hospedagem própria.


A Tecnologia Por Trás (E Por Que É Inteligente)

É aqui que fica genuinamente interessante. O protocolo do Minecraft é executado sobre TCP, e os navegadores simplesmente não podem abrir soquetes TCP brutos. Então, como é que um cliente baseado em navegador se conecta a um servidor Minecraft real?

Aba do navegador mostrando um mundo Minecraft 3D renderizado por prismarine-web-client com blocos e entidades de jogadores
Aba do navegador mostrando um mundo Minecraft 3D renderizado por prismarine-web-client com blocos e entidades de jogadores

A resposta é uma camada de proxy que o pacote executa localmente. Seu navegador se conecta a este proxy via WebSocket. O proxy traduz esse tráfego WebSocket em TCP e encaminha tudo para o servidor Minecraft que você está direcionando. Do ponto de vista do servidor, é apenas outro cliente se conectando normalmente. Ele não tem ideia de que você está fazendo isso de uma aba do navegador.

Essa arquitetura é inteligente porque o código do cliente é executado principalmente em seu navegador (a lógica do mineflayer, a renderização 3D), enquanto o proxy manipula a única coisa que os navegadores fundamentalmente não podem fazer. É uma divisão clara. O proxy é leve e agrupado com o pacote npm, então não há nada extra para configurar separadamente.

Vale a pena notar: alguém precisa executar esse proxy em algum lugar. A demonstração hospedada tem um em execução no servidor. Para hospedagem própria, ele é executado em sua própria máquina.


Configurando Você Mesmo

Se você tiver Node.js instalado, toda a configuração leva cerca de um minuto. Instale o pacote globalmente e inicie:

Aba do navegador mostrando um mundo Minecraft 3D renderizado por prismarine-web-client com blocos e entidades de jogadores
Aba do navegador mostrando um mundo Minecraft 3D renderizado por prismarine-web-client com blocos e entidades de jogadores
<! - gh-code-start - >
code
npm install -g prismarine-web-client
prismarine-web-client
<! - gh-code-end - >

Depois disso, abra http://localhost:8080 em seu navegador. Você verá uma tela de conexão pedindo um endereço de servidor e um nome de usuário. Digite esses e clique em conectar.

Algumas coisas para entender antes de começar. Isso inicia o servidor proxy em sua máquina local. Qualquer pessoa nessa máquina pode usá-lo via localhost, mas não será acessível por outros a menos que você exponha a porta. Se você quiser compartilhá-lo com amigos na mesma rede local, você precisaria vincular ao seu IP de LAN e fazer com que se conectem ao endereço de sua máquina na porta 8080. Possível, mas requer conhecimento básico de rede.

Para desenvolvimento ou se você quiser investigar o código, clone o repositório e execute:

<! - gh-code-start - >
code
npm install
npm start
<! - gh-code-end - >

Isso inicia o express e webpack em modo de observação. Salve um arquivo, ele reconstruirá em alguns segundos e você atualiza para ver as alterações. O projeto também expõe alguns globais úteis no objeto window para depuração, incluindo bot, viewer e worldView. Se você abrir o Chrome DevTools e digitar bot.chat('test') no console, você pode usar o chat do jogo diretamente de lá. É um detalhe legal para qualquer pessoa que queira explorar como as coisas funcionam.


O Que Funciona Agora

A versão 1.6.0 manipula bem o loop principal para exploração. Os blocos renderizam corretamente, o movimento funciona em tempo real, mobs e outros jogadores aparecem, e você pode colocar e quebrar blocos. Para exploração casual ou construção leve sem o cliente Java completo, é genuinamente funcional.

Aba do navegador mostrando um mundo Minecraft 3D renderizado por prismarine-web-client com blocos e entidades de jogadores
Aba do navegador mostrando um mundo Minecraft 3D renderizado por prismarine-web-client com blocos e entidades de jogadores

O que ainda não está lá: gerenciamento de inventário, baús e contêineres, sons e a maioria das interações de combate. O roteiro do projeto lista todos esses como planejados. Então, se você está imaginando um jogo de sobrevivência completo com crafting, encantamento e comércio com aldeões, a versão 1.6.0 não vai cobrir isso.

Não é uma crítica. Renderizar um mundo Minecraft em tempo real dentro de uma aba do navegador, conectado a um servidor ativo, é tecnicamente impressionante por si só. A diferença entre 'cliente de exploração funcional' e 'paridade completa do cliente Java' é enorme, e o que eles entregaram é sólido para o que se propõe fazer.

Um uso prático enquanto você já está no modo navegador: se você encontrar blocos que não reconhece, a ferramenta de pesquisa de blocos no Minecraft.How é útil para buscas rápidas sem precisar mudar para outro aplicativo.


Coisas Que Te Peguem Desprevenido

Compatibilidade de versão é a armadilha mais importante. prismarine-web-client funciona com versões específicas do protocolo Minecraft através da camada mineflayer abaixo. Se o servidor ao qual você está se conectando executar uma versão que não é suportada, você obterá um erro de conexão sem explicação clara. Verifique o GitHub do projeto para saber quais versões a versão atual suporta, porque essa lista muda conforme a equipe PrismarineJS atualiza o suporte ao protocolo.

Aba do navegador mostrando um mundo Minecraft 3D renderizado por prismarine-web-client com blocos e entidades de jogadores
Aba do navegador mostrando um mundo Minecraft 3D renderizado por prismarine-web-client com blocos e entidades de jogadores

Alguns outros problemas comuns que vale a pena saber antecipadamente:

  • Autenticação de servidor premium. Servidores em modo online (aqueles que verificam sua conta contra Mojang/Microsoft) são mais complexos de se conectar através dessa configuração. A demonstração e a maioria das implantações auto-hospedadas funcionam melhor com servidores em modo offline, onde você escolhe qualquer nome de usuário e se conecta diretamente.
  • Desempenho em áreas movimentadas. Este é um renderizador 3D real executado em uma aba do navegador. Terreno denso, grande contagem de entidades e servidores lotados vão forçar o CPU do seu navegador notavelmente mais do que áreas abertas com poucas entidades.
  • Apenas navegadores de desktop. Chrome e Firefox em desktop são as plataformas confirmadas. O suporte ao navegador móvel não existe e, dadas as demandas de complexidade do esquema de controle e renderização, não virá em breve.
  • Mantenha o proxy em execução. Se você está auto-hospedando e o processo morre, a página do navegador não pode se conectar a nada. Se você usa isso regularmente, configurá-lo como um serviço de fundo persistente vale o passo extra.

Uma coisa que eu tinha errado antes de tentar: assumi que isso só funcionava com servidores LAN minúsculos ou pessoais. Ele se conecta a qualquer servidor que o proxy possa alcançar via TCP, incluindo servidores públicos maiores, desde que a versão do Minecraft corresponda e a autenticação não seja um bloqueador.


Vale Sua Hora Ou Não

Depende inteiramente do que você precisa. Como uma solução 'jogue Minecraft em qualquer lugar sem instalar o cliente', funciona dentro de seus limites atuais. Exploração e interação básica de blocos são genuinamente utilizáveis. Modo de sobrevivência completo, ainda não.

Aba do navegador mostrando um mundo Minecraft 3D renderizado por prismarine-web-client com blocos e entidades de jogadores
Aba do navegador mostrando um mundo Minecraft 3D renderizado por prismarine-web-client com blocos e entidades de jogadores

Para administradores de servidor querendo uma maneira leve de entrar em seu servidor a partir de uma máquina sem o jogo instalado, isso é realmente bem prático. Sem launcher, sem solicitação de conta em servidores em modo offline, apenas abra um navegador e conecte. Verificar se uma construção parece correta ou se os mobs estão gerando corretamente não requer a experiência completa do cliente.

E enquanto você já está no navegador, se você está procurando por uma skin para usar em um servidor, o navegador de skins no Minecraft.How tem uma coleção sólida para explorar.

As principais alternativas que vale a pena conhecer: Eaglercraft é o projeto Minecraft de navegador mais reconhecido, embora tenha seu próprio histórico e questões de compatibilidade em torno dele. Para visualização pura do mundo sem jogar, prismarine-viewer como uma biblioteca independente vale a pena conhecer separadamente. E mineflayer, em que este projeto se baseia, é o preferido para programação de bots Minecraft em vez de jogo manual.

Para um projeto de código aberto licenciado pelo MIT fazendo algo tecnicamente tão interessante, 539 estrelas parece estar passando despercebido. Se o caso de uso se adequa, os cinco minutos para experimentar são bem gastos.

<! - gh-polish-start - > <! - gh-polish-end - >