Jak vytvořit herní server - Minecraft Vanilla

navody 9. čvc 2021

V dnešním díle si ukážeme, jak nastavit a spustit herní server pro hru minecraft na operačním systému Linux a Windows.

Požadavky

Server na hostování Minecraftu není moc náročný a zároveň je náročný velmi. Co se týká procesorového výkonu, tak zde platí základní pravidlo, čím větší frekvence jednoho jádra, tím lepší předpoklad na server bez lagů. Co se týká operační paměti, tak bez správného nastavení spouštěcích parametrů serveru se velmi snadno může stát, že paměť "přeteče" a server spadne.

Obecně se dá říct, že vanilla server pro minecraft je nenáročný na zdroje a pro 20 slotů nám bude stačit výkon jednoho jádra na frekvenci > 3GHz a operační paměť o velikosti 2GB. Uložiště by mělo být typu SSD a to o velikosti minimálně 10GB.

Samotnou kapitolou je připojení k internetu. Pokud budete mít server někde v datacentru, tak tohle asi řešit nemusíte a minimálně budete mít připojení "100 na 100". Doma už by to mohl být problém, ale pokud máte upload alespoň 10 Mbps, tak se nemáte čeho bát a 20 slotů zvládnete, tedy pokud Vám na síti v tu dobu nepoběží něco co Vám bude z této rychlosti ukrajovat.

Příklad takového serveru či VPS:
CPU: 1 vlákno AMD Ryzen 5 3.6 GHz
RAM: 2 GB DDR4
SSD: 10 GB (nvme)
LAN: 100/100 Mbps

Instalace serveru na Windows

  • Stáhneme si aktuální JAVU (64bit) a nainstalujeme dle průvodce po rozkliknutí instalátoru
  • Stáhneme si Minecraft server (jar soubor)
  • Na disku, kde budeme mít server zprovozněný si vytvoříme složku "MCvanilka"
    • například D:\MCvanilka
  • Stažený jar soubor si nakopírujeme do složky MCvanilka
  • Ve složce MCvanilka si vytvoříme nový soubor s názvem "start.bat"
  • Nově vytvořený soubor si otevřeme pro editaci v notepad nebo jiném editoru (doporučuji VS Code)
  • Vepíšeme následující parametry spuštění stáhnutého jar souboru
    • java -XX:+UseG1GC -Xms256M -Xmx2G -Dsun.rmi.dgc.server.gcInterval=2147483646 -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M -jar server.jar nogui
  • Uložíme a start.bat spustíme - tím se nám spustí vytváření adresářové struktůry a potřebných konfiguračních souborů
  • Jakmile server naběhne, tak zadáme příkaz "stop" a tím se server zastaví
  • Otevřeme soubor eula.txt a pokud to v něm ještě není, tak do něj vepíšeme řádek a uložíme
    • eula=true
  • Otevřeme soubor server.properties a nastavíme parametry dle vysvětlení níže
  • Spustíme server pomocí start.bat

Port který jsme nastavili v server.properties je potřeba povolit na firewall, tak aby server mohl komunikovat s klienty hráčů.

