Logo Raspberry
0

Raspberry: Montando un servidor Minecraft

Recientemente hemos decidido unos amigos el volvernos a juntar para jugar a Minecraft.

El problema de los servidores de la comunidad es que hay por lo general o demasiada gente o demasiada superficie construida (incluso en algunas ocasiones ambas a la vez).

Por ello mismo he decidido que una de mis pequeñas Raspberrys nos va a facilitar la vida.

Requisitos básico

  • Raspberry Pi.
  • Tarjeta SD / MicroSD (En ambos casos, mínimo de 8GB)
  • Teclado
  • Televisor / Monitor.
  • Conexión a Internet.

Indicar que lo tanto el teclado como la tele / monitor es solo para la primera configuración, puesto que una vez activo todo ya no va a ser necesario.

Paso a paso

Para empezar, vamos a cargar la imagen del sistema de Raspbian y esta ha de ser la versión LITE.

En caso de que no sepas como cargar la imagen del sistema, te recomendamos que sigas este manual.

Mucha gente no quiere usar esta versión, puesto que no trae configurado nada, pero precisamente por ello vamos a usarla, de esta manera evitamos paquetes pre-instalados que no vamos a usar nunca.

Lo primero que vamos a hacer es configurar en nuestro router el hecho de que nos asigne automáticamente la misma IP siempre, por lo que tendremos que saber la MAC para asignarla en el router.

para ello tendremos que ejecutar el siguiente comando:

ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever

En caso de que vayamos a usar en lugar de la wifi el cable de red, el proceso debería de ser el mismo, no obstante, esto siempre depende del router y por ello mismo no vamos a entrar en mucho detalle.

Ahora que ya tenemos conectada nuestra Raspberry a internet, vamos a proceder con actualizando todos los paquetes que tiene el sistema por si hay alguno obsoleto y así mejorar el rendimiento.

sudo apt-get update
sudo apt-get upgrade

Una vez actualizado, procederemos con los paquetes que vamos a usar para instalar y configurar nuestro servidor.

sudo apt-get install git
sudo apt-get install oracle-java8-jdk

Ya tenemos nuestro sistema actualizado y con el software básico, pero aun no hemos instalado el servidor… pero tranquilos que no queda demasiado.

En algunas guías que hemos visto por internet, utilizan el servidor oficial de la web de Minecraft, pero el problema que tiene es que no está optimizado para máquinas de pocos recursos, por lo que vamos a usar un paquete pre-optimizado que se llama SpigotMC.

Primero de todo, vamos a crear la carpeta donde vamos a poner todos los ficheros.

cd ..
sudo mkdir minecraft
cd minecraft

Ahora que ya estamos la estructura que vamos a usar, descargamos el configurador e instalador.

sudo wget -O BuildTool.jar https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar

Mediante el BuildTool vamos a instalar la última versión disponible del servidor oficial, por lo que vamos a usar el siguiente comando:

sudo java -jar BuildTools.jar --rev latest

Hay que tener en cuenta que la instalación de este comando puede llegar a tardar entre 10 y 15 min, dependiendo siempre de nustra conexión y de la categoría de nustra tarjeta SD / MicroSD.

En caso de que queramos una versión en concreto tendremos que ir a la web oficial para usar la codificación del –rev que corresponda.

Cuando se termine la instalación ya estará como quien no quiere la cosa, ahora solo falta ejecutar el servidor.

Para ejecutarlo vamos a usar el siguiente comando en caso de haber usado la versión por defecto (En el momento de hacer el manual):

sudo java -Xms256M -Xmx512M -jar spigot-1.11.2.jar nogui

Así que ya tenemos montado nuestro servidor de Minecraft y funcionando, que no es poco.

Ahora bien, si vamos a hacer un poco el cabra dentro del servidor, es decir, usar mucha dinamita y ese tipo de cosas, vamos a tener unos preciosos cuelgues que, evidentemente, no vamos a poder gestionar.

El motivo es el siguiente, el sistema junto con las aplicaciones que hay cargadas en memoria y el servidor de minecraft consumen un bonito total de 830MB aproximadamente tal como se ve en la imagen siguiente.

Esto es directamente sin que haya nadie conectado, realmente le quedan unos 145MB de memoria que no está nada mal para tratarse de una Raspberry Pi 2, pero claro, no vamos a poder hacer según que cosas.

Al ya tener tu servidor, no hay mucho problema, comparte con tus compañeros mediante red el acceso y a disfrutar, pero si quieres que alguno de tus amigos juegue desde casa, vas a tener que configurar el servicio NO-IP pero no te preocupes, sigue este manual y lo tendrás es un periquete.

Vitaminando nuestro servidor

Hasta aquí, nuestro servidor es funcional y permite mantenernos entretenidos durante mucho tiempo, pero claro, en el momento en que se conecte más de una persona y ambos se pongan a picar en puntos distintos, matar bichos y demás, vamos a tener un problema con nuestra RAM y evidentemente, va a provocar pequeños fallos que aunque no son serios, pueden llegar a molestar (bloques que no desaparecen, bichos a los que no les impactas, etc).

Por ello mismo vamos a «optimizar» nuestro pequeño servidor.

Para ello, lo que vamos a necesitar es modificar los ficheros spigot.yml, bukkit.yml server.properties, pero tranquilo que es mucho más fácil de lo que parece.

