Show HN: Rust में लिखा गया आधुनिक Minecraft सर्वर, Pumpkin
(github.com/Snowiiii)- Pumpkin केवल Rust में बनाया गया एक Minecraft सर्वर है, जिसका लक्ष्य तेज़, कुशल और कस्टमाइज़ करने योग्य सर्वर अनुभव देना है, साथ ही गेम के मुख्य मैकेनिक्स का पालन करना भी है
- इसके लक्ष्य हैं मल्टीथ्रेडिंग-आधारित performance, नवीनतम Java और Bedrock Minecraft सर्वर वर्ज़न के साथ compatibility, Vanilla गेम मैकेनिक्स का पालन, ज्ञात security vulnerabilities से बचाव, उच्च configurability, और plugin development के लिए आधार प्रदान करना
- फीचर दायरा protocol, world, player, entity, server, proxy क्षेत्रों में बँटा है, जिसमें Server Status/Ping, Encryption, Packet Compression, Java/Bedrock, World Loading/Saving, Lighting, Entity Spawning, Inventory, RCON, Permissions, Bungeecord, Velocity आदि शामिल हैं
- यह फिलहाल 1.0.0 से पहले के सक्रिय development चरण में है; Advancements और Villagers को incomplete बताया गया है, जबकि Mobs, Animals और Non-Living Entities को W.I.P के रूप में चिह्नित किया गया है
- इसे चलाने के लिए Quick Start दस्तावेज़ का पालन किया जा सकता है, और docs, Discord, GitHub Sponsors, CONTRIBUTING.md के ज़रिए उपयोग, community participation, sponsorship और contribution के रास्ते दिए गए हैं
Pumpkin का उद्देश्य और स्थिति
- Pumpkin एक केवल Rust में लिखा गया Minecraft सर्वर है
- इसका लक्ष्य तेज़, कुशल और कस्टमाइज़ करने योग्य अनुभव देना है, और Minecraft के मुख्य game mechanics का पालन करना है
- प्रोजेक्ट फिलहाल heavy development की स्थिति में है
- 1.0.0 रिलीज़ से पहले किए जाने वाले काम संबंधित issue में देखे जा सकते हैं
डिज़ाइन लक्ष्य
- Performance: मल्टीथ्रेडिंग का उपयोग करके speed और efficiency बढ़ाना लक्ष्य है
- Compatibility: नवीनतम Java और Bedrock Minecraft सर्वर वर्ज़न को support करना और Vanilla game mechanics का पालन करना
- Security: ज्ञात security exploits की रोकथाम को प्राथमिकता देना
- Flexibility: गैर-ज़रूरी features को disable करने की सुविधा के साथ उच्च configurability देना
- Extensibility: plugin development के लिए आधार उपलब्ध कराना
लागू की गई फीचर रेंज
-
सेटिंग्स
- TOML-आधारित configuration समर्थित है
-
Protocol
- Tracking: Protocol
- Server Status/Ping, Encryption, Packet Compression, Java/Bedrock support चिह्नित हैं
-
World
- Tracking: World
- Player Tab-list, Scoreboard, World Loading, World Time, World Borders, World Saving, Lighting, Entity Spawning, Bossbar समर्थित हैं
- Chunk Loading और Chunk Saving में Vanilla, Linear, Pump रूप चिह्नित हैं
- Chunk Generation, Redstone, Liquid Physics आइटम शामिल हैं
-
Player
- Tracking: Player
- Skins, Teleport, Movement, Animation, Inventory, Experience, Hunger, Off Hand, Eating चिह्नित हैं
- Combat अलग tracking आइटम के रूप में जुड़ा है
- Advancements को incomplete बताया गया है
Entity·Server·Proxy
-
Entities
- Non-Living entities में Minecart, Eggs आदि शामिल हैं और इन्हें W.I.P के रूप में चिह्नित किया गया है
- Entity Effects, Players, Boss, Entity Saving चिह्नित हैं
- Mobs और Animals को W.I.P के रूप में चिह्नित किया गया है
- Entity AI अलग tracking आइटम के रूप में जुड़ा है
- Villagers को incomplete बताया गया है
-
Server
-
Proxy
- Bungeecord और Velocity चिह्नित हैं
चलाना, दस्तावेज़, community
- चलाने का तरीका Quick Start गाइड में देखा जा सकता है
- दस्तावेज़ pumpkinmc.org पर उपलब्ध हैं
- contributions का स्वागत है, और CONTRIBUTING.md देखने के लिए कहा गया है
- updates, events और members से जुड़ने के लिए Discord server उपलब्ध है
- project sponsorship GitHub Sponsors के माध्यम से संभव है
1 टिप्पणियां
Hacker News की राय
https://dayssincelastrustmcserver.com/
गेम के पैमाने को देखते हुए किसी भी भाषा में Minecraft server बनाना आसान काम नहीं है, और यह हैरान करने वाली बात है कि सिर्फ Rust में ही पहले से 7 मौजूद हैं
benchmarks में performance gap काफी प्रभावशाली है, लेकिन लगता है कि world generation और save functionality गायब हैं, और ये दोनों महंगे operations हैं
खासकर chunk generation कमजोर VPS को सीधे ठप कर सकता है। benchmarks शायद idle state में नापे गए होंगे, इसलिए जब ये features जुड़कर वास्तविक इस्तेमाल में आएंगे तो comparison देखना दिलचस्प होगा
block तोड़ने/लगाने का support भी नहीं दिखता, इस स्थिति में server पर lighting recalculation और chunk updates की जरूरत पड़ेगी
आखिर में, scoreboard, teams, command block parsing जैसे advanced features जोड़ने की योजना है या नहीं, यह भी जानना चाहूंगा। Mojang ने इसके लिए Brigadier को open source कर रखा है
उम्मीद है कि यह इतना mature हो जाए कि low-end hardware पर भी server चलाना आसान हो
block placement और breaking पहले से supported हैं, लेकिन lighting अभी supported नहीं है, इसलिए फिलहाल सब कुछ अंधेरा दिखता है। इस पर काम चल रहा है
scoreboard, teams जैसे features भी जोड़ना चाहता हूं, और commands के लिए Brigadier जैसा इस्तेमाल हो सकने वाला API पहले से मौजूद है
मैं चाहता हूं कि low-end hardware पर भी players server host कर सकें, और किसी दिन Raspberry Pi जैसी जगह पर Pumpkin test करने का सोच रहा हूं
chunks में inhabited time save रहता है, इसलिए बाद में updated chunk generation logic apply करना हो तो केवल उन chunks को फिर से generate किया जा सकता है जिन्हें अभी visit नहीं किया गया है
Minecraft server reimplementation काफी दिलचस्प है और हर बार नया implementation निकलता देखना अच्छा लगता है। technical Minecraft के लिए fast redstone compilation हेतु MCHPRS जैसे specific-purpose server implementations भी हैं
जानना चाहता हूं कि benchmarks हैं या नहीं। vanilla server से कितना तेज है?
Minecraft server में players की संख्या बढ़ते ही resource usage अत्यधिक बढ़ जाता है, और बहुत powerful server चलाने पर भी अक्सर TPS खराब आता है
https://snowiiii.github.io/Pumpkin/about/benchmarks.html
हाल ही में Pumpkin develop किया है। यह Rust में scratch से पूरी तरह लिखा गया efficient और fast Minecraft server है, एक बार देखेंगे तो अच्छा होगा
Uno deck, Hearts deck का drop-in replacement नहीं है, लेकिन दोनों सिर्फ card games हैं; दोनों Uno deck नहीं हैं—कुछ वैसा ही
या फिर मतलब यह है कि network को छोड़कर Pumpkin vanilla से अलग behave करता है, इसलिए vanilla में बने worlds शायद Pumpkin में open न हो सकें?
मैं इस project को पहले से जानता था और Discord में भी था। अभी mental health के लिए Discord account delete कर दिया है
Hacker News पर लोगों को यह project काफी पसंद आ रहा है, यह देखकर खुशी हुई। 140 upvotes हों तो काफी अच्छा माना जाएगा
याद पड़ता है कि Rust में लिखा कोई और server भी था, लेकिन पक्का नहीं
आखिरी बार जब देखा था तो यह सचमुच early alpha software था, लेकिन development speed अच्छी थी। अभी की स्थिति नहीं पता, और याद है कि author exams देने गया हुआ था
पिछले हफ्ते exams खत्म किए और अब छुट्टियां हैं, इसलिए commits भी फिर से सामान्य pace पर लौट आए हैं
जानना चाहता हूं कि क्या main thread को region के हिसाब से shard करने का तरीका है, जैसे Paper Folia में होता है। या फिर सिर्फ non-block entities को अलग thread में split करने भर की बात है?
इंतजार है कि Minecraft इतना reverse-engineer हो जाए कि कई server और client implementations बस compatible अपना protocol जैसे बन जाएं
इसे एक बार इस्तेमाल करके देखूंगा। pure vanilla server jar की performance बहुत खराब है। चाहता हूं Mojang इसे improve करे
जहां तक पता है, new chunk generation कम से कम multithreaded है
SMP server के लिए basic controls का official support भी मिलना चाहिए। दो vertex coordinates से define किया गया region, और place·break·interact जैसी basic permissions ही काफी हैं
एक simple config file हो तो काफी है, requests या updates को दूसरे tools से manage किया जा सकता है। admins के लिए simple in-game command-line utility भी ठीक रहेगी
बस इतना चाहिए कि हमेशा closed whitelist ही इस्तेमाल न करनी पड़े। Paper/Waterfall आदि में plugins हैं, यह पता है, लेकिन pure vanilla बनाए रखने के अपने फायदे हैं
मैं server को लंबे समय से लगातार जिंदा रखे हुए हूं
आपने जो चीजें गिनाईं, वे सब config file से configurable बनाना चाहता हूं, इसलिए शायद आपको पसंद आए
अगर समस्या हो तो https://snowiiii.github.io/Pumpkin/troubleshooting/common_is... देखें या Discord पर मदद मांगें
Rust में लिखा नया Minecraft सर्वर आए हुए 0 दिन हुए हैं
https://dayssincelastrustmcserver.com/
कुल 7 में से शुरुआती 3 मर चुके हैं, और सबसे नए 3 — Pumpkin सहित — सभी 2024 के प्रोजेक्ट हैं। 2024 के प्रोजेक्ट सभी Valence से अपना फर्क साफ बताते हैं, जो modularity पर केंद्रित framework जैसा है
सबसे नए 3 आपस में friendly, healthy competitors जैसे दिखते हैं
BEAM पर ऐसी चीज़ें कैसे की जाती हैं, यह सीखने वालों के लिए अच्छा reference material है: https://github.com/thecodeboss/minecraft
यहां modern का मतलब क्या है?
Minecraft 2011 में बना था, और Wikipedia के मुताबिक ‘classic’ edition का आखिरी version 2017 में आया था। तो 2017 के बाद की हर चीज़ पुरानी नहीं मानी जाएगी
किसी चीज़ को rewrite करना अपने-आप में ठीक है, लेकिन “modern” को value proposition की तरह पेश करना काफ़ी ढीला है, और objectively बेहतर है या नहीं, यह अक्सर बहस का विषय रहता है
multithreading या Rust जैसी modern capabilities भी इस्तेमाल करना चाहते हैं। Rust को मैं एक modern language मानता हूं, जिसे पुरानी languages की गलतियों को सुधारने के लिए design किया गया है
उदाहरण के लिए SQLite को शायद modern नहीं कहा जाएगा, लेकिन सब उसे पसंद करते हैं, इसलिए फर्क नहीं पड़ता