Giriş

Size mükemmel sonuçlar verecek bir rehber asla olmayacak. Her sunucunun kendi ihtiyaçları ve ne kadar fedakarlık yapabileceğinize veya ne kadar fedakarlık etmeye istekli olduğunuza dair sınırları vardır. Tüm mesele, bunları sunucularınızın ihtiyaçlarına göre ince ayar yapma seçenekleriyle uğraşmaktır. Bu kılavuz yalnızca hangi seçeneklerin performans üzerinde etkisi olduğunu ve tam olarak neyi değiştirdiğini anlamanıza yardımcı olmayı amaçlamaktadır.

Rehber her daim son sürüm sunucular için ayarlanmıştır.

Eski sürümlerde benzer ayarlar bulunmaktadır fakat yerleri değişiklik gösterebilir. Ayarları benzer isimlerle aratabilirsiniz.

Hazırlık

Sunucu yazılımı seçiminiz, performans ve API olasılıklarında büyük bir fark yaratabilir. Şu anda birden fazla geçerli popüler sunucu yazılımı var, ancak çeşitli nedenlerle uzak durmanız gerekenlerde bulunuyor.‌

Önerilen en iyi seçimler:

Oynanış ve mekanik tutarsızlıklarını düzeltirken performansı artırmayı amaçlayan en popüler sunucu yazılımı.

Tuinity ile birleştirilmesi ardından çok oyunculuda daha fazla performans sağlamaya başladı.

Paper forku, özelliklere ve kişiselleştirme özgürlüğüne odaklandı.

1.18’de AirPlane geliştirilmesi durdurulması ardından, AirPlane özellikleri ile birleştirilmiş, sunucu performansını arşa taşıyan efsanevi Paper forku.
(Pufferfish’te AirPlane devamıdır. Aralarında yapılan son anlaşmayla beraber, Pufferfish geliştirmeleride Purpur’a dahil olmaya başlamıştır.)

Şunlardan uzak durmalısınız:

Söylenecek çok fazla bir şey yok. Proje aslında bir çok Minecraft sunucu yazılımını bir araya getirerek en iyi optimizasyonu sağlamaktı fakat işler pekte istenildiği gibi gitmedi.‌

Paper’ın çok oyunculuda daha fazla performans artışını hedeflemişti ve başarılıda oldu fakat artık Paper ile birleşip, Tuinity geliştirilmesi durduruldu.

Sunucu performansını daha da iyileştirmeyi amaçlayan Tuinity ve Purpur forkuydu. Ve bunda da çok iyi şekilde başarılı oldu. Fakat “Paul” adlı geliştiricisi 1.18 ve sonrası için yükseltme olmayacağını ve Paper ile devam etmemiz gerektiğini söyledi.

ASYNC iddia eden herhangi ücretli sunucu başlatıcı yazılımları

%99.9 dolandırıcıdır.‌

Bukkit/Craftbukkit/Spigot

Erişiminiz olan diğer sunucu yazılımlarına kıyasla performans açısından son derece eski. Çalışma zamanında eklentileri etkinleştiren/devre dışı bırakan/yeniden yükleyen herhangi bir eklenti/yazılım. Nedenini anlamak için bu bölüme bakın. ‌

Haritayı önceden yükleme

Düşük bütçeli bir sunucuyu geliştirmenin en önemli adımlarından biridir. Bu işlem VDS sunucularına, ASYNC yığın yüklemesini tam olarak kullanamadıkları için yardımcı olur. Dünyayı önceden oluşturmak için chunk yükleyen bir eklenti kullanabilirsiniz. Oyuncularınızın yeni parçalar oluşturmaması için bir dünya sınırı oluşturduğunuzdan emin olun! Önceden oluşturmanın, chunk yükleme eklentisinde ayarladığınız yarıçapa bağlı olarak bazen saatler sürebileceğini unutmayın.‌

Overworld, nether ve end’in her bir dünya için ayarlanması gereken ayrı dünya sınırlarına sahip olduğunu hatırlamak önemlidir. Alt boyut, üst dünyadan 8 kat daha küçüktür (bir veri paketi ile değiştirilmediyse), bu nedenle boyutu yanlış ayarlarsanız oyuncularınız dünya sınırlarının dışına çıkabilir!‌

Gecikme artışlarına neden olabilecek hazine haritaları için arama aralığı gibi belirli işlevleri sınırladığı için bir vanilya dünya sınırı (/worldborder set [radius]) kurduğunuzdan emin olun.


Konfigürasyonlar

Ağ optimizasyonu

server.properties

network-compression-threshold | Optimizeli değer: 256

Bu, sunucu paketi sıkıştırmaya çalışmadan önce paketin boyutu için sınırı ayarlamanıza olanak tanır. Daha yükseğe ayarlamak, bazı CPU kaynaklarını bant genişliği pahasına kaydedebilir ve -1’e ayarlamak onu devre dışı bırakır. Bunu daha yükseğe ayarlamak, daha yavaş ağ bağlantılarına sahip istemcilere de zarar verebilir. Sunucunuz proxy’li bir ağdaysa veya aynı makinedeyse (2 ms’den az ping ile), dahili ağ hızları genellikle ek sıkıştırılmamış trafiği kaldırabileceğinden, bunu (-1) devre dışı bırakmak faydalı olacaktır.‌

