2 पॉइंट द्वारा GN⁺ 2026-03-08 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Ultima Online सर्वर को .NET 10 और C# में पूरी तरह से नए सिरे से इम्प्लीमेंट करने वाला ओपन सोर्स प्रोजेक्ट, जिसका लक्ष्य AOT (पूर्व-संकलन) आधारित उच्च प्रदर्शन और स्थिर निष्पादन है
  • मॉड्यूलर आर्किटेक्चर, सटीक गेम लूप प्रोसेसिंग, और पैकेट टूलिंग से लैस, तथा Lua scripting के जरिए गेम के भीतर इंटरैक्शन और AI नियंत्रण का समर्थन
  • MessagePack-CSharp आधारित persistence system, TCP networking, HTTP management endpoint, Docker और monitoring stack सहित पूर्ण सर्वर इन्फ्रास्ट्रक्चर प्रदान करता है
  • Lua आधारित commands, NPC AI, visual effects, UI(Gump) system जैसी script extension क्षमताओं के जरिए customizable gameplay लागू किया जा सकता है
  • यह ओपन सोर्स के रूप में उपलब्ध है, और उच्च-प्रदर्शन MMO सर्वर विकास तथा legacy game restoration research के लिए उपयोगी आधुनिक .NET server framework के रूप में देखा जाता है

परियोजना अवलोकन

  • Moongate v2 एक आधुनिक Ultima Online सर्वर प्रोजेक्ट है, जो .NET 10 में लिखा गया है और मॉड्यूलर संरचना तथा AOT compilation के जरिए उच्च प्रदर्शन और maintainability सुनिश्चित करता है
  • इसे पैकेट परिभाषाओं के auto-generation, deterministic game loop, और test coverage वाली संरचना के साथ डिज़ाइन किया गया है
  • ModernUO, RunUO, ServUO जैसे मौजूदा सर्वरों का कोड कॉपी किए बिना, उनसे प्रेरणा लेकर इसे नए सिरे से बनाया गया है

मुख्य लक्ष्य

  • शुद्धता और iteration speed पर केंद्रित maintainable server foundation बनाना
  • networking और game loop boundaries को स्पष्ट करना तथा thread safety सुनिश्चित करना
  • type-based packet modeling और source-generation registration approach लागू करना
  • AOT-friendly structure बनाए रखते हुए local development efficiency सुनिश्चित करना

वर्तमान विकास स्थिति

  • TCP server, packet parsing, event bus, session management, HTTP management interface, Lua runtime जैसी मुख्य सुविधाएँ पूरी हो चुकी हैं
  • Lua metadata auto-generation, console UI, timer-based game loop, A pathfinding*, lighting और weather control, email sending feature शामिल हैं
  • MessagePack आधारित persistence module के जरिए snapshot और journal files में game state संग्रहीत की जाती है
  • Docker image और Prometheus/Grafana monitoring stack उपलब्ध हैं, जिससे production deployment आसान होता है

scripting और command system

  • Lua scripting engine (MoonSharp आधारित) अंतर्निर्मित है, जिससे NPC AI, item behavior, visual effects, UI(Gump) आदि नियंत्रित किए जा सकते हैं
  • C# command registration system और Lua dynamic command registration दोनों का समर्थन है
  • उदाहरण: .teleport, .add_item_backpack, .set_world_light जैसे GM commands उपलब्ध हैं
  • item ScriptId dispatch के जरिए Lua table आधारित click events को हैंडल किया जा सकता है

प्रदर्शन और benchmark

  • BenchmarkDotNet से किए गए प्रदर्शन मापन के अनुसार, प्रमुख packet parsing और serialization कार्य दर्जनों nanoseconds के स्तर पर प्रोसेस होते हैं
  • AOT vs JIT तुलना में कुछ कार्यों में अधिकतम 5~6 गुना प्रदर्शन सुधार देखा गया
  • SpatialWorldService और ItemService जैसे गेम के मुख्य paths की processing efficiency का विस्तार से मापन किया गया है

