Hogyan működik a Minecraft (Mi okozza a késést?)
A lemaradás tipikus okai
Időzítési jelentések a Spigot/PaperSpigot számára
Időzítési jelentések a Sponge számára
Lépések a késés csökkentésére
Hogyan működik a Minecraft (Mi okozza a késést?)
A késést okozó okok megértésének kulcsa a Minecraft működésének megértése. A Minecraft szerverszoftverek mindegyike hasonló ügyben működik, egyetlen kulcsproblémával: nincs többszálas vagy időzítési korlát a fő játékhurokra. Amikor a kiszolgáló a tic-re lép, végigfut minden TileEntity frissítésen, entitásfrissítésen, blokkfrissítésen, eseményen és egyéb folyamaton, amíg meg nem történik. Mindez egy szálon történik, és a következő ciklus nem indulhat el, amíg az aktuális be nem fejeződik. A világ nem frissül, a játékosok nem fognak mozogni, és az entitások a helyükön maradnak. Ideális esetben egy tic legfeljebb 50 ms-ot vesz igénybe a 20 tic per másodperc (TPS) fenntartásához. Ez 18 TPS esetén akár 55,55 ms-ig is elmegy minimális problémákkal. Bármilyen ennél alacsonyabb, akkor késést fog látni.
A lemaradás tipikus okai
Sok dolog okozhat késést, de ezek közül néhány a legvalószínűbb hibás a legtöbb szerver számára.
- Fájlhasználat : Minden olyan bővítmény, amely folyamatosan olvas a lejátszó fájljaiból, különösen olyan események esetén, mint például mozgás, sérülés vagy interakció. Néhány példa lehet néhány PVP flag vagy Glow plugin, amelyek folyamatosan olvasnak a lejátszó fájljaiból.
- Lapos fájlok adatbázisként : Ha olyan beépülő moduljai vannak, amelyek nagy fájlokat használnak az adott fájlon keresztül vagy a memóriában ismétlődő adatok nyomon követésére, a tárolás módjától függően, ez hosszú ideig tart. Sok beépülő modul ezt teszi, és nem tesz óvintézkedéseket az ellen, hogy amikor az adatbázisok felduzzadnak, a feldolgozási idő hogyan befolyásolja a szerverek működését. Ezt gyakran látni fogja, amikor nagy MagicSpells-konfigurációkat tölt be, vagy olyan engedélyrendszereket használ, amelyek YAML-t használnak megfelelő adatbázisok, például PEX és GroupManager helyett.
- Túl sok művelet : Ha egy beépülő modul túl sok entitást hoz létre, vagy összetett feladatokat próbál végrehajtani eseményeken, például mozgáson, akkor késést fog látni. Még ha minden egyes futtatás kevesebb, mint 1 ms-ot vesz igénybe, ha egy eseményt másodpercenként 20 000-szor dolgoz fel, az exponenciális lesz. Ezt okozhatják a világszerkesztő beépülő modulok, például a VoxelSniper és a WorldEdit; vagy védelmi bővítmények, például az Anti Cheats és a World Protections.
- Túl sok darab van betöltve : Egy darab van
16*16*256. Lehet, hogy ez nem hangzik soknak, de kiszorozva azt jelenti, hogy darabonként 65 536 blokk van. A konfigurációtól függően minden játékos több mint 200 darabot helyezhet köré. Ez több mint 13 107 200 blokk. Ez sok memóriát foglal el. Továbbá, ha ezeknek akár 1%-a is TileEntities, akkor 131 072 TileEntity van betöltve, amelyeknek minden tic-t frissíteniük kell. A modok a TileEntities lassú feldolgozási idejéről híresek.
- Cascading WorldGen : Ez az, amikor egy beépülő modul vagy mod struktúrákat generál a neki adott darabon kívül. Ez azt okozza, hogy a következő darab betöltődik, generálódik, majd újra elindítja ezt az egészet, ha a struktúrák is elkezdenek túlcsordulni a következő darabba. Ez rossz tervezés az alkotók részéről, és minden ilyen beépülő modult vagy modot azonnal el kell távolítani.
- Csempe szervezetek : See LagGoggles pontban.
A késés okának megtalálása manapság általában egyszerű eljárás, mivel a legtöbb Minecraft szerverszoftver profilkészítő eszközökkel készül.
Időzítési jelentések a Spigot/PaperSpigot számára
Ha részletes időzítési jelentést szeretne kapni, használja a következő parancsot.
/timings on
Várjon néhány percet, és hagyja, hogy az időzítések lefussanak. Egy idő után hozza létre a jelentést.
/timings paste
Ez egy linket ad egy webhelyre, ahol a jelentés szép lebontása található, és egyszerű lehetőségeket kínál az összes kapott adat átvizsgálására. Ezek olvasásáról a Spigot időzítő wikijében tudhat meg többet .
Érdemes utólag kikapcsolni az időzítést, mivel nem szeretné, hogy a szemét adatok eltömítsék a következő olvasást, és az időzítések további időt adnak a ticnek.
/timings off
Időzítési jelentések a Sponge számára
Ha részletes időzítési jelentést szeretne kapni, használja a következő parancsot.
/sponge timings on
Várjon néhány percet, és hagyja, hogy az időzítések lefussanak. Egy idő után hozza létre a jelentést.
/sponge timings report
Ez egy linket ad egy webhelyre, ahol a jelentés szép lebontása található, és egyszerű lehetőségeket kínál az összes kapott adat átvizsgálására. Mivel a Sponge időzítési rendszere a Spigot rendszerén alapul, többet megtudhat arról, hogyan kell ezeket olvasni a Spigot időzítési wikijében .
Érdemes utólag kikapcsolni az időzítést, mivel nem szeretné, hogy a szemét adatok eltömítsék a következő olvasást, és az időzítések további időt adnak a ticnek.
/sponge timings off
Az időzítéseket is visszaállíthatja.
/sponge timings reset
Lépések a késés csökkentésére
- A Minecraft elindításához használjon megfelelő argumentumokat a szkriptfájlhoz. További információ a megfelelő Java argumentumokról itt
- Használjon LuckPerms-t vagy olyan engedélykezelőt, amely megfelelő adatbázist használ egy sima fájl helyett
- Kerülje el a darabos rakodókat
- Távolítson el mindent, ami lépcsőzetes világgenerációt okoz
- Korlátozza az Anti Cheat bővítményeket, hogy ne legyenek túlbuzgók
- Korlátozza a játékosok látótávolságát
server.properties
- Távolítsa el az ellenséges csőcseléket meghatározott idő után
- Indítsa újra a szervert naponta, hogy megtisztítsa a Java szivárgását
- SOHA ne töltse újra a szervert, mert ez szivárgást és egyéb problémákat okoz
- Használja a beépülő modulok FastAsync verzióit, például a WorldEdit és a VoxelSniper
- Korlátozza a világ méretét, hogy ne jöjjön létre folyamatosan új darabok
- Korlátozza a használt bővítmények számát. Nem minden beépülő modul van jól felépített, és minél több van, annál több problémával fog találkozni
LagGoggles
A módosított szerverek késésének nagy része a csempe entitásokból származik. Ezek a blokkokhoz létrehozott entitások, amelyek a blokk funkcióinak és eseményeinek feldolgozására szolgálnak. Ha ezek túl sokáig tartanak, vagy túl sok van, az megnövelheti a tic-enkénti időt, és csökkentheti a teljes szerver TPS-t. Ezeket a problémákat a LagGoggles nevű mod segítségével lehet megjeleníteni. Ezt a modot letöltheti a CurseForce webhelyről .