purpur.yml

use-alternate-keepalive | Optimizeli değer: true

Purpur’un alternatif canlı tutma sistemini etkinleştirebilir, böylece bağlantısı kötü olan oyuncuların zaman aşımına uğramamasını sağlayabilirsiniz. TCPShield kullanıyorsanız sorun yaşayabilirsiniz.

Bunu etkinleştirmek, bir oyuncuya saniyede bir canlı tutma paketi gönderir ve yalnızca 30 saniye içinde hiçbirine yanıt verilmezse zaman aşımı için başlar. Bunlardan herhangi birine herhangi bir sırayla yanıt vermek, oynatıcıyı bağlı tutacaktır. Diğer bir deyişle, oyuncularınızı tekmelemez çünkü hat boyunca bir yere 1 paket düşer. https://purpur.pl3x.net/docs/Configuration/#use-alternate-keepalive

Chunklar

spigot.yml

simulation-distance | Optimizeli değer: 4

Simülasyon mesafesi, sunucunun işleyebileceği oyuncunun etrafındaki chunk mesafesidir. Bu işlenen şeyler şunun gibi şeylerdir: Fırınlar, ekinler ve fidan büyümesi vb. Görüş mesafesi nedeniyle 3 veya 4 civarında bir yere ayarlayabilirsiniz. Bu sayede daha fazla uzaktaki parçacıkları işlemeyerek, daha fazla görüş mesafesi kazanabilirsiniz. Bu, oyuncuların performansa etkisi olmadan daha fazlasını görmelerini sağlar.

view-distance | Optimizeli değer: 7

Görüş mesafesi, sunucunun işaretleyeceği oyuncunun etrafındaki parçalardaki mesafedir. Esasen, şeylerin olacağı oyuncudan uzaklık. Bu, eritme fırınları, ekinler ve büyüyen fidanları vb. içerir. Bu değeri spigot.yml’de ayarlamalısınız, çünkü [server.properties] öğesindeki değerin üzerine yazar ve her dünya için ayarlanabilir. Bu, kenesiz görüş mesafesinin varlığından dolayı 3 veya 4 civarında bir yere bilerek düşük ayarlamak istediğiniz bir seçenektir. Oyuncuları işaretlemeden daha fazla parça yüklemesine izin verir. Bu oyuncuların aynı performans etkileri olmadan daha fazlasını görmelerini sağlar.‌

paper.yml

redstone-implementation | Optimizeli değer: ALTERNATE_CURRENT

Kızıltaş sinyallerini yeni hesaplama türleri ile daha doğru bir şekilde iletir. Bu vanilya özelliğinde bazı şeylere bozulmasına sebep olabilir ama varsayılan sunucu değerinden çok daha iyi değerler size sunabilir.

no-tick-view-distance | Optimizeli değer: 7

Bu seçenek, oyuncuların göreceği parçalar halinde maksimum mesafeyi ayarlamanıza olanak tanır. Bu daha düşük görüş mesafesine sahip olmanızı ve yine de oyuncuların daha fazlasını görmelerini sağlar. Gerçek görüş mesafesinin ötesindeki parçaların tıklanmayacağını, ancak yine de depolama alanınızdan yükleneceğini bilmek önemlidir, bu nedenle aşırıya kaçmayın. 10, temelde bunu ayarlamanız gereken maksimum değerdir. Şu andan itibaren, görüş mesafesi ayarından bağımsız olarak istemciye parçalar gönderiliyor, bu nedenle bu seçenek için daha yüksek değerlere gitmek, daha yavaş bağlantılara sahip oyuncular için sorunlara neden olabilir.‌

delay-chunk-unloads-by | Optimizeli değer: 10

Bu seçenek, bir oyuncu ayrıldıktan sonra parçaların ne kadar süreyle yüklü kalacağını yapılandırmanıza olanak tanır. Bu, bir oyuncu ileri geri hareket ettiğinde aynı parçaları sürekli olarak yüklememeye ve boşaltmamaya yardımcı olur. Çok yüksek değerler, aynı anda çok fazla parçanın yüklenmesine neden olabilir. Sık sık ışınlanan ve yüklenen alanlarda, alanı kalıcı olarak yüklü tutmayı düşünün. Bu, sunucunuz için sürekli olarak parçaları yüklemek ve boşaltmaktan daha hafif olacaktır. Tuinity kullanıyorsanız, tuinity.yml’deki aynı ada sahip seçeneği değiştirmelisiniz, çünkü paper.yml’deki seçeneğin üzerine yazar.‌

max-auto-save-chunks-per-tick | Optimizeli değer: 8

Daha iyi ortalama performans için görevi zamana daha da yayarak artan dünya tasarrufunu yavaşlatmanızı sağlar. Bunu 20-30’dan fazla oyuncuyla 8’den daha yükseğe ayarlamak isteyebilirsiniz. Artımlı kaydetme zamanında tamamlanamazsa, bukkit otomatik olarak kalan parçaları bir kerede kaydedecek ve işleme yeniden başlayacaktır.‌

