4 poin oleh GN⁺ 2024-10-16 | 1 komentar | Bagikan ke WhatsApp
  • Pumpkin adalah server Minecraft yang dibuat hanya dengan Rust, dengan tujuan menyediakan pengalaman server yang cepat, efisien, dan dapat dikustomisasi sambil tetap mengikuti mekanisme inti permainan
  • Tujuannya mencakup performa berbasis multithreading, kompatibilitas dengan versi server Minecraft Java dan Bedrock terbaru, kepatuhan pada mekanisme permainan Vanilla, pencegahan kerentanan keamanan yang telah diketahui, tingkat konfigurasi yang tinggi, dan penyediaan fondasi untuk pengembangan plugin
  • Cakupan fiturnya dibagi ke dalam area protokol, world, pemain, entitas, server, dan proxy, serta mencakup Server Status/Ping, Encryption, Packet Compression, Java/Bedrock, World Loading/Saving, Lighting, Entity Spawning, Inventory, RCON, Permissions, Bungeecord, Velocity, dan lainnya
  • Saat ini proyek berada dalam tahap pengembangan aktif sebelum 1.0.0, dengan Advancements dan Villagers ditandai belum selesai, sementara Mobs, Animals, dan Non-Living Entities ditandai sebagai W.I.P
  • Menjalankannya mengikuti dokumen Quick Start, dan jalur untuk penggunaan, partisipasi komunitas, sponsor, serta kontribusi disediakan melalui dokumentasi, Discord, GitHub Sponsors, dan CONTRIBUTING.md

Tujuan dan status Pumpkin

  • Pumpkin adalah server Minecraft yang ditulis sepenuhnya dengan Rust
  • Proyek ini bertujuan memberikan pengalaman yang cepat, efisien, dan dapat dikustomisasi, sambil mengikuti mekanisme inti gameplay Minecraft
  • Proyek ini saat ini berada dalam status heavy development
    • Pekerjaan yang dibutuhkan sebelum rilis 1.0.0 dapat dilihat di isu terkait

Tujuan desain

  • Performance: Bertujuan meningkatkan kecepatan dan efisiensi dengan memanfaatkan multithreading
  • Compatibility: Mendukung versi server Minecraft Java dan Bedrock terbaru serta mengikuti mekanisme permainan Vanilla
  • Security: Memprioritaskan pencegahan eksploit keamanan yang telah diketahui
  • Flexibility: Menyediakan tingkat konfigurasi tinggi yang memungkinkan fitur yang tidak diperlukan dinonaktifkan
  • Extensibility: Menyediakan fondasi untuk pengembangan plugin

Cakupan fitur yang telah diimplementasikan

  • Konfigurasi

    • Mendukung konfigurasi berbasis TOML
  • Protokol

    • Tracking: Protocol
    • Server Status/Ping, Encryption, Packet Compression, dan dukungan Java/Bedrock ditandai sudah tersedia
  • World

    • Tracking: World
    • Mendukung Player Tab-list, Scoreboard, World Loading, World Time, World Borders, World Saving, Lighting, Entity Spawning, dan Bossbar
    • Chunk Loading dan Chunk Saving ditandai tersedia dalam bentuk Vanilla, Linear, dan Pump
    • Mencakup item Chunk Generation, Redstone, dan Liquid Physics
  • Pemain

    • Tracking: Player
    • Skins, Teleport, Movement, Animation, Inventory, Experience, Hunger, Off Hand, dan Eating ditandai sudah tersedia
    • Combat ditautkan sebagai item pelacakan terpisah
    • Advancements ditandai belum selesai

Entitas, server, dan proxy

  • Entities

    • Entitas Non-Living mencakup Minecart, Eggs, dan lainnya, serta ditandai sebagai W.I.P
    • Entity Effects, Players, Boss, dan Entity Saving ditandai sudah tersedia
    • Mobs dan Animals ditandai sebagai W.I.P
    • Entity AI ditautkan sebagai item pelacakan terpisah
    • Villagers ditandai belum selesai
  • Server

    • Mencakup item Plugins, Query, RCON, Inventories, Particles, Chat, Commands, Permissions, dan Translations
  • Proxy

    • Bungeecord dan Velocity ditandai sudah tersedia

Menjalankan, dokumentasi, dan komunitas

  • Cara menjalankannya dapat dilihat melalui panduan Quick Start
  • Dokumentasi tersedia di pumpkinmc.org
  • Kontribusi disambut, dan pengguna diarahkan untuk merujuk ke CONTRIBUTING.md
  • Untuk pembaruan, acara, dan terhubung dengan anggota lain, tersedia server Discord
  • Sponsor proyek dapat dilakukan melalui GitHub Sponsors

