Skip to content
Saltar al contenido
Volver al Blog
Dragonfly: Construir Servidores Minecraft Bedrock con Go

Dragonfly: Construir Servidores Minecraft Bedrock con Go

Alexandru Maftei
Alexandru Maftei
@ice
Actualizado
19 vistas
TL;DR:Dragonfly es un marco de trabajo basado en Go que te permite construir servidores Minecraft Bedrock personalizados desde cero. Si quieres control total sobre las mecánicas de tu servidor en lugar de estar limitado por software construido previamente, esta es la librería que debes aprender. Es ligera y está diseñada para desarrolladores que pueden codificar.
🐉 Proyecto Minecraft de código abierto

df-mc/dragonfly

Software de servidor Minecraft Bedrock Edition escrito en Go

⭐ 790 estrellas💻 Go📄 MIT
Ver en GitHub ↗

Qué es Dragonfly

Dragonfly es un marco de trabajo para servidores Minecraft Bedrock escrito en Go. Pero llamarlo un "servidor" es un poco engañoso si estás acostumbrado a software de servidor tradicional como Spigot o Paper. Es realmente una librería - un conjunto de herramientas y bloques de construcción que usas para construir tu propia aplicación de servidor. No lo instalas e inmediatamente tienes un servidor jugable. En cambio, escribes código Go que usa la API de Dragonfly, luego ejecutas ese código para crear el servidor que imagines.

Esto importa porque invierte el guión. Con software de servidor tradicional, estás limitado a lo que los desarrolladores pensaron que querrías hacer. Dragonfly dice: "Aquí está la capa de red, el manejo del formato del mundo y la implementación del protocolo. Construye lo que necesites encima de eso." Está diseñado para personas que quieren entregar algo personalizado, no algo listo para usar.


Quién Debería Preocuparse por Esto

Si estás ejecutando un pequeño SMP con amigos, Dragonfly es probablemente excesivo. Usa un servidor construido previamente para eso. Pero si estás intentando construir algo único - un servidor de supervivencia con mecánicas de economía personalizadas, un mundo creativo con herramientas de construcción especiales, o una red de minijuegos con reglas personalizadas - Dragonfly te proporciona la base para hacerlo realidad.

Los propietarios de redes que han alcanzado el límite de lo que permite el software de servidor tradicional tienden a encontrar su camino aquí. Los desarrolladores que aprenden cómo funciona el protocolo de red de Minecraft también se adentran en el código fuente de Dragonfly. Tiene 790 estrellas en GitHub. Eso significa que tiene una comunidad real detrás, pero no es mainstream. Lo suficientemente pequeño para que realmente reconozcas a las personas en Discord, lo suficientemente grande para que no estés solo.

Aunque la curva de aprendizaje es real.


Primeros Pasos - Los Caminos de Instalación

Dragonfly requiere Go 1.24 o más nuevo. Si aún no tienes Go instalado, consígue desde golang.org primero. El proyecto te proporciona dos caminos realistas para avanzar.

Camino uno: úsalo como una librería en tu propio proyecto. Crea un nuevo módulo de Go, declara Dragonfly como una dependencia, y comienza a codificar:

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

A partir de ahí, estás escribiendo Go para configurar escuchas, manejar conexiones de jugadores y definir tu lógica de juego. El repositorio de GitHub y la documentación de pkg.go.dev te muestran la API. Controlas todo, lo que es poderoso y aterrador en igual medida.

Camino dos: clona el repositorio y ejecuta el servidor de ejemplo. Esto te proporciona algo jugable inmediatamente mientras exploras lo que es posible:

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

El archivo main.go en el repositorio es un servidor de ejemplo funcional - no completamente equipado con características, pero suficiente para entender cómo encajan las piezas. Puedes conectarte con un cliente Bedrock y explorar. Ciérralo con Ctrl+C cuando termines.


Qué Lo Hace Merecedor del Esfuerzo

Go se compila en binarios autónomos, lo que significa que obtienes un único ejecutable que se ejecuta en cualquier lugar sin necesidad de tener instalado un entorno de ejecución separado. Esa es una verdadera ventaja. Sin conflictos de versión de Java, sin problemas de entorno de Python, sin drama de "funciona en mi máquina".