prevent-moving-into-unloaded-chunks | Optimizeli değer: true

Etkinleştirildiğinde, oyuncuların yüklenmemiş parçalara geçmesini ve ana dizide tıkanıp gecikmeye neden olan senkronizasyon yüklerine neden olmasını engeller. Bir oyuncunun yüklenmemiş bir yığına tökezleme olasılığı, tıklamasız izleme mesafeniz ne kadar düşükse o kadar yüksektir.‌

entity-per-chunk-save-limit

Optimizeli değerler:
    area_effect_cloud: 8
    arrow: 16
    dragon_fireball: 3
    egg: 8
    ender_pearl: 8
    experience_bottle: 3
    experience_orb: 16
    eye_of_ender: 8
    fireball: 8
    firework_rocket: 8
    llama_spit: 3
    potion: 8
    shulker_bullet: 8
    small_fireball: 8
    snowball: 8
    spectral_arrow: 16
    trident: 16
    wither_skull: 4

Bu ayar yardımıyla, belirtilen türden kaç tane varlığın kaydedilebileceğine ilişkin sınırlar belirleyebilirsiniz. Çok büyük miktarda merminin kaydedilmesine ve sunucunuzun bunu yüklerken çökmesine neden olan sorunlardan kaçınmak için en azından her varlık için bir sınır sağlamalısınız. Lütfen limitleri kendinize göre ayarlayın. Tüm varlıklar için önerilen değer 10 civarındadır. Bu listeye tür adlarına göre başka varlıklar da ekleyebilirsiniz. Bu yapılandırma seçeneği, oyuncuların büyük mafya çiftlikleri oluşturmasını engellemek için tasarlanmamıştır.

pufferfish.yml

max-loads-per-projectile | Optimizeli değer: 8‌

Bir fırlatılabilir eşyanın gittiği süre boyunca yükleyebileceği maksimum chunk miktarını belirtir. Azaltılması, fırlatılabilir eşyaların/varlıkların neden olduğu chunk yüklerini azaltacaktır, ancak trident, enderpearl vb. ile ilgili sorunlara neden olabilir.

Varlıklar

bukkit.yml

spawn-limits

Optimizeli değerler:
    monsters: 20
    animals: 5
    water-animals: 2
    water-ambient: 2
    water-underground-creature: 3
    ambient: 1
    axolotls: 3

Varlıkları sınırlamanın matematiği [oyuncu sayısı] * [limit] şeklindedir, burada “oyuncu sayısı” sunucudaki mevcut oyuncu miktarıdır. Mantıksal olarak, sayılar ne kadar küçükse, o kadar az varlık göreceksiniz. “per-player-mob-spawn” buna ek bir sınır uygulayarak varlıkların oyuncular arasında eşit olarak dağılmasını sağlar. Bunu azaltmak iki ucu keskin bir kılıçtır; evet, sunucunuzun yapacak daha az işi var, ancak bazı oyun modlarında doğal olarak ortaya çıkan varlıklar oyunun büyük bir parçası. “Mob-spawn-range”‘ı düzgün ayarlarsanız, 20 veya daha azına inebilirsiniz. “Mob-spawn” aralığını daha düşük ayarlamak, her oyuncunun etrafında daha fazla mob varmış gibi hissettirir. Tuinity kullanıyorsanız, [tuinity.yml]’de dünya başına mob limitleri belirleyebilirsiniz.‌

ticks-per

Optimizeli değerler:
    monster-spawns: 10
    animal-spawns: 400
    water-spawns: 400
    water-ambient-spawns: 400
    water-underground-creature-spawns: 400
    ambient-spawns: 400
    axolotl-spawns: 400

Bu seçenek, sunucunun belirli canlı varlıkları ne sıklıkta (tik olarak) oluşturmaya çalışacağını belirler. Su/ortam çetelerinin her bir keneyi ortaya çıkarmaları gerekmez, çünkü genellikle bu kadar çabuk öldürülmezler. Canavarlara gelince: Ortaya çıkışlar arasındaki süreyi biraz artırmak, varlık çiftliklerinde bile yumurtlama oranlarını etkilememelidir. Çoğu durumda, bu seçeneğin altındaki tüm değerler 1’den yüksek olmalıdır. Bunu daha yükseğe ayarlamak, sunucunuzun varlık oluşturmanın devre dışı bırakıldığı alanlarla daha iyi başa çıkmasına da olanak tanır.‌

spigot.yml

mob-spawn-range | Optimizeli değer: 2

Varlıkların oyuncunun etrafında doğacağı aralığı (parçalar halinde) azaltmanıza izin verir. Sunucunuzun oyun moduna ve oyuncu sayısına bağlı olarak, bukkit.yml’nin ortaya çıkma limitleriyle birlikte bu değeri azaltmak isteyebilirsiniz. Bunu daha düşük ayarlamak, etrafınızda daha fazla çete varmış gibi hissetmenizi sağlayacaktır. Bu, görüş mesafenizden daha düşük veya buna eşit olmalı ve asla menzilinizden / 16’dan büyük olmamalıdır.‌