Instalace serveru na Linux (RHEL)

  • Nejdříve si vytvoříme uživatele pod kterým budeme minecraft provozovat
    • adduser minecraft
    • passwd minecraft
  • Nyní si musíme nainstalovat Javu
    • sudo dnf install java-16-openjdk-devel
  • Po instalaci Javy zkontrolujeme, že máme správnou verzi
    • java -version
  • Pokud by se verze javy nerovnala nainstalované javě, je možné, že máme více instalací javy, kterou chceme používat můžeme nakonfigurovat
    • sudo update-alternatives --config java
    • případně do spouštěcího skriptu můžeme dodat plnou cestu k binárce javy, která se bude nacházet pravděpodobně v /usr/lib/jvm/java-16-openjdk/bin/java
  • Přepneme se na minecraft uživatele
    • su - minecraft
  • Vytvoříme si složku pro vanila server
    • mkdir vanilka
  • Přejdeme do složky
    • cd vanilka
  • Stáhneme si aktuální verzi serveru v podobě jar souboru
    • wget https://launcher.mojang.com/v1/objects/a16d67e5807f57fc4e550299cf20226194497dc2/server.jar
  • Vytvoříme si spouštěcí skript
    • touch start.sh
  • Do spouštěcího skriptu vložíme následující
    • java -XX:+UseG1GC -Xms256M -Xmx2G -Dsun.rmi.dgc.server.gcInterval=2147483646 -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M -jar /home/minecraft/vanilka/server.jar
  • Spustíme skript aby se inicializovala základní struktůra potřebná pro běh serveru
    • ./start.sh
  • Konzole vyplivne chybové hlášení, které může vypadat nějak takto, můžeme to ignorovat, je to žádoucí
    • [17:54:46] [main/ERROR]: Failed to load properties from file: server.properties
    • [17:54:47] [main/WARN]: Failed to load eula.txt
    • [17:54:47] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
  • Nyní si otevřeme soubor eula.txt a parametr změníme na eula=true
  • Nyní si otevřeme server.properties a nastavíme dle vlastních požadavků (vysvětlení parametrů je níže)
  • Pokud máme nastaveno, tak znovu spustíme server pomocí skriptu
    • ./start.sh
  • Vytvoří se server a dovytvoří struktůra serveru, zároveň se server spustí a zpřístupní na nastaveném portu

Port který jsme nastavili v server.properties je potřeba povolit na firewall, tak aby server mohl komunikovat s klienty hráčů.

server.properties

Ukázka konfigurace
Minecraft server properties
Fri Jul 09 17:55:52 UTC 2021
broadcast-rcon-to-ops=true
view-distance=10
enable-jmx-monitoring=false
server-ip=
resource-pack-prompt=
rcon.port=25575
gamemode=survival
server-port=25565
allow-nether=true
enable-command-block=false
enable-rcon=false
sync-chunk-writes=true
enable-query=false
op-permission-level=4
prevent-proxy-connections=false
resource-pack=
entity-broadcast-range-percentage=100
level-name=world
rcon.password=
player-idle-timeout=0
motd=A Minecraft Server
query.port=25565
force-gamemode=false
rate-limit=0
hardcore=false
white-list=false
broadcast-console-to-ops=true
pvp=true
spawn-npcs=true
spawn-animals=true
snooper-enabled=true
difficulty=easy
function-permission-level=2
network-compression-threshold=256
text-filtering-config=
require-resource-pack=false
spawn-monsters=true
max-tick-time=60000
enforce-whitelist=false
use-native-transport=true
max-players=20
resource-pack-sha1=
spawn-protection=16
online-mode=true
enable-status=true
allow-flight=false
max-world-size=29999984

Důležité parametry

  • view-distance
    • určuje kolik chunků bude server generovat a tím určuje hráčův dohled na mapě, čím větší číslo, tím dál hráč uvidí, ale taky se tím víc zatíží server
  • server-port
    • určuje na jakém portu server poběží
  • white-list
    • určuje jestli bude vstup na server podmíněný nějakým seznamem kteří hráči na něj můžou
  • max-tick-time
    • sledování maximálního času v milisekundách, který se může čekat na jeden tick, pokud je tento threshold překročen, tak dojde k vypnutí serveru
  • max-players
    • určuje maximální počet slotů pro hráče, je dobré uvádět počet co nejblíže realitě
  • online-mode
    • pokud je true, tak se můžou připojit akorát hráči ověření účtem mojang, takže s koupeným minecraftem, pokud je false, tak se toto ověření nedělá

Štítky

Výborně! Nyní jste odběrateli.
Výborně! Dokončete platbu pro plný přístup.
Vítejte zpět! Úspěšně jste se přihlásili.
Úspěch! Váš účet je nyní plně aktivován, nyní máte přístup ke všemu obsahu!