Show HN: Pumpkin, server Minecraft modern yang ditulis dengan Rust
(github.com/Snowiiii)- 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
-
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
Komentar Hacker News
https://dayssincelastrustmcserver.com/
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
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
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
https://snowiiii.github.io/Pumpkin/about/benchmarks.html
Baru-baru ini saya mengembangkan Pumpkin. Ini server Minecraft yang efisien dan cepat, ditulis sepenuhnya dari nol dengan Rust; silakan dicoba dilihat
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 menyelesaikan ujian minggu lalu dan sekarang sedang libur, jadi commit juga sudah kembali seperti biasanya
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
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
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/
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
Ini referensi yang bagus bagi orang yang ingin belajar bagaimana hal semacam ini dilakukan di BEAM: https://github.com/thecodeboss/minecraft
Di sini, apa maksud modern?
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
Juga ingin memakai fitur modern seperti multithreading atau Rust. Saya menganggap Rust sebagai bahasa modern yang dirancang untuk memperbaiki kesalahan bahasa-bahasa lama
Misalnya, SQLite kemungkinan besar tidak akan disebut modern, tetapi semua orang menyukainya, jadi tidak masalah