entity-activation-range

Optimizeli değerler:
    animals: 16
    monsters: 24
    raiders: 48
    misc: 8
    water: 8
    villagers: 16
    flying-monsters: 48

Bir varlığın işaretlemesi (bir şeyler yapması) için oyuncudan ne kadar uzakta olması gerektiğini ayarlayabilirsiniz. Bu değerleri azaltmak performansa yardımcı olur, ancak oyuncu onlara gerçekten yaklaşana kadar tepkisiz varlıklara neden olabilir. Bunu çok fazla düşürmek bazı varlık çiftliklerini bozabilir; demir çiftlikleri için en yaygın çözümdür.‌

entity-tracking-range

Optimizeli değerler:
    players: 48
    animals: 48
    monsters: 48
    misc: 32
    other: 64

Varlıkların görüneceği bloklardaki mesafedir. Sadece oyunculara gönderilmeyecekler. Çok düşük ayarlanırsa, bu, varlıkların bir oyuncunun yakınında aniden ortaya çıkmasına neden olabilir. Çoğu durumda bu, “entity-activation-range” değerlerinden daha yüksek olmalıdır.‌

tick-inactive-villagers | Optimizeli değerler: false

Köylülerin etkinleştirme aralığının dışında işaretlenip işaretlenmeyeceğini kontrol etmenizi sağlar. Köylülerin normal şekilde ilerlemesini ve aktivasyon aralığını görmezden gelmesini sağlayacaktır. Bunu devre dışı bırakmak performansa yardımcı olur, ancak bazı durumlarda oyuncular için kafa karıştırıcı olabilir. Bu, demir çiftlikleri ve ticari stoklama ile ilgili sorunlara neden olabilir.‌

nerf-spawner-mobs | Optimizeli değerler: true

Bir canavar yumurtlayan tarafından oluşturulan varlıkarın yapay zekasız olmasını sağlayabilirsiniz. Özellikleri alınmış varlık hiçbir şey yapmaz. Paper.yml’de “spawner-nerfed-mobs-should-jump: true” olarak değiştirerek sudayken atlamalarını sağlayabilirsiniz.‌

paper.yml

despawn-ranges

Optimizeli değerler:
      monster:
        soft: 30
        hard: 56
      creature:
        soft: 30
        hard: 56
      ambient:
        soft: 30
        hard: 56
      axolotls:
        soft: 30
        hard: 56
      underground_water_creature:
        soft: 30
        hard: 56
      water_creature:
        soft: 30
        hard: 56
      water_ambient:
        soft: 30
        hard: 56
      misc:
        soft: 30
        hard: 56

Varlık kaybolma aralıklarını (bloklar halinde) ayarlamanıza izin verir. Oyuncudan uzaktaki varlıkları daha hızlı temizlemek için bu değerleri düşürün. “soft” menzili 30 civarında tutmalı ve sabit menzili gerçek görüş mesafenizden biraz daha fazla ayarlamalısınız, böylece oyuncu yüklenen bir yığın noktasının hemen ötesine geçtiğinde varlıklar hemen kaybolmaz (gecikme nedeniyle bu iyi çalışır- paper.yml’de “delay-chunk-unloads-by”). Bir varlık “hard” aralığın dışına çıktığında anında yok olur. “soft” ve “hard” aralık arasındayken, rastgele bir umutsuzluk şansına sahip olacaktır. Sabit menziliniz yumuşak menzilinizden daha büyük olmalıdır. Bunu (görüş mesafesi * 16) + 8’i kullanarak görüş mesafenize göre ayarlamalısınız. Bu, kısmen, oyuncu onları ziyaret ettikten sonra henüz boşaltılmamış parçaları hesaba katar.‌

per-player-mob-spawns | Optimizeli değer: true

Bu seçenek, mafya yumurtlamalarının, hedef oyuncunun çevresinde halihazırda kaç varlığın bulunduğunu hesaba katması gerekip gerekmediğine karar verir. Tüm mobcap’ı kaplayan çiftlikler oluşturan oyuncular nedeniyle, varlık doğmalarında tutarsız olmasıyla ilgili birçok sorunu atlayabilirsiniz. Bu, daha düşük doğma limitleri belirlemenize izin vererek daha tek oyunculu benzeri bir doğma deneyimi sağlayacaktır. Bunu etkinleştirmek, performans üzerinde çok hafif bir etkiye sahiptir, ancak etkisi, izin verdiği doğma limitlerindeki iyileştirmeler tarafından gölgede bırakılmıştır.‌

max-entity-collisions | Optimizeli değer: 2

spigot.yml’de aynı ada sahip seçeneğin üzerine yazar. 0 değeri, oyuncular da dahil olmak üzere diğer varlıkları zorlayamaz. Çoğu durumda 2 değeri yeterli olmalıdır. Değeri bu yapılandırma seçeneğinin değerinin üzerindeyse, bunun maxEntityCramming gamerule’u işe yaramaz hale getireceğini belirtmekte fayda var.‌

update-pathfinding-on-block-update | Optimizeli değer: false

