Skip to content
Pular para o conteúdo
Voltar ao Blog
Dragonfly: Construindo Servidores Minecraft Bedrock Personal

Dragonfly: Construindo Servidores Minecraft Bedrock Personal

Alexandru Maftei
Alexandru Maftei
@ice
Atualizado
22 visualizações
TL;DR:Dragonfly é um framework baseado em Go que permite construir servidores Minecraft Bedrock personalizados do zero. Se deseja controle total sobre a mecânica do servidor em vez de ficar limitado por software pré-construído, esta é a biblioteca a aprender. É leve e projetada para desenvolvedores que conseguem programar.
🐉 Projeto Minecraft de código aberto

df-mc/dragonfly

Software de servidor Minecraft Bedrock Edition escrito em Go

⭐ 790 estrelas💻 Go📄 MIT
Ver no GitHub ↗

O que é Dragonfly

Dragonfly é um framework de servidor Minecraft Bedrock escrito em Go. Mas chamar de "servidor" é um pouco enganoso se está acostumado com software de servidor tradicional como Spigot ou Paper. Na verdade é uma biblioteca, um conjunto de ferramentas e blocos de construção que você usa para construir sua própria aplicação de servidor. Você não a instala e imediatamente tem um servidor jogável. Em vez disso, escreve código Go que usa a API do Dragonfly, depois executa esse código para criar qualquer servidor que visualizar.

Isso importa porque inverte o script. Com software de servidor tradicional, você fica confinado ao que os desenvolvedores achavam que você queria fazer. Dragonfly diz: "Aqui está a camada de rede, o tratamento do formato do mundo e a implementação do protocolo. Construa o que precisar em cima disso." Foi projetado para pessoas que querem entregar algo personalizado, não algo pronto para usar.


Quem Deveria Se Importar Com Isso

Se está executando um pequeno SMP com amigos, Dragonfly provavelmente é demais. Use um servidor pré-construído para isso. Mas se está tentando construir algo único, um servidor de sobrevivência com mecânicas de economia personalizada, um mundo criativo com ferramentas de construção especiais, ou uma rede de mini-jogos com regras personalizadas, Dragonfly oferece a base para tornar isso real.

Proprietários de redes que atingiram o limite do que o software de servidor tradicional permite tendem a encontrar o caminho aqui. Desenvolvedores aprendendo como funciona o protocolo de rede do Minecraft também exploram o código-fonte do Dragonfly. Tem 790 estrelas no GitHub. Isso significa que tem uma comunidade real por trás, mas não é comum. Pequeno o suficiente para você realmente reconhecer pessoas no Discord, grande o suficiente para você não estar sozinho.

A curva de aprendizado é real, porém.


Começando: Os Caminhos de Instalação

Dragonfly requer Go 1.24 ou mais recente. Se você ainda não tem Go instalado, obtenha-o em golang.org primeiro. O projeto oferece dois caminhos realistas para avançar.

Caminho um: use-o como uma biblioteca em seu próprio projeto. Crie um novo módulo Go, declare Dragonfly como uma dependência e comece a codificar:

bash
go mod init github.com/user/myserver
go get github.com/df-mc/dragonfly

A partir daí, você está escrevendo Go para configurar ouvintes, gerenciar conexões de jogadores e definir sua lógica de jogo. O repositório GitHub e a documentação pkg.go.dev mostram a você a API. Você controla tudo, o que é poderoso e aterrorizante em igual medida.

Caminho dois: clone o repositório e execute o servidor de exemplo. Isso oferece algo jogável imediatamente enquanto explora o que é possível:

bash
git clone https://github.com/df-mc/dragonfly
cd dragonfly
go run main.go

O arquivo main.go no repositório é um servidor de exemplo funcionando, não completo em recursos, mas o suficiente para entender como as peças se encaixam. Você pode se conectar a ele com um cliente Bedrock e explorar. Desliga-o com Ctrl+C quando terminar.


O Que Torna Isso Valioso o Esforço

Go compila para binários autocontidos, o que significa que você obtém um único executável que funciona em qualquer lugar sem precisar de um tempo de execução separado instalado. Essa é uma vantagem real. Sem conflitos de versão Java, sem problemas de ambiente Python, sem drama de "funciona na minha máquina".

