Performans, Veri ve Yedekleme
Chunk hazırlama, ada silme bütçeleri, seviye hesaplama, kalıcı veriler ve yedekleme stratejisi.
Ada oluşturma ve chunk hazırlama
Yeni ada teleportunda görüş alanındaki çok sayıda chunkın tek anda üretilmesini azaltmak için sıradaki ada alanları küçük asenkron partilerle hazırlanabilir. islands.pregeneration altında şunlar ayarlanır:
enabled: Ön hazırlamayı açar.islands-ahead: Kaç gelecek ada alanının hazırlanacağı.chunk-radius: Merkez çevresindeki yarıçap;-1Paper view-distance kullanır.chunks-per-batch: Bir partide başlatılan iş sayısı.max-in-flight: Aynı anda bekleyebilen async chunk isteği.tick-interval: Partiler arasındaki tick aralığı.
Yalnız ana dünya önceden hazırlanır. Nether ve End ilk kullanımda asenkron hazırlanır. Ön üretim CPU dalgasını zamana yayabilir ancak daha fazla disk alanı tüketir.
Ada silme
Silme işi blocks-per-tick ve max-millis-per-tick olmak üzere iki bütçeyle ilerler. Varsayılan olarak yalnız satın alınmış mevcut border alanı taranır ve üretilmemiş chunklar yüklenmez. scan-maximum-border: true, border dışında yönetici araçlarıyla oluşturulmuş yapıları da arayabilir fakat daha pahalıdır.
Silme kaydı fiziksel temizlikten önce diske yazılır. Sunucu kapanırsa görev sonraki açılışta tekrar kuyruğa alınır. Temizlik oyuncunun yeniden oluşturma cooldownından ayrı yürür.
Ada seviyesi
config/block-levels.yml içindeki material değerleri dünyada yerleştirilmiş bloklardan seviye üretir. Container içindeki itemlar ve oyuncu envanteri sayılmaz. TekBlok merkezi ve etkin destek koordinatı hariç tutulur.
Normal kırma, koyma, patlama ve piston olayları puan farkını doğrudan uygular. Yoğun değişiklikler gecikmeli tek kayıtta birleştirilir. Seyrek audit, harici pluginlerin olay üretmeden yaptığı değişiklikleri kontrol eder; var olmayan chunkları üretmez ve snapshot sayımını ana thread dışında yürütür.
Kalıcı veriler
| Dosya | İçerik |
|---|---|
data/islands.yml | Ada UUID/indeks, sahip, üyeler, banlar, trust, kırma, seviye, upgradeler, home, warp, silme durumu. |
data/players.yml | Oyuncu UUID ve dil tercihi. |
data/player-progress.yml | Kişisel toplam, tier ve material kırma sayaçları. |
YAML verileri tek iş parçacıklı arka plan yazıcısıyla geçici dosyaya alınır ve mümkün olduğunda atomik taşıma ile değiştirilir. Bukkit dünya değişiklikleri rastgele async threade gönderilmez.
Performans beklentisi
Bu mekanizmalar ana thread yükünü sınırlamayı hedefler; sabit TPS/MSPT garantisi vermez. Sonuçlar view-distance, pregeneration yarıçapı, disk, işlemci, eşzamanlı oyuncular, entity yoğunluğu ve diğer pluginlere bağlıdır. Değişiklikleri kendi üretim donanımınıza yakın bir test sunucusunda Spark ile ölçün.