Bunu devre dışı bırakmak, daha az yol bulma yapılmasına ve performansın artmasına neden olur. Bazı durumlarda bu, varlıkların daha gecikmeli görünmesine neden olur; Her 5 tıklamada (0.25 saniye) yollarını pasif olarak güncellerler.‌

fix-climbing-bypassing-cramming-rule | Optimizeli değer: true

Bunun etkinleştirilmesi, varlıkların tırmanırken tıkanıklıktan etkilenmemesini düzeltecektir. Bu, tırmanıyor olsalar bile (örümcekler) saçma sapan küçük alanlarda istiflenmesini önleyecektir.‌

armor-stands.tick | Optimizeli değer: false

Çoğu durumda bunu güvenle false olarak ayarlayabilirsiniz. Zırh standları veya davranışlarını değiştiren herhangi bir eklenti kullanıyorsanız ve sorun yaşıyorsanız, yeniden etkinleştirin. Bu, zırh stantlarının su tarafından itilmesini veya yerçekiminden etkilenmesini önleyecektir.‌

armor-stands.do-collision-entity-lookups | Optimizeli değer: false

Burada zırh standı çarpışmalarını devre dışı bırakabilirsiniz. Bu, çok sayıda zırh standınız varsa ve bunların hiçbir şeyle çarpışmasına gerek yoksa yardımcı olacaktır.‌

tick-rates

Optimizeli değerler:

  behavior:
    villager:
      validatenearbypoi: 60
      acquirepoi: 120
  sensor:
    villager:
      secondarypoisensor: 80
      nearestbedsensor: 80
      villagerbabiessensor: 40
      playersensor: 40
      nearestlivingentitysensor: 40

Pufferfish DAB özelliği etkinken bu değerleri varsayılan değerlerinden farklı olarak değiştirmeniz önerilmez!

Bu varlıkların, etrafındaki olan olaylara verdiği tepki süreleridir. Eğer köylülerde garip hareketler seziyorsanız, bu değerleri küçültün.

pufferfish.yml

dab | Optimizeli değer: true

DAB (zekanın dinamik aktivasyonu), bir varlığın oyunculardan uzaklaştıkça zekasının çalışma miktarını azaltır. DAB, EAR gibi sert bir kesme yerine bir eğim üzerinde çalışır. DAB, yakın varlıkları tamamen fonksiyonel kılar ve uzaktaki varlıkları “aktivasyon-dist-mod” değerine göre çalışmasını ayarlar.

max-tick-freq | Optimizeli değer: 20

Bu seçenek, oyunculardan en uzaktaki varlıkların işaretleneceği en yavaş miktarı tanımlar. Bu değeri artırmak, görünümden uzaktaki varlıkların performansını iyileştirebilir, ancak çiftlikleri bozabilir veya çete davranışını büyük ölçüde bozabilir.‌

activation-dist-mod | Optimizeli değer: 9

Varlıkların gradyanı kontrol eder. DEAR, yakın varlıkları tam olarak işaretlemek ve uzaktaki varlıkları zar zor işaretlemek yerine, bu hesaplamanın sonucuna göre bir varlığın işaretlendiği miktarı azaltacaktır. Bunu azaltmak, DEAR’ı oyunculara daha yakın hale getirerek DEAR’ın performans kazanımlarını iyileştirecek, ancak varlıkların çevreleriyle nasıl etkileşime girdiğini etkileyecek ve mafya çiftliklerini kırabilecek.exit: Ctrl+↩

DEAR nedir?

Air.plane yazılımının içine bulunan optimizasyon özelliğidir. Dynamic Entity Activation Range (Dinamik varlık aktivasyon mesafesi) olarak geçmektedir. Varlıklar oyunculardan ne kadar uzaksa, yapay zekaları o kadar az işlem yapmaktadır.

Örnek vermek gerekirse; bir koyunun yünleri kırpıldığında tekrar geri gelmesi için çimen yemelidir. Eğer ki oyuncudan uzakta olursa bu işlem geciktirilir ve sürekli olarak işlem yapması önlenir.

Bir diğer örneğimiz: Alaz yaratıkları saldırı yapabilmek için etrafında oyuncu ararlar, bu arama sıklıkları azaltılarak, sunucu performansı arttırılır.‌

purpur.yml

aggressive-towards-villager-when-lagging | Optimizeli değer: false

Bunu etkinleştirmek, sunucu purpur.yml’de gecikme eşiği ile ayarlananTPS eşiğinin altındaysa zombilerin köylüleri hedeflemeyi durdurmasına neden olur.‌

entities-can-use-portals | Optimizeli değer: false

Bu seçenek, oynatıcı dışındaki tüm varlıkların portal kullanımını devre dışı bırakabilir. Bu, varlıkların ana iş parçacığında işlenen dünyaları değiştirerek yığınları yüklemesini önler. Bu, varlıkların portallardan geçememe yan etkisine sahiptir.‌

villager.brain-ticks | Optimizeli değer: 2

Bu seçenek, köylü beyinlerinin (iş ve poi) ne sıklıkta (tick halinde) işaretleyeceğini ayarlamanıza olanak tanır. 3’ten daha yükseğe çıkmanın köylüleri tutarsız/hatalı yaptığı onaylandı.‌