spigot.yml

Estos son los parámetros que vamos a cambiar para intentar mejorar el rendimiento.

mob-spawn-range
Original: 4
Recomendado: 3

Esto hace que los bichos puedan aparecer más cerca, por lo que la carga del mismo será mucho más rápida (pero claro… a saber que es lo que aparece…).

entity-activation-range
Original: animals:32, monsters:32, misc:16
Recomendado: animals:6, monsters:16, misc:2

Esto hace referencia a la distancia a la que empiezan a aparecer los bichos. En nuestro caso, este parámetro lo hemos dejado como en el original.

hopper-transfer, hopper-check, hopper-amount
Original: transfer:8, check:8, amount:1
Recomendado: transfer:24, check:24, amount:3

Con esto, las tolvas (hooper en inglés) transfieren 3 veces más objetos, pero también son más lentas… por lo que depende de cada uno. Nosotros lo hemos dejado como el Original.

view-distance
Original: 10
Recomendado: 3 – 5

Mediante esta opción, regulamos el número de chucks (cuadros) que ha de mandar el servidor al cliente y por lo tanto, la distancia. Nosotros lo hemos dejado en 5.

merge-radius
Original: item:2.5, exp:3.0
Recomendado: item:3.5, exp:6.0

Esto va a hacer que al caer objetos al suelo, se unan en un solo bloque y provoquen que haya menos procesos por parte del servidor. Nosotros lo hemos dejado en item: 3.5 / exp: 3.0

El motivo es porque las esferas de experiencia no son tan abundantes como los objetos y por ello hemos dejado el mismo valor que el original.

bukkit.yml

spawn-limits
Original: monsters:70, animals:15, water-animals:5, ambient:15
Recomendado: monsters:50, animals:10, water-animals:3, ambient:4

Usando estos comandos, limitaremos (aproximadamente) la cantidad de bichos. Marco el aproximadamente puesto que esto no es un valor que sea concreto por usuarios y por lo tanto si lo bajamos mucho, hemos de asegurarnos de tener una cantidad relativamente elevada de usuarios. Nosotros tenemos la recomendada.

chunk-gc
Original: period-in-ticks:600, load-threshold:0
Recomendado: period-in-ticks:300, load-threshold:300

En principio, este parámetro se usa para eliminar de la memoria todos aquellos chunks que estén fuera del rango de visión del usuario y por lo tanto que no son necesarios. Nosotros lo tenemos en la recomendada.

ticks-per.monster-spawns
Original: 1
Recomendado: 2 – 5

Esto controla los intentos que hace el mundo para intentar soltar un bicho agresivo. Cuanto más alto sea el valor, menos bichos aparecerán y por ende, menos se cargará el servidor. Nosotros lo tenemos en 2.

server.properties

network-compression-threshold
Original: 256
Recomendado(Jugando en red): 512
Recomendado(Jugando por internet): -1

Esto gestiona los paquetes que envía el servidor y por lo tanto al hacerlos más grandes, consume más red, ahora bien, al poner -1 lo que hace el servidor es gestionarlo de manera automática y mejora el envío de paquetes, pero consume más recursos. Nosotros lo hemos dejado como el original.

En caso de que estas configuraciones no os sirvan o no sean del agrado de alguien, os podemos remitir a este post (en inglés) que son los precursores de todo este embrollo y los parámetros que hemos seguido.

Más vitaminas

Si pese a todo no nos ha parecido insuficiente y seguimos considerando que no va lo fluido que debería o sencillamente, lo de modificar ficheros del servidor no va contigo, puesto que lo quieres tal como va por defecto, tendremos que recurrir a los plugins.

Por lo tanto, hemos de descargar el fichero NoSpawnChunks.jar y lo hemos de poner en la carpeta plugins y si has seguido el manual te quedará algo semejante a esto.

Ahora lo que hemos de hacer es reiniciar nuestro servidor de minecraft matando el proceso de java y arrancar nuevamente el servidor.

Cuando cargue nuestro servidor, podemos ver si se ha cargado correctamente usando el parámetro plugins, tal como se ve a continuación.

Una vez que haya arrancado, quedará la memoria RAM de la siguiente manera:

Como se puede ver hemos ganado en la misma situación alrededor de unos 200MB, cosa que no está tan mal y nos va a permitir jugar con mayor fluidez.

Datos a tener en cuenta

Una cosa muy importante a tener en cuenta, es que nuestra pequeña amiga no siempre va a tener un rendimiento optimo, aunque por lo general sea jugable y haga las funciones necesarias, puede que tengamos problemas de conexión si la conectamos por Wifi, por lo que es recomendable conectarla por cable,

Por ello, nosotros hemos llegado a la opción de que cada 24/48h (tiempo en el que empieza a hacer un poco el tonto), reiniciar la raspberry, realizar un backup del mundo y volver a encender el servidor.

En lo relacionado a la tarjeta SD / MicroSD, hemos leído en algunos foros en los que dicen que 8GB no es suficiente, no obstante, eso depende, puesto que el tamaño de los ficheros del servidor van en proporción del mundo descubierto, por lo tanto, hemos de tenerlo en cuenta si queremos cargar un mundo ya generado y muy explorado.