
Minecraft behoort vandaag de dag tot de populairste online games. In nog geen drie jaar (de eerste officiële release vond plaats in de herfst van 2011) heeft het miljoenen fans over de hele wereld gekregen.
De ontwikkelaars van het spel richten zich bewust op de beste voorbeelden van twintig jaar geleden, toen veel games in vergelijking met vandaag de dag primitief waren qua grafische weergave en niet perfect waren qua gebruiksvriendelijkheid, maar toch echt wisten te boeien.
Net als alle sandboxgames biedt Minecraft de speler enorme mogelijkheden voor creativiteit – dat is eigenlijk het belangrijkste geheim van zijn populariteit.
Organisatie van servers voor het spel in multiplayer modus wordt uitgevoerd door de spelers zelf en hun gemeenschappen. Tegenwoordig zijn er tienduizenden game-servers actief op het internet (zie bijvoorbeeld de lijst hier).
Er zijn ook veel fans van deze game onder onze klanten, en zij huren hardware voor gameprojecten in onze datacenters. In dit artikel zullen we bespreken welke technische aspecten belangrijk zijn bij het kiezen van een server voor
Minecraft.
We kiezen een platform
De game Minecraft bevat de volgende architectonische elementen:
- server – een programma waarmee spelers met elkaar communiceren via het netwerk;
- client – een programma voor verbinding met de server, geïnstalleerd op de computer van de speler;
- plugins – toevoegingen aan de server die nieuwe functies toevoegen of bestaande functies uitbreiden;
- mods – toevoegingen aan de game-wereld (nieuwe blokken, items, mogelijkheden).
Voor Minecraft bestaan er veel serverplatforms. De meest voorkomende en populairste zijn Vanilla en Bukkit.
Vanille dit is het officiële platform van de game-ontwikkelaars. Het wordt zowel in grafische als in consolevorm verspreid. Een nieuwe versie van Vanilla wordt altijd gelanceerd tegelijk met een nieuwe versie van Minecraft.
Een nadeel van Vanilla is het hoge geheugenverbruik (ongeveer 50 MB per speler). Een ander aanzienlijk nadeel is het ontbreken van plugins.
Bukkit werd opgericht door een groep enthousiaste mensen die probeerden de officiële Minecraft-server te verbeteren. Deze poging was behoorlijk succesvol: qua functionaliteit is Bukkit veel breder dan Vanilla, vooral dankzij de ondersteuning van verschillende mods en plugins. Bovendien verbruikt het minder geheugen per speler, ongeveer 5-10 MB.
De nadelen van Bukkit zijn dat het bij het opstarten te veel RAM-geheugen gebruikt. Bovendien, hoe langer de server draait, hoe meer geheugen deze nodig heeft (zelfs als er weinig spelers zijn). Wanneer je voor Bukkit als server kiest, moet je in gedachten houden dat nieuwe versies meestal fouten bevatten; de stabiele versie verschijnt doorgaans ongeveer 2-3 weken na de officiële versie van Minecraft.
Bovendien winnen de laatste tijd ook andere platforms aan populariteit (zoals Spout, MCPC en MCPC+), maar deze hebben beperkte compatibiliteit met Vanilla en Bukkit en uiterst beperkte modondersteuning (bijvoorbeeld voor Spout kun je alleen mods helemaal vanaf nul maken). Als je ze al gebruikt, is het alleen voor experimenten.
Voor het opzetten van een gamerserver raden we aan om het Bukkit-platform te gebruiken, aangezien het de grootste flexibiliteit biedt; daarnaast zijn er veel verschillende mods en plugins beschikbaar. Een stabiele werking van de Minecraft-server hangt in hoge mate af van de juiste keuze van hardwareplatform. Laten we dit onderwerp verder verkennen.
Hardwarevereisten
Zowel de server als de client van Minecraft zijn zeer veeleisend wat betreft systeembronnen.
Bij het kiezen van een hardwareplatform moet je in overweging nemen dat een multicore-processor weinig voordelen biedt: de serverkern van Minecraft kan slechts één verwerkingsthread gebruiken. Een tweede kern is echter niet overbodig: sommige plugins draaien in aparte threads, en Java verbruikt ook behoorlijk wat bronnen...
Daarom voor Minecraft-de server is het beter om een processor te kiezen met een hogere single-core prestatie. Een krachtigere dual-core processor is bij voorkeur beter dan een multicore-processor die minder krachtig is. Op gespecialiseerde forums wordt aanbevolen om processors te gebruiken met een kloksnelheid van ten minste 3 GHz.
Voor een goede werking van de Minecraft-server is een grote hoeveelheid RAM vereist. Bukkit gebruikt ongeveer 1 GB RAM; bovendien wordt er voor elke speler, zoals hierboven al vermeld, tussen de 5 en 10 MB gereserveerd. Plug-ins en mods verbruiken ook behoorlijk wat geheugen. Voor een server met 30 tot 50 spelers is dan ook minimaal 4 GB RAM nodig.
In Minecraft hangt veel af van de snelheid van het bestandssysteem, zoals de snelheid waarmee plug-ins worden geladen. Daarom is het aan te raden om een server met een SSD-schijf te kiezen. Harddisks met een spindel zijn waarschijnlijk niet geschikt vanwege de lage snelheid van willekeurige toegang.
De snelheid van de internetverbinding is ook van groot belang. Voor een spel met 40-50 mensen is een verbinding van 10 Mb/s voldoende. Echter, voor degenen die een groter Minecraft-project plannen, inclusief een website, forum en dynamische kaart, is het sterk aanbevolen om een verbinding met een hogere bandbreedte te hebben.
Welke specifieke configuratie is het beste om te kiezen? Uit de door ons aangeboden configuraties raadplegen wij de volgende aan:
- Intel Core 2 Duo E8400 3GHz, 6GB RAM, 2×500GB SATA, 3000 rub/maand;
- Intel Core 2 Quad Q8300 2.5GHz, 6GB RAM, 2×500GB SATA, 3500 rub/maand — deze configuratie gebruiken wij voor onze testserver MineCraft, waar je momenteel kunt spelen (hoe dit te doen staat hieronder beschreven);
- Intel Core i3-2120 3.3GHz, 8GB RAM, 2×500GB SATA, 3500 rub/maand.
Deze configuraties zijn prima voor het opzetten van een Minecraft-server voor 30-40 spelers. Een nadelig punt is het ontbreken van SSD's, maar we bieden een ander belangrijk voordeel: een gegarandeerde verbinding van 100 Mb/s zonder enige beperkingen. Bij het bestellen van alle bovenstaande configuraties worden er geen installatiekosten in rekening gebracht.
Wij hebben ook productievere, maar uiteraard duurdere servers (ook hier worden geen installatiekosten in rekening gebracht):
- 2x Intel Xeon 5130, 2GHz, 8GB RAM, 4×160GB SATA, 5000 rub/maand;
- 2x Intel Xeon 5504, 2GHz, 12GB RAM, 3×1TB SATA, 9000 rub/maand.
Wij raden ook de nieuwe budgetmodel met SSD aan, gebaseerd op de Intel Atom C2758-processor: Intel Atom C2758 2.4GHz, 16 GB RAM, 2×240GB SSD, 4000 rub/maand, installatiekosten — 3000 rub.
Installatie en werking van de Bukkit-server in het OC Ubuntu
Voordat we de server installeren, maken we een nieuwe gebruiker aan en voegen we deze toe aan de sudo-groep:
$ sudo useradd -m -s /bin/bash $ sudo adduser sudo
Laten we vervolgens een wachtwoord instellen waarmee de aangemaakte gebruiker zich bij de server kan aanmelden:
$ sudo passwd
We zullen opnieuw verbinding maken met de server onder het nieuwe account en beginnen met de installatie.
Minecraft is geschreven in Java, dus het is noodzakelijk om de Java Runtime Environment op de server te installeren.
Laten we de lijst met beschikbare pakketten bijwerken:
$ sudo apt-get update
Voer vervolgens de volgende opdracht uit:
$ sudo apt-get install default-jdk
Voor de installatie en het uitvoeren van Bukkit is het ook aan te raden om een terminal multiplexer te installeren, bijvoorbeeld screen (je kunt ook andere terminal multiplexers gebruiken - zie onze overzicht):
$ sudo apt-get install screen
Screen is nodig als we verbinding maken met de game server via ssh. Hiermee kunnen we de Minecraft server in een apart terminalvenster draaien, en zelfs na het sluiten van de ssh-client blijft de server draaien.
Laten we een directory aanmaken waarin de serverbestanden worden opgeslagen:
$ mkdir bukkit $ cd bukkit
Daarna gaan we naar de downloadpagina van de officiële Bukkit-website. In de rechterbovenhoek van de pagina kun je de link naar de laatste aanbevolen serverbuild (recommended build) zien. We raden aan om deze te downloaden:
$ wget
Laten we nu screen opstarten:
$ sudo screen
en de volgende opdracht uitvoeren:
$ java -Xmx1024M -jar craftbukkit.jar -o false
We zullen uitleggen wat de gebruikte parameters betekenen:
- Xmx1024M - het maximale aantal werkgeheugen op de server;
- jar craftbukkit.jar - de sleutel naar de server;
- o false - staat toegang toe tot de server vanuit piratenklanten.
De server zal worden gestart.
Om de server te stoppen, typ je de opdracht stop in de console.
Configuratie en configuratie van de server
De serverinstellingen worden opgeslagen in het configuratiebestand server.properties. Dit bevat de volgende parameters:
- generator-settings - definieert het sjabloon voor het genereren van een supervlak wereld;
- allow-nether - bepaalt de mogelijkheid om naar de Nether te gaan. Voor deze parameter is standaard de waarde true ingesteld. Als de waarde false is, worden alle spelers uit de Nether naar de reguliere wereld verplaatst.
- level-name — de naam van de map met de kaartbestanden die tijdens het spel zal worden gebruikt. De map wordt opgeslagen in dezelfde directory als waar de serverbestanden zich bevinden. Als deze directory niet bestaat, maakt de server automatisch een nieuwe wereld aan en plaatst deze in een directory met dezelfde naam;
- enable-query — als ingesteld op true, activeert het het GameSpy4-protocol voor het luisteren naar de server;
- allow-flight — staat vliegende bezoekers in de wereld van Minecraft toe. Standaard is deze waarde false (vliegen is verboden);
- server-port — geeft de poort aan die door de spelserver zal worden gebruikt. De standaardpoort voor Minecraft is 25565. Het wordt niet aanbevolen deze waarde te wijzigen;
- level-type — bepaalt het type wereld (DEFAULT/FLAT/LARGEBIOMES);
- enable-rcon — opent de toegang op afstand tot de console van de server. Standaard is deze functie uitgeschakeld (false);
- level-seed — de invoer voor de wereldgenerator. Om willekeurige werelden te kunnen genereren, moet dit veld leeg blijven;
- force-gamemode — stelt de standaard spelmodus in voor spelers die verbinding maken met de server;
- server-ip — geeft het IP-adres aan dat door spelers zal worden gebruikt om verbinding te maken met de server;
- max-build-height — geeft de maximale bouwhoogte op de server aan. De waarde moet een getal zijn dat deelbaar is door 16 (64, 96, 256, enz.);
- spawn-npcs — staat het verschijnen toe (als ingesteld op true) of verbiedt het (als ingesteld op false) NPC's in dorpen;
- white-list — schakelt het gebruik van een witte lijst voor spelers op de server in of uit. Als ingesteld op true, kan de beheerder een witte lijst samenstellen door handmatig de namen van spelers toe te voegen. Als ingesteld op false, kan elke gebruiker de server betreden die het IP-adres en de poort kent;
- spawn-animals — staat automatische verschijning van vriendelijke mobs toe als ingesteld op true;
- snooper-enabled — staat de server toe om statistieken en gegevens naar de ontwikkelaars te verzenden;
- hardcore — schakelt de hardcore-modus op de server in;
- texture-pac — het textuurbestand dat zal worden gebruikt wanneer een speler verbinding maakt met de server. De waarde van deze parameter is de naam van het zip-archief met texturen dat zich in dezelfde directory bevindt als de server;
- online-mode — controleert premium-accounts van gebruikers die verbinding maken met de server. Als deze optie op true is ingesteld, kunnen alleen premium-accounthouders de server betreden. Als de accountcontrole is uitgeschakeld (waarde false), kunnen alle gebruikers (inclusief bijvoorbeeld spelers die hun naam vervalsen) de server betreden, wat extra beveiligingsrisico's met zich meebrengt. Met uitgeschakelde controle kan er lokaal in Minecraft gespeeld worden, zonder toegang tot het internet;
- pvp — staat spelers toe om tegen elkaar te vechten of niet. Als deze parameter op true staat, kunnen spelers elkaar vernietigen. Als de waarde false is, kunnen spelers elkaar geen directe schade toebrengen;
- difficulty — stelt het moeilijkheidsniveau van het spel in. Kan waarden aannemen van 0 (de gemakkelijkste) tot 3 (de moeilijkste);
- gamemode — geeft aan welke spelmodus zal worden ingesteld voor spelers die de server betreden. Kan de volgende waarden aannemen: 0 — Survival, 1 — Creative, 2 — Adventure;
- player-idle-timeout — tijd van inactiviteit (in minuten) waarna spelers automatisch worden afgemeld van de server;
- max-players — het maximale aantal spelers dat op de server is toegestaan (van 0 tot 999);
- spawn-monsters — staat het (als ingesteld op true) voortbrengen van vijandige mobs toe;
- generate-structures — schakelt (true) in/schakelt (false) uit de generatie van structuren (schatkamers, forten, dorpen);
- view-distance — regelt de radius van geladen chunks voor verzending naar de speler; kan waarden aannemen van 3 tot 15.
De Minecraft-serverlogs worden geregistreerd in het bestand server.log. Dit bestand wordt opgeslagen in dezelfde map als de serverbestanden. De log groeit voortdurend in omvang en neemt steeds meer schijfruimte in beslag. Het beheer van de logmechanismen kan worden geordend met behulp van een zogenaamde logrotatie. Hiervoor wordt een speciale tool gebruikt — logrotate. Dit beperkt het aantal vermeldingen in de log tot een bepaald maximum.
Logrotatie kan zo worden ingesteld dat alle vermeldingen worden verwijderd zodra het logbestand een bepaalde grootte heeft bereikt. Er kan ook een termijn worden ingesteld waarop alle oude vermeldingen als verouderd worden beschouwd en worden verwijderd.
De belangrijkste rotatie-instellingen bevinden zich in het bestand /etc/logrotate.conf; bovendien kunnen individuele instellingen voor elke applicatie worden gemaakt. Bestanden met individuele instellingen worden opgeslagen in de map /etc/logrotate.d.
Laten we een tekstbestand /etc/logrotate.d/craftbukkit aanmaken en de volgende parameters erin schrijven:
/home/craftbukkit/server.log {
rotate 2
weekly
compress
missingok
notifempty
}
Laten we hun waarden nader bekijken:
- De parameter rotate geeft het aantal rotaties aan voordat het bestand wordt verwijderd;
- weekly geeft aan dat de rotatie wekelijks zal plaatsvinden (er kunnen ook andere parameters worden ingesteld: monthly - maandelijks en daily - dagelijks);
- compress geeft aan dat archieflogs moeten worden gecomprimeerd (de tegenovergestelde optie is nocompress);
- missingok geeft aan dat als het logbestand ontbreekt, de werking moet doorgaan en geen foutmeldingen moet worden weergegeven;
- notifempty geeft aan dat het logbestand niet moet worden verschoven als het leeg is.
Meer informatie over de instellingen voor logrotatie is te vinden hier.
Tips voor optimalisatie
We willen meteen verduidelijken dat deze sectie alleen tips zal bevatten met betrekking tot de optimalisatie van de game-server. Vragen omtrent de fijne afstemming en optimalisatie van de server waarop Minecraft is geïnstalleerd, vormen een apart onderwerp dat buiten het bereik van dit artikel valt; geïnteresseerde lezers kunnen de benodigde informatie gemakkelijk op het internet vinden.
Een van de meest voorkomende problemen bij het spelen van Minecraft zijn de zogenaamde laggen - situaties waarin het programma niet op tijd reageert op de gebruikersinvoer. Deze kunnen veroorzaakt worden door problemen zowel aan de klantzijde als aan de serverzijde. Hieronder geven we aanbevelingen die helpen om de kans op problemen aan de serverzijde te verminderen.
Houd regelmatig het geheugengebruik van de server en de plugins in de gaten
Geheugengebruik kan worden gevolgd met behulp van gespecialiseerde administratieve plugins - bijvoorbeeld, LagMeter.
Houd de plugins up-to-date
Over het algemeen streven ontwikkelaars van nieuwe plugins er met elke nieuwe versie naar om de belasting te verlagen.
Probeer geen veelvoud aan plugins met vergelijkbare functionaliteit te gebruiken.
Grote plugins (zoals Essentials, AdminCMD, CommandBook) bevatten vaak de functionaliteit van veel kleinere plugins. Bijvoorbeeld, Essentials bevat functies voor de plugins iConomy, uHome, OpenInv, VanishNoPacket, Kit. Kleine plugins waarvan de functionaliteit volledig wordt gedekt door de functionaliteit van één grote, kunnen in de meeste gevallen worden verwijderd om de server niet te overbelasten.
Beperk de kaart en laad deze zelf in.
Als je de kaart niet beperkt, zal de belasting op de server aanzienlijk toenemen. Je kunt de kaart beperken met de plugin WorldBorder. Hiervoor moet je deze plugin starten en het commando /wb 200 uitvoeren, en vervolgens de kaart in kaart brengen met het commando /wb fill.
Het in kaart brengen zal zeker enige tijd duren, maar het is beter om dit één keer te doen door de server tijdelijk stil te leggen. Als elke speler de kaart gaat renderen, zal de server traag werken.
Vervang zware plugins door snellere en minder resource-intensieve.
Niet alle plugins voor Minecraft zijn succesvol: vaak bevatten ze veel overbodige en onnodige functies, en soms verbruiken ze ook veel geheugen. Slechte plugins kunnen het beste worden vervangen door alternatieven (die er behoorlijk wat zijn). Bijvoorbeeld, de plugin LWC kan worden vervangen door Wgfix+MachineGuard, en de plugin DynMap kan worden vervangen door Minecraft Overviewer.
Verwijder altijd drops of installeer een plugin voor automatische verwijdering van drops.
Drops in games zijn items die vallen bij de dood van een mob of bij het vernietigen van bepaalde blokken. Het opslaan en verwerken van drops verbruikt veel systeembronnen.
Om de server sneller te laten werken, is het beter om drops te verwijderen. Dit kan het beste worden gedaan met speciale plugins, zoals NoLagg of McClean.
Gebruik geen anti-cheats.
Op game-servers worden vaak zogenaamde anti-cheats geïnstalleerd - programma's die pogingen om op oneerlijke manieren op het spel in te grijpen blokkeren.
Er zijn ook anti-cheats voor Minecraft. Elke anti-cheat is altijd een extra belasting voor de server. Het is beter om beveiligingen voor de launcher te installeren (die echter geen absolute garantie van veiligheid bieden en gemakkelijk kunnen worden gekraakt - maar dat is al een onderwerp voor een apart gesprek) en voor de client.
Ter afsluiting
Instructies en aanbevelingen zijn veel effectiever als ze worden ondersteund door concrete voorbeelden. Op basis van de hierboven gegeven installatie-instructies hebben we onze eigen MineCraft-server gemaakt en iets interessants op de kaart geplaatst.
Dit is wat we hebben bereikt:
- Bukkit-server - stabiele aanbevolen versie 1.6.4;
- Plugin Statistics - om statistieken over spelers te verzamelen;
- Plugin WorldBorder - om de kaart te renderen en te beperken;
- Plugin WorldGuard (+WorldEdit als afhankelijkheid) - om bepaalde gebieden te beschermen.
We nodigen iedereen uit om erop te spelen: voeg een nieuwe server toe en geef het adres op mncrft.slc.tl.
We zouden het waarderen als je in de reacties jouw eigen ervaringen met het opzetten, configureren en optimaliseren van MineCraft-servers deelt, en welke mods en plugins jou interesseren en waarom.
Goed nieuws: Vanaf 1 augustus is de installatievergoeding voor fysieke servers met een vaste configuratie verlaagd met 50%. De eenmalige installatievergoeding bedraagt nu slechts 3000 roebel.
Lees onze lezers die hier geen commentaar kunnen geven, zijn welkom op onze blog.
Bron: habr.com