A API é bem documentada comparada com a maioria dos projetos de servidor de código aberto. Você obtém godocs reais explicando o que cada função faz e quais parâmetros espera. O próprio código é legível. Isso não é garantido no ecossistema de servidor Minecraft, alguns projetos são um labirinto de herança e gerenciamento de estado que fará sua cabeça girar.

A arquitetura assíncrona do Dragonfly (forma sofisticada de dizer que foi projetada para lidar com toneladas de coisas acontecendo ao mesmo tempo sem quebrar) significa que você não fica bloqueado esperando uma ação do jogador terminar antes de processar outra. Quando está executando um servidor com centenas de conexões simultâneas, isso importa. Também pode parecer mais ágil do que servidores escritos em idiomas que forçam as coisas a acontecerem sequencialmente.

E a comunidade é genuinamente prestativa. O servidor Discord vinculado no repositório GitHub tem pessoas que realmente respondem perguntas. Os mantenedores se engajam com solicitações de recursos. Para um projeto com 790 estrelas, isso é incomum o suficiente para ser mencionado.


A Pegadinha: O Que Poderia Frustrá-lo

Aprender Go leva tempo se vem de Python ou JavaScript. A linguagem é mais simples que Java em alguns aspectos, mais rígida em outros. Goroutines (modelo de concorrência do Go) são poderosas mas exigem um modelo mental diferente do async/await. Se nunca lidou com canais e primitivos de sincronização, vai bater em algumas paredes.

Construir um servidor com Dragonfly significa que você é responsável por muitas coisas que outro software de servidor cuida para você. Quer persistência do jogador? Escreva. Precisa de anti-trapaça? Construa. Comandos personalizados? Isso fica com você. Este é o compromisso pela liberdade, você obtém controle completo, mas responsabilidade completa vem junto na jornada.

Bedrock Edition também tem peculiaridades que Java Edition não tem. O protocolo é diferente. Algumas mecânicas funcionam diferentemente. Se só conhece servidores Java, alguns dos comportamentos do Dragonfly podem surpresá-lo. Na verdade, mesmo se conhece servidores Bedrock, a abordagem do Dragonfly para certas coisas (como chunks são carregados ou como entidades sincronizam) tem suas próprias opiniões.

O wiki existe e tem informações úteis, mas não está completo. Você se encontrará lendo código-fonte e executando experimentos para descobrir coisas. Isso é bom se gosta desse tipo de aprendizado, mas não é uma situação de "siga o tutorial".


Colocando em Prática e Considerando Alternativas

Planejamento importa antes de começar a codificar. Esboce o que seu servidor realmente precisa fazer. Quais recursos personalizados são inegociáveis? Quais comportamentos padrão do Bedrock você precisa alterar? Uma vez que saiba disso, pode estimar se construir com Dragonfly faz sentido ou se algo pré-construído o serviria melhor. Usar uma ferramenta como o Gerador de Propriedades do Servidor pode ajudar a pensar em suas necessidades de configuração do servidor antecipadamente, entender quais propriedades importam ajuda a saber quais recursos incorporar.

Depois que seu servidor estiver funcionando, o Verificador de Status do Servidor Minecraft é útil para monitorar se seu servidor está respondendo. Ele dirá se algo no seu código Go está bloqueando ou se problemas de rede estão surgindo.

Se quer construir algo personalizado mas não está pronto para mergulhar em Go, Nukkit é outra opção de servidor Bedrock escrito em Java. É mais estabelecido e tem mais plug-ins de terceiros. O compromisso é menos controle por menos esforço. Para Java Edition, Spigot e Paper são o padrão, embora não ajudem com Bedrock. E servidores vanilla ainda são sólidos se não precisar de mecânicas personalizadas.

Dragonfly é a escolha se quer construir algo personalizado e está confortável em escrever código para chegar lá.

Sobre o autor
Alexandru Maftei
Alexandru MafteiRedator-chefe

Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.

Comentários

Nenhum comentário ainda. Seja o primeiro a compartilhar sua opinião!

We use cookies to improve your experience. By continuing to use this site, you agree to our use of cookies. Read our Privacy Policy