4 puan yazan GN⁺ 2024-10-16 | 1 yorum | WhatsApp'ta paylaş
  • Pumpkin, yalnızca Rust ile yapılmış bir Minecraft sunucusudur; oyunun temel mekaniklerine bağlı kalmayı hedeflerken hızlı, verimli ve özelleştirilebilir bir sunucu deneyimi sunmayı amaçlar
  • Hedefleri çok iş parçacıklı performans, en güncel Java ve Bedrock Minecraft sunucu sürümleriyle uyumluluk, Vanilla oyun mekaniklerine bağlılık, bilinen güvenlik açıklarının önlenmesi, yüksek yapılandırılabilirlik ve eklenti geliştirme için bir temel sağlamaktır
  • Özellik kapsamı protokol, dünya, oyuncu, varlık, sunucu ve proxy alanlarına ayrılır; Server Status/Ping, Encryption, Packet Compression, Java/Bedrock, World Loading/Saving, Lighting, Entity Spawning, Inventory, RCON, Permissions, Bungeecord, Velocity gibi bileşenleri içerir
  • Proje şu anda 1.0.0 öncesi aktif geliştirme aşamasındadır; Advancements ve Villagers tamamlanmamış olarak işaretlenmiştir, Mobs, Animals ve Non-Living Entities ise W.I.P olarak belirtilmiştir
  • Çalıştırma için Quick Start belgesi izlenir; belgeler, Discord, GitHub Sponsors ve CONTRIBUTING.md üzerinden kullanım, topluluğa katılım, sponsorluk ve katkı yolları sunulur

Pumpkin'in amacı ve durumu

  • Pumpkin, tamamen Rust ile yazılmış bir Minecraft sunucusudur
  • Hızlı, verimli ve özelleştirilebilir bir deneyim sunmayı, ayrıca Minecraft'in temel oyun mekaniklerine bağlı kalmayı hedefler
  • Proje şu anda yoğun geliştirme durumundadır
    • 1.0.0 sürümünden önce tamamlanması gereken işler ilgili issue üzerinden görülebilir

Tasarım hedefleri

  • Performance: Çok iş parçacığından yararlanarak hız ve verimliliği artırmayı hedefler
  • Compatibility: En güncel Java ve Bedrock Minecraft sunucu sürümlerini destekler ve Vanilla oyun mekaniklerini takip eder
  • Security: Bilinen güvenlik açıklarını ve exploit'leri önlemeye öncelik verir
  • Flexibility: Gereksiz özelliklerin devre dışı bırakılabildiği yüksek düzeyde yapılandırılabilirlik sunar
  • Extensibility: Eklenti geliştirme için bir temel sağlar

Uygulanan özellik kapsamı

  • Yapılandırma

    • TOML tabanlı yapılandırmayı destekler
  • Protokol

    • Tracking: Protocol
    • Server Status/Ping, Encryption, Packet Compression, Java/Bedrock desteği işaretlenmiştir
  • Dünya

    • Tracking: World
    • Player Tab-list, Scoreboard, World Loading, World Time, World Borders, World Saving, Lighting, Entity Spawning, Bossbar desteklenir
    • Chunk Loading ve Chunk Saving için Vanilla, Linear ve Pump biçimleri işaretlenmiştir
    • Chunk Generation, Redstone ve Liquid Physics başlıkları da yer alır
  • Oyuncu

    • Tracking: Player
    • Skins, Teleport, Movement, Animation, Inventory, Experience, Hunger, Off Hand, Eating işaretlenmiştir
    • Combat ayrı bir takip maddesi olarak bağlantılanmıştır
    • Advancements tamamlanmamış olarak belirtilmiştir

