Bir Minecraft sunucusu dünyayı saniyede 20 kez hesaplar: buna TPS (saniyedeki tick sayısı) denir. Sunucu yetişemezse TPS 20'nin altına düşer ve her şey ağır çekimde ilerler: bloklar geç kırılır, moblar sıçrayarak hareket eder, çiftlikler bozulur. Bu, sunucudan kaynaklanan bir lag türüdür; ping (sizin bağlantınız) ile aynı şey değildir.
1. Hiçbir şeye dokunmadan önce ölçün
Paper'ın yeni sürümlerinde spark hazır gelir (eski sürümlerde eklenti olarak kurun):
/spark tps: TPS ve MSPT (her tick'in kaç milisaniye sürdüğü). 50 ms'nin altında sunucu rahattır; 50'yi geçerse TPS düşmeye başlar./spark profiler startve oyuncular birkaç dakika oynadıktan sonra/spark profiler stop: zamanı neyin tükettiğini (bir eklenti, bir çiftlik, varlıklar...) gösteren bir raporun bağlantısını verir.
Konsolda sık sık Can't keep up! Is the server overloaded? görüyorsanız sunucu geride kalıyordur. Başlangıçta bu normaldir; sürekli oluyorsa okumaya devam edin ve VPS'inizin kaynak kullanımına da bakın.
2. Resmi sunucuyu değil, Paper'ı kullanın
Paper (veya Purpur gibi türevleri), oyunu değiştirmeden Mojang sunucusunun birçok performans sorununu giderir. Modlarla (Fabric, Forge, NeoForge) oynuyorsanız Paper işinize yaramaz; Fabric'te Lithium modu performansı büyük ölçüde artırır.
3. Önerilen başlatma komutu
Paper belgeleri, takılmaları önlemek için Java'nın belleği nasıl boşalttığını ayarlayan ve Aikar bayrakları (Aikar's flags) olarak bilinen seçenekleri önerir. Linux yüklü 8 GB'lık bir VPS için (Minecraft'a 6,5 GB):
java -Xms6500M -Xmx6500M -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar paper.jar --nogui
Belleğinize göre yalnızca ilk iki değeri değiştirin (nasıl hesaplanır). Sunucuya 12 GB'tan fazla verecekseniz Paper belgeleri bazı değerleri farklı ayarlar: onların başlatma komutu oluşturucusunu kullanın.
Daha fazla RAM, daha fazla hız demek değildir. Minecraft işin neredeyse tamamını işlemcinin tek bir çekirdeğinde yapar. İhtiyaç duyduğu bellek karşılandıktan sonra daha fazlasını vermek TPS'i artırmaz.
4. Mesafeleri düşürün
server.properties dosyasında:
simulation-distance: dünyanın her oyuncunun çevresinde ne kadar uzağa kadar “çalıştığı” (moblar, ekinler, redstone). En çok yük getiren ayar budur: neredeyse her şey için 6 ile 8 arası iyidir.view-distance: ne kadar uzağın görüldüğü. 8 ile 10 arası iyi bir dengedir.
5. Dünyayı önceden oluşturun
Oyuncular keşif yaparken yeni arazi oluşturmak, özellikle elytra kullanılırken, en ağır işlerden biridir. Chunky eklentisiyle araziyi önceden, tercihen sunucuda kimse yokken oluşturursunuz:
/worldborder set 10000
/chunky radius 5000
/chunky start
Dünya sınırı, önceden oluşturulan alanın ötesinde arazi oluşmasını engeller.
6. En sık lag nedenleri
- Çok fazla varlık (entity): devasa çiftlikler, üst üste yığılmış hayvanlar, yerde duran eşyalar.
- Döngüye giren redstone: hiç durmayan saat devreleri.
- Ağır veya kötü yazılmış eklentiler: spark raporu hangisi olduğunu söyler.
- Önceden oluşturulmamış bir dünya ve aynı anda keşif yapan çok sayıda oyuncu.
Bunların hepsinden sonra bile oyuncular oynarken VPS'in işlemcisi %100'de kalıyorsa sunucu küçük gelmeye başlamıştır: hiçbir şey taşımadan planınızı yükseltin.