La API está bien documentada en comparación con la mayoría de proyectos de servidor de código abierto. Obtienes documentación de Go (godocs) que explica qué hace cada función y qué parámetros espera. El código en sí es legible. Eso no está garantizado en el ecosistema del servidor de Minecraft - algunos proyectos son un laberinto de herencia y gestión de estado que te hará girar la cabeza.

La arquitectura asíncrona de Dragonfly (forma elegante de decir que está diseñada para manejar muchas cosas sucediendo a la vez sin romperse) significa que no estás bloqueado esperando a que la acción de un jugador termine antes de procesar la de otro. Cuando estás ejecutando un servidor con cientos de conexiones concurrentes, eso importa. También puede sentirse más ágil que los servidores escritos en lenguajes que fuerzan que las cosas sucedan secuencialmente.

Y la comunidad es genuinamente útil. El servidor de Discord vinculado en el repositorio de GitHub tiene personas que realmente responden preguntas. Los mantenedores se involucran con las solicitudes de características. Para un proyecto de 790 estrellas, eso es lo suficientemente inusual como para ser digno de mención.


El Inconveniente - Qué Podría Frustrarte

Aprender Go lleva tiempo si vienes de Python o JavaScript. El lenguaje es más simple que Java en algunos aspectos, más rígido en otros. Las Goroutines (modelo de concurrencia de Go) son poderosas pero requieren un modelo mental diferente que async/await. Si nunca has tratado con canales y primitivas de sincronización, vas a toparte con algunos obstáculos.

Construir un servidor con Dragonfly significa que eres responsable de muchas cosas que otro software de servidor maneja por ti. ¿Quieres persistencia de jugador? Escríbelo. ¿Necesitas anti-truco? Constrúyelo. ¿Comandos personalizados? Eso es cosa tuya. Este es el compromiso por la libertad - obtienes control completo, pero la responsabilidad completa viene junto con el viaje.

Bedrock Edition también tiene peculiaridades que Java Edition no tiene. El protocolo es diferente. Algunos mecanismos funcionan de manera diferente. Si solo estás familiarizado con servidores Java, algunos comportamientos de Dragonfly podrían sorprenderte. De hecho, incluso si conoces servidores Bedrock, el enfoque de Dragonfly para ciertas cosas (como cómo se cargan los chunks o cómo se sincronizan las entidades) tiene sus propias opiniones.

El wiki existe y tiene información útil, pero no está completo. Te encontrarás leyendo código fuente y ejecutando experimentos para descubrir las cosas. Eso está bien si disfrutas ese tipo de aprendizaje, pero no es una situación de "seguir el tutorial".


Poniéndolo en Práctica y Considerando Alternativas

La planificación importa antes de comenzar a codificar. Esboza lo que tu servidor realmente necesita hacer. ¿Qué características personalizadas son innegociables? ¿Qué comportamientos estándar de Bedrock necesitas cambiar? Una vez que sepas eso, puedes estimar si construir con Dragonfly tiene sentido o si algo construido previamente te serviría mejor. Usar una herramienta como el Generador de Propiedades del Servidor puede ayudarte a pensar en tus necesidades de configuración del servidor de antemano - entender qué propiedades importan te ayuda a saber qué características incorporar.

Después de que tu servidor esté en funcionamiento, el Verificador de Estado del Servidor Minecraft es útil para monitorear si tu servidor se mantiene responsivo. Te dirá si algo en tu código Go está bloqueado o si hay problemas de red acechando.

Si quieres construir algo personalizado pero no estás listo para sumergirte en Go, Nukkit es otra opción de servidor Bedrock escrita en Java. Es más establecida y tiene más complementos de terceros. El compromiso es menos control por menos esfuerzo. Para Java Edition, Spigot y Paper son el estándar, aunque no te ayudarán con Bedrock. Y los servidores vainilla todavía son sólidos si no necesitas mecánicas personalizadas.

Dragonfly es la opción si quieres construir algo personalizado y te sientes cómodo escribiendo código para lograrlo.

Sobre el autor
Alexandru Maftei
Alexandru MafteiRedactor principal

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

¡Compártelo con tus amigos!

Comentarios

Aún no hay comentarios. ¡Sé el primero en compartir tu opinión!

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