Varlıklar, sunucu ve proxy

  • Entities

    • Non-Living varlıklar Minecart, Eggs vb. öğeleri içerir ve W.I.P olarak işaretlenmiştir
    • Entity Effects, Players, Boss, Entity Saving işaretlenmiştir
    • Mobs ve Animals W.I.P olarak belirtilmiştir
    • Entity AI ayrı bir takip maddesi olarak bağlantılanmıştır
    • Villagers tamamlanmamış olarak belirtilmiştir
  • Server

    • Plugins, Query, RCON, Inventories, Particles, Chat, Commands, Permissions, Translations başlıklarını içerir
  • Proxy

    • Bungeecord ve Velocity işaretlenmiştir

Çalıştırma, belgeler, topluluk

  • Çalıştırma yöntemi Quick Start kılavuzundan görülebilir
  • Belgeler pumpkinmc.org üzerinden sunulur
  • Katkılar memnuniyetle karşılanır ve CONTRIBUTING.md dosyasına bakılması önerilir
  • Güncellemeler, etkinlikler ve üyelerle bağlantı kurmak için Discord sunucusu sunulur
  • Projeye sponsor olmak GitHub Sponsors üzerinden mümkündür

1 yorum

 
GN⁺ 2024-10-16
Hacker News yorumları
  • https://dayssincelastrustmcserver.com/

    • 10 yıl önce Minecraft modlamasıyla epey uğraşmış biri olarak, topluluğun hâlâ böyle iç şakalar üretecek kadar canlı olduğunu görmek hoşuma gitti.
      Oyunun ölçeği düşünüldüğünde herhangi bir dilde Minecraft sunucusu yapmak kolay iş değil; sadece Rust ile şimdiden 7 tane olması şaşırtıcı.
  • Benchmark’lardaki performans farkı oldukça etkileyici, ancak dünya oluşturma ve kaydetme işlevleri eksik gibi görünüyor; bunların ikisi de maliyetli işler.
    Özellikle chunk oluşturma, zayıf bir VPS’i olduğu yerde çökertebilir. Benchmark’lar muhtemelen boşta ölçülmüştür; bu özellikler eklenip gerçek kullanımda karşılaştırma nasıl olur merak ediyorum.
    Blok kırma/yerleştirme desteği de görünmüyor; bu durumda sunucuda aydınlatmanın yeniden hesaplanması ve chunk güncellemeleri gerekebilir.
    Son olarak skor tabloları, takımlar, komut bloğu ayrıştırma gibi gelişmiş özellikleri de eklemeyi planlayıp planlamadıklarını merak ediyorum. Mojang bunun için Brigadier’ı açık kaynak olarak yayımlamış durumda.
    Düşük donanımlı sistemlerde de sunucu işletmeyi kolaylaştıracak kadar olgunlaşmasını umuyorum.

    • Benchmark’lara doğrudan bakınca da oldukça etkileyici.
      Blok yerleştirme ve kırma zaten destekleniyor, ancak aydınlatma henüz desteklenmediği için şu anda her şey karanlık görünüyor. Üzerinde çalışılıyor.
      Skor tabloları ve takımlar gibi özellikleri de eklemek istiyoruz; komutlar için Brigadier’a benzer şekilde kullanılabilecek bir API zaten var.
      Oyuncuların düşük donanımlı sistemlerde de sunucu barındırabilmesini istiyoruz; bir gün Pumpkin’i Raspberry Pi gibi bir cihazda test etmeyi düşünüyorum.
    • Chunk oluşturma işini en sona bırakmak, hatta hiç yapmamak bile mantıklı. Performanslı bir Minecraft sunucusu istiyorsanız zaten tüm chunk’ları önceden oluşturmanız gerekir.
      Chunk’larda yerleşim süresi saklandığı için, daha sonra güncellenmiş chunk oluşturma mantığını uygulamak isterseniz yalnızca henüz ziyaret edilmemiş chunk’ları yeniden oluşturabilirsiniz.
      Minecraft sunucusunun yeniden uygulanması oldukça ilginç; her yeni uygulamayı görmek güzel. Teknik Minecraft için hızlı redstone derlemesine yönelik MCHPRS gibi belirli amaçlara yönelik sunucu uygulamaları da var.
  • Benchmark var mı merak ediyorum. Vanilla sunucudan ne kadar hızlı?
    Minecraft sunucularında oyuncu sayısı arttıkça kaynak kullanımı aşırı büyüyor ve çok güçlü bir sunucu çalıştırılsa bile TPS’in kötü çıktığı durumlar sık oluyor.

  • Yakın zamanda Pumpkin’i geliştirdim. Rust ile sıfırdan tamamen yazılmış verimli ve hızlı bir Minecraft sunucusu; bir göz atarsanız sevinirim.

    • Harika. Multithreading nasıl çalışıyor merak ediyorum. Sadece kolay kısımları mı ayırdınız, yoksa dünyayla ilgili gerçek işler de paralelleştirildi mi bilmek isterim.
    • “Pumpkin’in yapmayacağı şey: vanilla’nın veya başka sunucuların drop-in yerine geçeni olmak” denmiş; drop-in yerine geçmiyorsa buna Minecraft sunucusu demek zor değil mi diye düşünüyorum.
      Uno destesi, Hearts destesinin drop-in yerine geçeni değildir ama ikisi de sadece kart oyunudur; ikisi de Uno destesi değildir gibi.
      Yoksa Pumpkin’in ağ dışındaki kısımlarda vanilla’dan farklı davrandığı ve vanilla ile oluşturulmuş dünyaların Pumpkin’de açılamayabileceği mi kastediliyor, merak ediyorum.
  • Bu projeyi eskiden beri biliyordum ve Discord’una da katılmıştım. Şu anda ruh sağlığım için Discord hesabımı silmiş durumdayım.
    Hacker News’te bu projenin epey beğeniliyor gibi görünmesine sevindim. 140 upvote bence oldukça iyi.
    Hatırladığım kadarıyla Rust ile yazılmış başka bir sunucu daha vardı ama tam emin değilim.
    En son baktığımda gerçekten erken alfa yazılım durumundaydı, ama geliştirme hızı iyiydi. Şu anki durumunu pek bilmiyorum; yazarın sınava gittiği dönemde olduğum aklımda kalmış.

    • Projeyi bu kadar çok kişinin sevmesine gerçekten sevindim. Hâlâ üzerinde çalışılan bir proje, ama sıkı çalışıyoruz.
      Geçen hafta sınavlarımı bitirdim ve şimdi tatildeyim; commit’ler de tekrar her zamanki temposuna döndü.
    • C ile yazılmış Cuberite olabilir.
  • Ana thread’in bölgelere göre shard’lanıp shard’lanmadığını, örneğin Paper Folia gibi yapılıp yapılmadığını merak ediyorum. Yoksa yalnızca blok olmayan entity’leri ayrı thread’e ayırmak gibi bir şey mi, bilmek isterim.

  • Minecraft’ın yeterince tersine mühendislikten geçirilip, çeşitli sunucu ve istemci uygulamalarının basitçe uyumlu olduğu fiilî bir protokole dönüşmesini bekliyorum.

    • Bedrock’un ağ protokolü belgelenmiş durumda: https://github.com/Mojang/bedrock-protocol-docs
    • Zaten öyle oldu. Protokolün tamamı tersine mühendislikle çözüldü; kodun obfuscation’ını otomatik kaldıran araçlar da var, sunucuyu bile destekleyen Minecraft’ın tam bir yeniden uygulaması da zaten mevcut.
  • Bir deneyeceğim. Saf vanilla sunucu jar’ının performansı çok kötü. Mojang’ın iyileştirmesini istediğim bir nokta.
    Yeni chunk oluşturmanın en azından multithreaded olduğunu biliyorum.
    SMP sunucuları için temel denetimin de resmî olarak desteklenmesini isterdim. İki köşe koordinatıyla tanımlanan bölgeler, yerleştirme/kırma/etkileşim gibi temel izinler yeterli olur.
    Basit bir yapılandırma dosyası kâfi; istekler veya güncellemeler başka araçlarla yönetilebilir. Operatörler için basit bir oyun içi komut satırı aracı da fena olmaz.
    Her zaman kapalı whitelist kullanmak zorunda kalmamayı sağlayacak bir şey istiyorum. Paper/Waterfall vb. için eklentiler olduğunu biliyorum, ama saf vanilla’yı korumanın getirdiği avantajlar var.
    Sunucuyu uzun süredir ayakta tutuyorum.

    • Henüz tamamlanmış durumda olmadığını ve birçok eksik özelliği olduğunu akılda tutmak iyi olur.
      Saydıklarınızın tamamını yapılandırma dosyasından ayarlanabilir hâle getirmek istiyoruz; bu yüzden hoşunuza gidebilir.
      Sorun olursa https://snowiiii.github.io/Pumpkin/troubleshooting/common_is... sayfasına bakabilir veya Discord’da yardım isteyebilirsiniz.
  • Rust ile yazılmış yeni bir Minecraft sunucusunun çıkmasının üzerinden 0 gün geçti
    https://dayssincelastrustmcserver.com/

    • Komik bir site ama biraz haksız. Bunların içinde “zaten var ya” denebilecek olan aslında sadece Valence
      Toplam 7 taneden ilk 3’ü ölmüş durumda; en yeni 3’ü ise Pumpkin dahil tamamen 2024 projeleri. 2024 projelerinin hepsi, modülerliğe odaklanan bir framework’e daha yakın olan Valence’tan farklarını açıkça belirtiyor
      En yeni 3’ü birbirine karşı dostane, sağlıklı rakipler gibi görünüyor
      released stars last_update
      feather 19aug 2,614 2 years ago
      mchprs 20jun 1,632 last month
      graphite 22jun 160 2 years ago
      valence 22sep 2,731 3 days ago
      hyperion 24mar 361 today
      pumpkin 24jul 965 today
      ferrumc 24sep 673 today
    • Bunların epey çoğunun “Minecraft sunucusu mu? Hayır. Kendi Minecraft sunucusu yeniden yazımınızı yapabileceğiniz bir framework” olması oldukça komik
    • Pumpkin zaten o listede var
    • Bunu görünce Rust’ın gerçekten bu iş için doğru araç olup olmadığını düşündürüyor. Aksine Elixir/Erlang bana mükemmel araç gibi geldi ve gerçekten de birileri bunu zaten yapmış
      BEAM’de böyle bir şeyin nasıl yapıldığını öğrenen biri için iyi bir referans: https://github.com/thecodeboss/minecraft
    • Bevy ile yapılmış bir Minecraft sunucusu olsa harika olur diye düşünmüştüm; o da zaten varmış: https://github.com/valence-rs/valence
  • Burada modern ne anlama geliyor?

    • Bugünlerde “modern”, “$thing’i [Rust ile] yeniden yazdım” anlamında gevşek bir sıfat gibi kullanılıyor sanki
      Minecraft 2011’de yapıldı ve Wikipedia’ya göre ‘classic’ sürümünün son versiyonu 2017’de çıktı. Dolayısıyla 2017’den sonraki her şeyin eski sayılmaması gerekir
      Bir şeyi yeniden yazmanın kendisi sorun değil, ama “modern”ı bir değer olarak öne sürmek epey gevşek bir kullanım ve nesnel olarak daha iyi olup olmadığı da sık sık tartışmalı
    • Sıfırdan yazıldığı ve vanilla Minecraft sunucu kodunun aksine temiz bir temele sahip olduğu anlamına geliyor
      Multithreading ya da Rust gibi modern özellikleri de kullanmak istiyor. Rust’ı, eski dillerin hatalarını düzeltmek için tasarlanmış modern bir dil olarak görüyorum
    • Yazılımda modern neredeyse her zaman yalnızca son birkaç yıl içinde yazılmış demektir. Yazılımı tanımlayan bir sıfat olarak pek işe yaramaz
      Örneğin SQLite’a büyük ihtimalle modern denmez, ama herkes sevdiği için bunun bir önemi yok