villager.lobotomize | Optimizeli değer: true

Lobotomize edilmiş köylüler yapay zekaları silinir ve tekliflerini yalnızca sık sık yeniden stoklar. Bunu etkinleştirmek, sıkıştırılan köylüleri lobotomize edecektir. Onları serbest bırakmak, eski hallerine döndürmelidir.‌

Çeşitli optimizeler

spigot.yml

merge-radius

Optimizeli değerler:  
  item: 3.5
  exp: 4.0

Bu, birleştirilecek eşyalar ve tecrübe puanları arasındaki mesafeye karar vererek eşyaların birleşme mesafesini azaltır. Bunu çok yükseğe ayarlamak, bir araya geldikçe öğelerin veya deneyimlerin kaybolması yanılsamasına yol açacak, bazı çiftlikleri kıracak ve ayrıca öğelerin bloklar arasında ışınlanmasına izin verecektir. Öğelerin duvarlardan birleşmesini önlemek için yapılan herhangi bir kontrol yoktur. Tecrübe puanları yalnızca oluşturma sırasında birleştirilir.‌

hopper-transfer | Optimizeli değer: 8

Hunilerin bir öğeyi taşımak için bekleyeceği tik cinsinden süre. Bunu artırmak, sunucunuzda çok fazla hazne varsa performansı artırmaya yardımcı olur, ancak çok yüksek ayarlanırsa huni tabanlı saatleri ve muhtemelen öğe sıralama sistemlerini bozar.‌

hopper-check | Optimizeli değer: 8

Üstlerindeki bir öğeyi kontrol eden huniler arasındaki tik süresi. Bunu artırmak, sunucunuzda çok fazla huni varsa performansa yardımcı olur, ancak huni tabanlı saatleri ve su akışlarına dayanan öğe sıralama sistemlerini bozar.exit: Ctrl+↩

Tik “Tick” nedir?

İngilizcede “tick” olan geçen kavram, saniyede yapabileceği işlem anlamını yükleyebiliriz. Minecraft oyunun “tick” değeri 20’dir. Oyunda 1 saniye, 20 tik olarak geçmektedir.

Bu tick değerlerini oranlayarak, oyun içerisinde bazı işlemleri daha hızlı hale getirebilirsiniz.‌

paper.yml

alt-item-despawn-rate

      enabled: true
      items:
          COBBLESTONE: 300
          NETHERRACK: 300
          SAND: 300
          RED_SAND: 300
          GRAVEL: 300
          DIRT: 300
          GRASS: 300
          PUMPKIN: 300
          MELON_SLICE: 300
          KELP: 300
          BAMBOO: 300
          SUGAR_CANE: 300
          TWISTING_VINES: 300
          WEEPING_VINES: 300
          OAK_LEAVES: 300
          SPRUCE_LEAVES: 300
          BIRCH_LEAVES: 300
          JUNGLE_LEAVES: 300
          ACACIA_LEAVES: 300
          DARK_OAK_LEAVES: 300
          CACTUS: 300
          DIORITE: 300
          GRANITE: 300
          ANDESITE: 300
          SCAFFOLDING: 600

Bu liste, belirli türden bırakılan öğeleri varsayılandan daha hızlı veya daha yavaş umutsuzluğa düşürmek için alternatif zaman (tick halinde) ayarlamanıza olanak tanır. Bu seçenek, performansı artırmak için birleştirme yarıçapı ile birlikte öğe temizleme eklentileri yerine kullanılabilir.‌

use-faster-eigencraft-redstone | Optimizeli değer: true

Etkinleştirildiğinde, redstone sistemi, yükü azaltan daha hızlı ve alternatif bir sürümle değiştirilir. Bunu etkinleştirmek, oyun tutarsızlıklarını ortaya çıkarmadan performansı önemli ölçüde artırabilir. Bunu etkinleştirmek, craftbukkit’teki bazı redstone tutarsızlıklarını bile düzeltecektir.‌

hopper.disable-move-event | Optimizeli değer: false

“InventoryMoveItemEvent” olayını aktif olarak dinleyen bir eklenti olmadığı sürece sıkıntı çıkarmaz. Bu tür eklenti(ler)iniz varsa ve onların bu event ile hareket edememelerini umursamıyorsanız, bunu “true” olarak ayarlamanız gerektiği anlamına gelir. Ama kullanıyorsanız, kesinlikle “false” olmalı. Aksi taktirde kilitli sandıktan huni ile eşya çekme gibi açıklar sunucunuzda oluşabilir.exit: Ctrl+↩

Event nedir?

Oyunlarda olaylar gerçekleşirken kontrol edilmesi için oluşturulan dinleme kodudur. Oyunda oluşan olayları dinleyerek, bir çok işlem kolayca yapılabilir.‌

hopper.ignore-occluding-blocks | Optimizeli değer: true

Blokların içerisinde sıkıştırılmış vagonlu huni gibi şeyleri görmezden gelmesini ayarlar.

tick-rates.mob-spawner | Optimizeli değer: 2