deployment और execution

  • .NET SDK 10.0.x आवश्यक है
  • मूल execution प्रक्रिया:
    dotnet restore
    dotnet build
    dotnet run --project src/Moongate.Server
    
  • environment variable आधारित configuration (MOONGATE_*) के जरिए HTTP port, game loop, email, scripting आदि की विस्तृत settings नियंत्रित की जा सकती हैं
  • Docker Compose उदाहरण उपलब्ध है, और default ports 2593 (game) तथा 8088 (HTTP) हैं

लाइसेंस और योगदान

  • GPL-3.0 license के तहत जारी
  • code conventions और tests सहित Pull Request contributions का स्वागत है
  • आधिकारिक दस्तावेज़: https://moongate-community.github.io/moongatev2/

तकनीकी विशेषताओं का सार

  • C# + .NET 10 + NativeAOT आधारित MMO server framework
  • Lua script integration, MessagePack persistence, Prometheus/Grafana monitoring का समर्थन
  • Docker deployment और automation scripts शामिल
  • उच्च-प्रदर्शन, मॉड्यूलर, test-centric design के साथ आधुनिक सर्वर विकास के लिए उपयुक्त संरचना

1 टिप्पणियां

 
GN⁺ 2026-03-08
Hacker News की टिप्पणियाँ
  • मैंने जितने भी गेम खेले हैं, उनमें UO(Ultima Online) जैसा ‘आम आदमी’ खिलाड़ी वाला गेम कोई नहीं था
    जिन लोगों के पास ताकतवर gear नहीं था, वे भी मज़े से खेल सकते थे, और टॉप-टियर खिलाड़ी किसी सेलिब्रिटी की तरह जाने जाते थे
    यह आज के गेम्स की उस दुनिया से बिल्कुल अलग था जहाँ हर कोई सुपरहीरो जैसा दिखता है

    • इससे पूरी तरह सहमत हूँ। UO में सचमुच अर्थव्यवस्था और सामाजिक वर्ग मौजूद थे
      कोई महीनों तक मछुआरे या दर्जी की तरह समय बिताए, तब भी वह एक अर्थपूर्ण अनुभव होता था, और ताकतवर योद्धा व साधारण व्यापारी एक ही दुनिया में अपना-अपना आनंद पाते थे
      आज के MMO सब एक ही ride वाले theme park जैसे लगते हैं, लेकिन UO एक जीवित दुनिया था जहाँ खिलाड़ी की पसंद से भूमिकाएँ बनती थीं
    • मेरा लक्ष्य एक legendary blacksmith बनना था। crafting ही endgame था, और सारा gear व furniture किसी न किसी खिलाड़ी के हाथ से आता था
      गेम का मकसद दुनिया को ‘हराना’ नहीं, बल्कि उसके भीतर जीना था
      न quests थीं, न कोई villain, बस अच्छाई, बुराई और उनके बीच की सारी परतें मौजूद थीं
      काश कोई studio इस दर्शन को फिर से साकार करे। मुझे लगता है Minecraft की सफलता की वजह भी यही sandbox nature है
    • UO मेरे अनुभव का सबसे बेहतरीन online game था। बाकी गेम्स उसकी छाया में खड़े हैं
      मुझे EverQuest और WoW भी पसंद थे, लेकिन उनमें वैसी आज़ादी और अनगढ़ एहसास नहीं था
      व्यक्तिगत रूप से मैं The Realm को भी बेहतरीन MMO दावेदार मानूँगा
    • उल्टा, मुझे लगता है उसमें आज से भी ज़्यादा modern sensibility थी। शायद इसी वजह से मुझे Stardew Valley और Animal Crossing भी पसंद हैं
    • UO खेलते समय जो खालिस खुशी मिलती थी, शायद मैं उसे पूरी ज़िंदगी ढूँढ़ता रहूँगा। अभी भी मन करता है नौकरी छोड़ दूँ और दिन भर वही खेलूँ
  • यह सच में कमाल का काम है। contribution graph देखकर हैरानी हुई कि क्या यह सब सच में एक ही व्यक्ति ने किया
    इसका एहसास 16 साल पहले शुरू हुए Infantry Online server emulator प्रोजेक्ट जैसा है
    मैंने SourceForge के original commits भी देखे, वह 10 से ज़्यादा developers द्वारा 15 साल से अधिक समय तक maintained प्रोजेक्ट था
    जानना चाहूँगा कि आपने अकेले इतना सब कैसे कर लिया

    • मैंने पहले प्रयास Moongate और Prima से infra लेकर जल्दी base तैयार किया
      Lua scripting मैं पहले ही Lilly.Engine में implement कर चुका था, और Codex ने testing व feature implementation में मदद की
      data import के लिए ModernUO की logic देखी, और items को POL से scripts के जरिए लाया
      जब मैं किसी चीज़ में डूबता हूँ तो obsession के स्तर तक गहराई में जाने वाला इंसान हूँ, शायद इसलिए यह संभव हुआ
    • web frontend पूरा Codex ने React में बनाया। मैं frontend development से नफरत करता हूँ
  • यह वाकई शानदार प्रोजेक्ट है। मैं पहले C++ आधारित UO emulator UOX3 का maintenance करता था
    मैंने उसे खुद develop नहीं किया था, लेकिन community management और release की ज़िम्मेदारी संभालता था, और कनाडा के एक दोस्त के साथ private server भी चलाता था
    अच्छा हुआ कि Origin ने इसे कानूनी मुद्दा नहीं बनाया

    • हाई स्कूल में मैं UO का इतना आदी हो गया था कि लगा यह लत बन रही है, इसलिए account बेचकर खुद को उससे अलग किया
      याद है, वह account मैंने eBay पर कुछ हज़ार डॉलर और MTG Mox Pearl के बदले बेचा था
      उसी समय UOX के जरिए मैंने C++ सीखी और पहली बार programming की ताकत महसूस की
      मैंने एक mod बनाया था जिससे आप अनंत रूप से जुड़े हुए moongates रख सकते थे, और उसी अनुभव ने मुझे programming की राह पर डाल दिया
      बाद में Python सीखी और वही आगे मेरी मौजूदा career तक पहुँची। वह सच में जीवन बदल देने वाला अनुभव था
      (मेरा परिचय लिंक)
    • यह सुनकर अच्छा लगा! सच कहूँ तो UOX3 Moongate की प्रेरणाओं में से एक था
      उसका server structure और scripting approach बहुत दिलचस्प था, और उसने इस प्रोजेक्ट को भी प्रभावित किया
      ऐसे प्रोजेक्ट्स UO emulator के इतिहास का बड़ा हिस्सा हैं
  • इसने सच में पुरानी यादें ताज़ा कर दीं। मैं Trinsic के पास एक छोटा घर खरीदकर bakery चलाता था
    मैंने NPC merchants रखे थे ताकि मेरी गैरहाज़िरी में भी सामान बिकता रहे, और मेरा दोस्त एक tower सजाकर उसमें रहता था
    WoW को housing system लाने में 20 साल लग गए, लेकिन UO के घर दुनिया के भीतर साँस लेती जगहें थे

  • मैंने Moongate की architecture analysis पोस्ट पढ़ी, और Source Generator से DI implement करना तथा Lua के जरिए C# recompile किए बिना behavior अलग करना बहुत प्रभावशाली लगा
    आपने कहा कि NPC AI अभी नहीं है, तो क्या पारंपरिक FSM की जगह LLM-आधारित microservice को Lua से जोड़ना दिलचस्प नहीं होगा
    इससे NPC के पास संदर्भयुक्त बातचीत और memory हो सकती है, और वे player input के आधार पर वास्तविक events trigger कर सकते हैं
    packet layer और Lua environment पहले से अच्छे हैं, इसलिए integration भी साफ़-सुथरा लग रहा है। मैं साथ में AI logic design पर काम करना चाहूँगा

    • यह बहुत दिलचस्प विचार है। NPC संवाद आगे चलकर ऐसी प्रणाली बन सकता है जो दुनिया को ही बदल दे
      जैसे अगर आप कोई अफ़वाह पूछें, तो वही अफ़वाह वास्तव में गेम के भीतर एक घटना बनकर उभर आए
    • रुचि है। GitHub पर संपर्क करें
  • MMO servers में समय के साथ structure जटिल हो जाना आसान है, इसलिए network और game logic को अलग करने वाला clean architecture approach प्रभावशाली लगा
    खासकर sector-based delta sync में, भीड़भाड़ वाले क्षेत्र में प्रवेश करते समय packet flood को आप कैसे रोकते हैं, यह जानना चाहूँगा
    NativeAOT का उपयोग सिर्फ deployment सरल बनाने के लिए है या performance के लिए भी, यह भी जानना है

    • मुख्य प्रेरणा वही थी। पुराने UO codebases में network, storage और logic आपस में उलझे रहते हैं, इसलिए मैंने .NET-आधारित नया approach आज़माया
      sector में प्रवेश करते समय आस-पास के sectors के items और mobiles sync किए जाते हैं, लेकिन जो sectors पहले से दिख रहे होते हैं उन्हें छोड़ दिया जाता है
      जो items दृश्य सीमा से बाहर चले जाते हैं, उन्हें client हटा देता है, इसलिए दोबारा भेजना पड़ता है
      packet transmission queue से process होती है, इसलिए game loop block नहीं होता
      आगे चलकर priority-based transmission और tick spreading जोड़ने की योजना है
      NativeAOT का फायदा deployment simplicity भी है, लेकिन असली बात predictable performance है। इसमें JIT delay नहीं होता और tick timing consistent रखी जा सकती है
    • packet flood रोकना मूल रूप से proximity loading पर निर्भर लगता है
      मैं भी एक मिलते-जुलते प्रोजेक्ट में frustum-based spawning से network bursts कम करने के प्रयोग कर रहा हूँ, इसलिए यह दिलचस्प लगा
      code पढ़ने में आसान है, इसलिए उससे काफी सीखने को मिलता है
  • संयोग से, Moongate जिस Lua engine MoonSharp का उपयोग करता है, वह हाल में फिर सक्रिय हो गया है
    उसने 10 साल बाद v3.0.0 beta release निकाली है
    मैं इसका मूल निर्माता नहीं हूँ, लेकिन GitHub maintainer के रूप में जुड़ा हूँ, और Tabletop Simulator भी इसी engine का उपयोग करता है

  • मेरा मन है कि एक server ज़रूर खोलूँ। 15 साल पहले मैं SphereServer admin था, लेकिन अपनी scripts और world data सब खो चुका हूँ
    फिर भी लोगों के साथ पुराने अंदाज़ में classic UO का आनंद फिर से लेना चाहता हूँ

    • यहाँ SphereServer का ज़िक्र देखूँगा, यह सोचा नहीं था!
      मैं भी पहले बहुत custom scripts बनाता था, लेकिन वे सब खो गईं
      SphereServer ही वह वजह था जिससे मैंने पहली बार scripting सीखी
  • मुझे logo बहुत पसंद आया। क्या प्रगति दिखाने वाला कोई YouTube video है?

    • धन्यवाद! logo थोड़ा संयोग से बन गया, लेकिन मैं उसमें मूल Moongate vibe लाना चाहता था
      अभी video नहीं है, लेकिन login, character creation, world movement, Lua item scripting, और React-आधारित admin UI जैसी चीज़ें काम कर रही हैं
      जल्द ही README में एक छोटा demo video जोड़ने वाला हूँ
  • हाल में मैंने YouTube पर Majuular की Ultima series videos देखीं और बहुत प्रभावित हुआ
    उसी की वजह से मैंने GOG पर Underworld और VII खरीदे। लगता है मैंने 90s के classics मिस कर दिए थे
    मेरा भाई UO बहुत खेलता था, और मेरा एक दोस्त SirDarkSpell नाम से कुख्यात griefer था
    यह प्रोजेक्ट देखकर दोनों बहुत खुश होंगे। इस वीकेंड मैं Stygian Abyss में डूबने वाला हूँ

    • Ultima Underworld एक शानदार गेम है