1 komentar

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

    • Sebagai orang yang banyak melakukan modding Minecraft 10 tahun lalu, senang melihat komunitasnya masih cukup aktif sampai punya inside joke seperti ini
      Mengingat skala gimnya, membuat server Minecraft dalam bahasa apa pun bukan hal mudah, dan mengejutkan bahwa sudah ada 7 yang dibuat hanya dengan Rust
  • Menurut benchmark, perbedaan performanya cukup mengesankan, tetapi sepertinya fitur pembuatan dan penyimpanan world belum ada, dan keduanya adalah operasi yang mahal
    Khususnya pembuatan chunk bisa membuat VPS lemah langsung kewalahan. Benchmark-nya kemungkinan diukur saat idle, jadi saya penasaran bagaimana perbandingannya saat fitur-fitur itu sudah masuk dan benar-benar digunakan
    Dukungan untuk menghancurkan/menempatkan block juga tidak terlihat; dalam kasus ini, server tampaknya perlu menghitung ulang pencahayaan dan memperbarui chunk
    Terakhir, saya penasaran apakah ada rencana menambahkan fitur lanjutan seperti scoreboard, team, dan parsing command block. Mojang sudah merilis Brigadier sebagai open source untuk hal ini
    Saya berharap ini cukup matang sehingga menjalankan server di hardware kelas rendah pun menjadi mudah

    • Benchmark-nya memang cukup mengesankan bahkan saat dilihat langsung
      Penempatan dan penghancuran block sudah didukung, tetapi pencahayaan belum, jadi saat ini semuanya terlihat gelap. Sedang dikerjakan
      Fitur seperti scoreboard dan team juga ingin kami masukkan, dan untuk command sudah ada API yang bisa dipakai mirip Brigadier
      Kami ingin membuat pemain bisa meng-host server bahkan di hardware kelas rendah, dan suatu hari ingin mencoba menguji Pumpkin di perangkat seperti Raspberry Pi
    • Masuk akal jika pembuatan chunk diimplementasikan paling akhir, atau bahkan tidak sama sekali. Kalau menginginkan server Minecraft berperforma baik, pada akhirnya semua chunk memang harus dibuat lebih dulu
      Karena chunk menyimpan waktu huni, jika nanti ingin menerapkan logika pembuatan chunk yang sudah diperbarui, bisa juga hanya membuat ulang chunk yang belum pernah dikunjungi
      Reimplementasi server Minecraft cukup menarik, dan selalu menyenangkan melihat implementasi baru muncul. Ada juga implementasi server untuk tujuan tertentu seperti MCHPRS, yang ditujukan untuk kompilasi redstone cepat bagi technical Minecraft
  • Saya penasaran apakah ada benchmark. Seberapa cepat dibanding server vanilla?
    Server Minecraft memakai resource secara ekstrem saat jumlah pemain bertambah, dan sering kali TPS tetap buruk meski menjalankan server yang sangat kuat

  • Baru-baru ini saya mengembangkan Pumpkin. Ini server Minecraft yang efisien dan cepat, ditulis sepenuhnya dari nol dengan Rust; silakan dicoba dilihat

    • Keren. Saya penasaran bagaimana multithreading-nya bekerja. Ingin tahu apakah hanya bagian-bagian mudah yang dipisah, atau pekerjaan nyata terkait world juga diparalelkan
    • Tertulis “Yang tidak akan dilakukan Pumpkin: menjadi pengganti drop-in untuk vanilla atau server lain”, tetapi kalau bukan pengganti drop-in, rasanya sulit menyebutnya server Minecraft
      Mirip seperti deck Uno bukan pengganti drop-in untuk deck Hearts, tetapi keduanya hanya permainan kartu; bukan berarti keduanya deck Uno
      Atau maksudnya Pumpkin berperilaku berbeda dari vanilla di bagian selain jaringan, sehingga world yang dibuat di vanilla mungkin tidak bisa dibuka di Pumpkin?
  • Saya sudah tahu proyek ini sejak dulu dan juga sempat masuk Discord-nya. Sekarang saya sudah menghapus akun Discord demi kesehatan mental
    Senang melihat proyek ini tampaknya cukup disukai di Hacker News. 140 upvote menurut saya cukup bagus
    Seingat saya ada server lain yang ditulis dengan Rust, tetapi saya tidak tahu pasti
    Terakhir kali saya melihatnya, ini benar-benar software alpha tahap awal, tetapi laju pengembangannya bagus. Saya tidak tahu kondisi sekarang, dan yang saya ingat waktu itu penulisnya sedang pergi ujian

    • Saya benar-benar senang banyak orang menyukai proyek ini. Ini masih proyek yang sedang dikerjakan, tetapi kami membuatnya dengan serius
      Saya menyelesaikan ujian minggu lalu dan sekarang sedang libur, jadi commit juga sudah kembali seperti biasanya
    • Mungkin Cuberite yang ditulis dalam C
  • Saya penasaran apakah main thread di-shard berdasarkan region, misalnya seperti Paper Folia, atau hanya entitas non-block yang dipisahkan ke thread tersendiri

  • Saya hanya menunggu sampai Minecraft cukup di-reverse-engineer sehingga berbagai implementasi server dan client tinggal menjadi protokol tersendiri yang saling kompatibel

    • Protokol jaringan Bedrock sudah terdokumentasi: https://github.com/Mojang/bedrock-protocol-docs
    • Itu sudah terjadi. Seluruh protokol sudah di-reverse-engineer, ada alat yang otomatis menghapus obfuscation kode, dan sudah ada reimplementasi lengkap Minecraft yang bahkan mendukung server
  • Saya akan mencobanya. Performa jar server vanilla murni terlalu buruk. Ini bagian yang saya harap diperbaiki Mojang
    Sejauh yang saya tahu, pembuatan chunk baru setidaknya sudah multithread
    Saya juga berharap kontrol dasar untuk server SMP didukung secara resmi. Area yang didefinisikan oleh dua koordinat sudut, serta permission dasar seperti menempatkan, menghancurkan, dan berinteraksi, sudah cukup
    File konfigurasi sederhana saja cukup, dan request atau update bisa dikelola dengan alat lain. Utilitas command line dalam gim yang sederhana untuk operator juga oke
    Saya hanya ingin tidak selalu harus memakai whitelist tertutup. Saya tahu Paper/Waterfall dan sejenisnya punya plugin, tetapi ada keuntungan tersendiri dari tetap mempertahankan vanilla murni
    Saya sudah lama terus menjaga server tetap hidup

    • Perlu diingat saja bahwa ini belum selesai dan masih banyak fitur yang belum ada
      Semua hal yang Anda sebutkan ingin kami buat bisa dikonfigurasi lewat file konfigurasi, jadi kemungkinan Anda akan menyukainya
      Jika ada masalah, lihat https://snowiiii.github.io/Pumpkin/troubleshooting/common_is... atau minta bantuan di Discord
  • Sudah 0 hari sejak server Minecraft baru yang ditulis dengan Rust muncul
    https://dayssincelastrustmcserver.com/

    • Situsnya lucu, tapi agak tidak adil. Di antara itu semua, yang praktis bisa dibilang “kan sudah ada” sebenarnya hanya Valence
      Dari total 7, tiga yang pertama sudah mati, dan tiga yang terbaru semuanya proyek 2024 termasuk Pumpkin. Proyek-proyek 2024 semuanya menyebutkan pembeda mereka dari Valence, yang lebih mirip framework yang berfokus pada modularitas
      Tiga yang terbaru terlihat seperti pesaing sehat yang saling bersahabat
      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
    • Cukup lucu bahwa banyak di antaranya sebenarnya “Apakah ini server Minecraft? Bukan. Ini framework untuk membuat penulisan ulang server Minecraft milikmu sendiri”
    • Pumpkin sudah ada di daftar itu
    • Melihat ini membuat saya berpikir apakah Rust memang alat yang tepat untuk pekerjaan ini. Justru Elixir/Erlang terasa seperti alat yang sempurna, dan nyatanya seseorang sudah membuatnya
      Ini referensi yang bagus bagi orang yang ingin belajar bagaimana hal semacam ini dilakukan di BEAM: https://github.com/thecodeboss/minecraft
    • Saya sempat berpikir akan keren kalau ada server Minecraft yang dibuat dengan Bevy, dan ternyata itu juga sudah ada: https://github.com/valence-rs/valence
  • Di sini, apa maksud modern?

    • Belakangan “modern” sepertinya dipakai sebagai kata sifat yang longgar untuk berarti “$thing ditulis ulang [dengan Rust]”
      Minecraft dibuat pada 2011, dan menurut Wikipedia, versi terakhir edisi ‘classic’ keluar pada 2017. Jadi apa pun setelah 2017 berarti tidak usang
      Menulis ulang sesuatu itu sendiri tidak masalah, tetapi menjadikan “modern” sebagai nilai jual terasa cukup longgar, dan apakah itu secara objektif lebih baik juga sering diperdebatkan
    • Maksudnya ini ditulis dari awal dan, berbeda dari kode server Minecraft vanilla, punya fondasi yang bersih
      Juga ingin memakai fitur modern seperti multithreading atau Rust. Saya menganggap Rust sebagai bahasa modern yang dirancang untuk memperbaiki kesalahan bahasa-bahasa lama
    • Dalam software, modern hampir selalu hanya berarti ditulis dalam beberapa tahun terakhir. Sebagai kata sifat untuk mendeskripsikan software, itu tidak terlalu berguna
      Misalnya, SQLite kemungkinan besar tidak akan disebut modern, tetapi semua orang menyukainya, jadi tidak masalah