Bu seçenek, doğurucuların ne sıklıkla doğurma işlemini yapılandırmanıza olanak tanır. Daha yüksek değerler, çok sayıda doğurucunuz varsa daha az gecikme anlamına gelir, ancak çok yüksek ayarlanırsa (doğurucu gecikmenize göre) varlık doğma oranları düşecektir.‌

optimize-explosions | Optimizeli değer: true

Bunu “true” olarak ayarlamak, patlama hasarını hesaplarken hafif bir yanlışlık pahasına vanilya patlama algoritmasını daha hızlı bir algoritmayla değiştirir. Bu genellikle fark edilmez.‌

treasure-maps.enabled | Optimizeli değer: false

Hazine haritaları oluşturmak son derece sunucu performansını etkileyecek türdedir ve bulmaya çalıştığı yapı önceden oluşturulmuş dünyanızın dışındaysa, sunucuda performans sorunlarına neden olabilir. Bunu etkinleştirmek yalnızca dünyanızı önceden oluşturduysanız ve bir vanilya dünya sınırı belirlediyseniz güvenlidir.‌

treasure-maps.find-already-discovered | Optimizeli değer: true

Bu seçeneğin varsayılan değeri, yeni oluşturulan haritaları, genellikle önceden oluşturulmuş arazinizin dışında bulunan keşfedilmemiş yapıları aramaya zorlar. Bunu “true” olarak ayarlamak, haritaların daha önce keşfedilen yapılara yol açabilmesini sağlar. Bunu “true” olarak değiştirmezseniz, yeni hazine haritaları oluştururken sunucuda performans sorunlarına veya çökmesi ile karşılaşabilirsiniz.‌

tick-rates.grass-spread | Optimizeli değer: 4

Ot veya miselyum yayılma sıranda tick bakımından geçen süre. Bu süreyi arttırmak, yanındaki toprakların, çimen veya miselyuma dönüşmesi biraz daha uzun sürecektir. Yayılma hızı fark edilmeden azaltmak istiyorsanız, 4’e ayarlamak yeterli olacaktır.‌

tick-rates.container-update | Optimizeli değer: 1

Konteynırların güncellenme süresi. Bunu artırmak, konteynırların güncellemelerinin sizin için sorunlara neden olması durumunda yardımcı olabilir (nadiren olur), ancak oyuncuların envanterlerle (hayalet öğeler) etkileşim kurarken senkronizasyon bozukluğu yaşamasını kolaylaştırır.‌

non-player-arrow-despawn-rate | Optimizeli değer: 20

Moblar tarafından atılan okların bir şeye çarptıktan sonra kaybolması gereken tick bakımından geçen süre. Oyuncular bunları zaten alamazlar, bu yüzden bunu 20 (1 saniye) gibi bir değere ayarlayabilirsiniz.‌

creative-arrow-despawn-rate | Optimizeli değer: 20

Yaratıcı modda oyuncular tarafından atılan okların bir şeye çarptıktan sonra kaybolması gereken tick bakımından geçen süre. Oyuncular bunları zaten alamazlar, bu yüzden bunu 20 (1 saniye) gibi bir değere ayarlayabilirsiniz.‌

purpur.yml

dolphin.disable-treasure-searching | Optimizeli değer: true

Yunusların hazine haritalarına benzer yapı araması yapmasını engeller.‌

teleport-if-outside-border | Optimizeli değeri: true

Oyuncu, dünya sınırının dışındaysa, oyuncuyu dünya başlangıç noktasına ışınlamanıza izin verir. Vanilya dünya sınırı atlanabilir olduğundan ve oyuncuya verdiği zarar azaltılabileceğinden faydalıdır.‌

Yardımcı optimizasyonlar

paper.yml

anti-xray | Optimizeli değer: true

Cevherlerin duvar arkasından gizlemek için bunu etkinleştirin. Bunu etkinleştirmek aslında performansı düşürür, ancak herhangi bir anti-xray eklentisinden çok daha verimlidir. Çoğu durumda performans etkisi ihmal edilebilir düzeyde olacaktır.

Dikkat!

Sunucuya performansında bir sorun oluşturmasada, oyuncuların kendi oyunlarında problemlere yol açabilmektedir. Sunucu içerisinde X-ray’in açık olduğu bir yere ışınlanmak, oyuncunun gecikme (PING) seviyesini geçici olarak arttırabilir.

Bu özelliğin ayrıntılı yapılandırması için:

remove-corrupt-tile-entities | Optimizeli değer: true

Konsolunuzda tile entityleriyle ilgili hata spamları alıyorsanız, bunu “true” olarak değiştirin. Bu, hatayı yok saymak yerine hataya neden olan tüm tile entityleri kaldıracaktır. Tile entity hakkında sık sık uyarı alıyorsanız, bunların neden bozulduğunu araştırın. Bu ayar kökten bir çözüm değildir.exit: Ctrl+↩

Tile entity nedir?

Bir varlığa ve bloğa özel, ekstra bilgiler saklamak amacıyla kullanılan bir yoldur.

Örnek vermek gerekirse, sandığın içinde saklanan eşyalar, örste yaptığınız işlemler ve fırın içerisinde yemeklerin pişirilmesi. Sunucu tarafında daha çok menü oluşturmada kullanılmaktadır.‌

nether-ceiling-void-damage-height Optimizeli değer: 127

Bu seçenek 0’dan büyükse, ayarlanmış y seviyesinin üzerindeki oyuncular boşlukta gibi hasar görür. Bu, oyuncuların nether çatısını kullanmasını önleyecektir. Vanilla Nether 128 blok uzunluğundadır, bu yüzden muhtemelen 127’ye ayarlamalısınız. Nether’in yüksekliğini herhangi bir şekilde değiştirirseniz, bunu ([nether yüksekliğiniz] – 1) olarak ayarlamalısınız.‌


Java başlangıç ​​ayarları

1.17 ve üstü sürümler, Java 16 veya daha üstünü gerektirecektir. Oracle lisanslarını değiştirdi ve artık Java‘nızı onlardan almak için zorlayıcı bir neden yok. Önerilen geliştiriciler “Amazon Corretto“, “Azul Zulu OpenJDK” ve “Adoptium Temurin“‘dir. OpenJ9 gibi alternatif JVM uygulamaları çalışabilir, ancak bunlar kağıt tarafından desteklenmez ve sorunlara neden olduğu bilinmektedir, bu nedenle şu anda önerilmemektedir.‌

Java başlangıç kodları için size bir takım hazır kodları size sunuyoruz;

java -Xms6G -Xmx6G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:InitiatingHeapOccupancyPercent=15 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar server.jar nogui

  • -Xms ve -Xmx yerlerine sunucu RAM’inizin bir tık altını yazabilirsiniz, burada 7GB’lık bir sunucu için örnek verilmiştir.
  • “server.jar” yazan yere ise sunucu yazılım adını yazmalısınız.

Sanıldığı kadar iyi olmayan eklentiler

Yerdeki eşyaları silen eklentiler

“merge-radius” ve “alt-item-despawn-rate” ile değiştirilebildiklerinden, temel sunucu yapılandırmalarından daha az yapılandırılabilir olduklarından kesinlikle gereksizdir. Öğeleri taramak ve kaldırmak için, öğeleri hiç kaldırmamaktan daha fazla kaynak kullanma eğilimindedirler.‌

Mob birleştirici eklentiler

Ortaya çıkan varlıkları birleştirmek, varlıkları tek bir varlık olarak göstermesinden kaynaklı sunucunun sürekli varlık üretmesini sağlamaktadır ve bu da sunucuyu daha çok zora sokmaktadır. Tek kabul edilebilir yanı, doğurucular ile oluşturulan varlıklardır. Birden çok ve hızlı varlık ürettikleri için birleştirmek daha iyi bir çözüm olabilir.‌

Diğer eklentileri etkinleştiren/devre dışı bırakan eklentiler

Sunucu çalışırken etkinleştiren veya devre dışı bırakan her şey son derece tehlikelidir. Böyle bir eklenti yüklemek, izleme verileriyle ilgili önemli hatalara neden olabilir ve bir eklentiyi devre dışı bırakmak, bağımlılığın kaldırılması nedeniyle hatalara neden olabilir. Eklentiler tek başına yüklenmelere göre ayarlanmadığı için ciddi sorunlar oluşturabilir. /reload komutu tam olarak aynı sorunlardan muzdariptir.‌

Eğerki yinede sunucu çalışırken bunları yapmak zorundaysanız:‌

  • Yeni bir eklenti eklemek
  • Mevcut bir eklentiyi güncellemek
  • Bir eklentiyi kaldırmak

sonucu ne olursa SUNUCUYU YENİDEN BAŞLATIN.

Bir eklentinin ayar dosyalarını yenilemek için eklentinin kendi yenileme komutunu kullanabilirsiniz.‌

Peki ya plugman eklentisi?

Bu da aynı sorunları tetikliyor, hatta üstüne eklentileri etkinleştirip/devre dışı bırakmak, eklentilerin diğer eklentiler ile çalışmasında ve veri çekmesinde sorunlar oluşturabilir.‌

Performansı düşüren ne? – Performans ölçerler

mspt

Kağıt, sunucunun son tickleri hesaplamak için ne kadar zaman aldığını size bildiren bir /mspt komutu sunar. Gördüğünüz birinci ve ikinci değer 50’den düşükse tebrikler, sunucunuz gecikme bulunmuyor! Üçüncü değer 50’nin üzerindeyse, 1 tickin uygulanması normalden uzun sürdüğü anlamına gelir. Bu tamamen normaldir ve zaman zaman olur, bu yüzden panik yapmayın.‌

timings

Sunucunuzda performans sorunları olduğunda, neler olabileceğini görmenin harika bir yolu timings sonuçlarıdır. Timings sonuçları, tam olarak hangi görevlerin en uzun sürdüğünü görmenizi sağlayan bir araçtır. Bu en temel sorun giderme aracıdır ve gecikmeyle ilgili yardım isterseniz büyük olasılıkla timings sonuçlarınıza bakılacaktır.

Timings sonuçlarına ulaşmayı öğrenmek için:

Spark

Sunucularınızın CPU ve bellek kullanımını profillemenizi sağlayan bir eklentidir.