[{"data":1,"prerenderedAt":679},["ShallowReactive",2],{"project-47275236":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":45,"post_text":47,"what":48,"said":97,"maker_in_thread":191,"shape":202,"grid":206,"attempts":641,"same_week":642,"maker_shows":43,"maker_hidden":671,"reader_version":672,"card":673},"47275236","Moongate","Ultima Online server emulator in .NET 10 with Lua scripting","title","Show HN: Moongate – Ultima Online server emulator in .NET 10 with Lua scripting","https:\u002F\u002Fgithub.com\u002Fmoongate-community\u002Fmoongatev2","github.com","squidleon",1772806979,2026,287,164,156,4366,4,"legend","games","game server emulator","other",[24,25,26,27,28],"ultima online","mmo server","lua scripting","nativeaot",".net","loved",0.471,{"positive":32,"neutral":33,"mixed":34,"critical":35},15,9,0,2,26,{"execution":38,"design":39,"performance":41,"idea":42,"docs":44},{"positive":35,"critical":34},{"positive":40,"critical":34},3,{"positive":34,"critical":34},{"positive":40,"critical":43},1,{"positive":34,"critical":34},[34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,46,43,40,46,46,46,46,34,46,34,46,46,34,34,40,46,40,18,40,46],5,"I've been building a modern Ultima Online server emulator from scratch. It's not feature-complete (no combat, no skills yet), but the foundation is solid and I wanted to share it early.\n\nWhat it does today:\n- Full packet layer for the classic UO client (login, movement, items, mobiles)\n- Lua scripting for item behaviors (double-click a potion, open a door — all defined in Lua, no C# recompile)\n- Spatial world partitioned into sectors with delta sync (only sends packets for new sectors when crossing boundaries)\n- Snapshot-based persistence with MessagePack\n- Source generators for automatic DI w",{"problem":49,"audience":55,"pricing":55,"motivation":56,"time_to_build":55,"stack":63,"openness":94,"stage":95,"team_size":96},{"value":50,"source":51,"evidence":52},"Lets people run a modern Ultima Online server with scripting in Lua instead of C# recompiles","maker",[53],{"id":54},"post",null,{"value":57,"source":51,"evidence":58},"Rethink the MMO server architecture from scratch with strict network\u002Fdomain separation and Lua for fast iteration",[59,60],{"id":54},{"id":61,"by":11,"text":62},"47276669","This is such a good observation. UO had a real economy and social hierarchy because power wasn't handed to you. You could spend months as a fisherman or tailor and still have a…",[64,68,72,76,80,84,88],{"value":65,"source":51,"evidence":66},".NET 10",[67],{"id":54},{"value":69,"source":51,"evidence":70},"NativeAOT",[71],{"id":54},{"value":73,"source":51,"evidence":74},"Lua via NLua",[75],{"id":54},{"value":77,"source":51,"evidence":78},"MessagePack",[79],{"id":54},{"value":81,"source":51,"evidence":82},"DryIoc",[83],{"id":54},{"value":85,"source":51,"evidence":86},"Kestrel",[87],{"id":54},{"value":89,"source":51,"evidence":90},"React",[91],{"id":92,"by":11,"text":93},"47277250","I forgot to mention, the entire web part in React was done by Codex. I hate developing frontends!","open_source","prototype","solo",{"praise":98,"objections":130,"requests":145,"questions":160,"alternatives":176},[99,115],{"value":100,"source":101,"evidence":102},"Nice project and architecture, cool logo and name","commenter",[103,107,111],{"id":104,"by":105,"text":106},"47277684","bhekanik","Really like the strict network\u002Fdomain separation + Lua-at-the-edges approach here. In game servers, once simulation logic and protocol plumbing get tangled, every feature turns…",{"id":108,"by":109,"text":110},"47275677","onlyrealcuzzo","I love your logo. Do you have a YouTube that shows off the progress of what's complete?",{"id":112,"by":113,"text":114},"47275698","zdware","Ahhh this takes me back to playing on various private UO and DAoC servers. Part of that experience is why I am a developer today. Cool name for a project like this along with the…",{"value":116,"source":101,"evidence":117},"Nostalgia for Ultima Online and private shards",[118,122,126],{"id":119,"by":120,"text":121},"47279470","elevaet","Cool, nice work! I've been building a MORPG version of a kind of Ultima 3.5 on the side in spurts for the last 5 years using Go, postgres, and React on the frontend. Top view…",{"id":123,"by":124,"text":125},"47278330","jajuuka","This is super cool. Never played UO myself, but had friends who did. I'll be keeping an eye on this as someone interested in the private MMO server community. Hope others can…",{"id":127,"by":128,"text":129},"47279345","yangosoft","Impressive! I spent many many hours in UO when I was young. It was so great playing in some shards with hundreds of real persons.",[131,138],{"value":132,"source":101,"evidence":133},"Calling it a server emulator is technically inaccurate",[134],{"id":135,"by":136,"text":137},"47276257","kethinov","I'm a fan of UO and I love seeing more projects like this. Nice work! Obligatory nitpicky aside, a time-honored tradition of HN: I've long been irritated by the use of the term…",{"value":139,"source":101,"evidence":140},"Possible copying concern given LLM training on existing emulators",[141],{"id":142,"by":143,"text":144},"47288382","heliumtera","Why did you choose C# for this project? Does it have something to do with the fact that we already have plenty well established Ultima online server emulators in the training set…",[146,153],{"value":147,"source":101,"evidence":148},"Support for multiple clients from the same IP address",[149],{"id":150,"by":151,"text":152},"47303260","knicholes","Can you make it so multiple computers can connect from the same IP address? I really want to play with my kids!",{"value":154,"source":101,"evidence":155},"Support for newer client boat movement packets",[156],{"id":157,"by":158,"text":159},"47278052","stackghost","Impressive work! Does it support the smooth boat movement packets from the newer clients?",[161,168,172],{"value":162,"source":101,"evidence":163},"How is sector sync handled to avoid packet bursts",[164],{"id":165,"by":166,"text":167},"47277894","swaminarayan","Very cool project. MMO server codebases tend to accumulate a lot of architectural complexity over time, so starting fresh with a cleaner separation between networking and game…",{"value":169,"source":101,"evidence":170},"How the Lua boundary performs under load",[171],{"id":104,"by":105,"text":106},{"value":173,"source":101,"evidence":174},"Why NativeAOT was chosen",[175],{"id":165,"by":166,"text":167},[177,184],{"value":178,"source":101,"evidence":179},"SphereServer",[180],{"id":181,"by":182,"text":183},"47280962","zorm","Very cool to see! I was active in the UO emulator communities back in the day but mostly with SphereServer. It is interesting to see here in the comments how many people were…",{"value":185,"source":101,"evidence":186},"UOX3",[187],{"id":188,"by":189,"text":190},"47279492","jdwithit","Very cool work! This is giving me a big nostalgia hit, as a LONG time ago (when UO was a current game ;) I maintained a C++ UO emulator called UOX3. To be clear I absolutely did…",{"comments":192,"answered":193,"key":194},22,10,[195,196,199],{"id":61,"text":62},{"id":197,"text":198},"47276756","Too old for arc raiders :D :D :D !",{"id":200,"text":201},"47277003","I've never heard of Tibia, I'll check it out!",{"commenters":203,"max_depth":193,"maker_replies":192,"first_comment_mins":204,"lifespan_hours":205},91,36,58,[207,211,212,214,217,219,221,224,228,231,234,237,239,242,245,247,249,252,255,257,260,262,264,266,269,271,273,275,277,279,282,284,287,290,292,295,297,300,303,306,308,310,312,315,317,320,322,325,328,331,334,336,338,341,343,346,348,351,354,355,358,361,364,366,369,371,373,376,379,381,383,386,389,392,394,397,399,401,403,405,407,409,412,415,418,421,424,428,430,434,436,438,442,444,447,448,451,454,456,460,462,466,468,471,473,476,480,484,487,491,494,496,500,502,505,507,509,512,514,516,518,520,522,524,526,530,532,535,537,539,540,544,546,549,552,554,556,558,560,562,564,566,570,572,576,579,583,586,588,590,592,594,597,600,602,604,607,610,614,616,621,625,629,631,634,638],[208,34,34,209,210,34],"47276600","other\u002Fneutral\u002Fnone","haolez",[61,34,34,209,11,43],[213,34,34,209,210,34],"47277119",[215,34,34,209,216,34],"47277217","NDizzle",[218,34,34,209,210,34],"47281736",[220,34,34,209,216,34],"47283701",[222,34,34,209,223,34],"47287639","jghn",[225,34,34,226,227,34],"47277686","other\u002Fneutral\u002Fdesign","vunderba",[229,34,34,209,230,34],"47278167","mapt",[232,34,34,233,210,34],"47281756","commenter\u002Fneutral\u002Fnone",[235,34,34,233,236,34],"47282094","throwway120385",[238,34,34,209,230,34],"47297714",[240,34,34,226,241,34],"47278384","thewebguyd",[243,34,34,209,244,34],"47277717","deadbabe",[246,34,34,233,158,34],"47278105",[248,34,34,233,244,34],"47278245",[250,34,34,233,251,34],"47282120","Barrin92",[253,34,34,233,254,34],"47285787","pjc50",[256,34,34,233,223,34],"47287617",[258,34,34,233,259,34],"47290136","JoshTriplett",[261,34,34,233,230,34],"47278381",[263,34,34,209,223,34],"47283051",[265,34,34,233,210,34],"47278501",[267,34,34,209,268,34],"47278538","codezero",[270,34,34,209,151,34],"47279777",[272,34,34,209,223,34],"47287631",[274,34,34,209,151,34],"47294174",[276,34,34,209,223,34],"47294472",[278,34,34,233,223,34],"47297418",[280,34,34,209,281,34],"47279745","tagami",[283,34,34,209,268,34],"47278499",[285,34,34,209,286,34],"47279125","eclipticplane",[288,34,34,233,289,34],"47280068","mwigdahl",[291,34,34,233,286,34],"47280771",[293,34,34,233,294,34],"47278611","havblue",[296,34,34,233,210,34],"47281691",[298,34,34,209,299,34],"47279554","nzeid",[301,34,34,209,302,34],"47280641","shiftpgdn",[304,34,34,233,305,34],"47280822","NoOn3",[307,34,34,233,259,34],"47290078",[309,34,34,209,223,34],"47283036",[311,34,34,209,223,34],"47283030",[313,34,34,209,314,34],"47285193","ajxs",[316,34,34,209,268,34],"47278467",[318,34,34,209,319,34],"47286308","DonHopkins",[321,34,34,209,286,34],"47279250",[323,34,34,209,324,34],"47279884","SenHeng",[326,34,34,209,327,34],"47280907","faidit",[329,34,34,209,330,34],"47286726","andrepd",[332,34,34,209,333,34],"47287199","prox",[335,34,34,233,223,34],"47287597",[337,34,34,233,223,34],"47282970",[339,34,34,233,340,34],"47283686","chongli",[342,34,34,233,223,34],"47283843",[344,34,34,209,345,34],"47283394","mbonnet",[347,34,34,209,330,34],"47286692",[349,34,34,209,350,34],"47286705","idiotsecant",[352,34,34,209,353,34],"47276708","simlevesque",[197,34,34,209,11,43],[356,34,34,209,357,34],"47279506","sanex",[359,34,34,209,360,34],"47276737","reactordev",[362,34,34,209,363,34],"47276921","tarellel",[365,34,34,209,360,34],"47279307",[367,34,34,209,368,34],"47276974","theultdev",[200,34,34,370,11,43],"maker\u002Fneutral\u002Fnone",[372,34,34,209,368,34],"47277184",[374,34,34,209,375,34],"47277178","axus",[377,34,34,209,378,34],"47277690","_doctor_love",[380,34,34,209,151,34],"47279793",[382,34,34,209,236,34],"47282129",[384,34,34,209,385,34],"47278016","nonethewiser",[387,34,34,209,388,34],"47278410","wellthisisgreat",[390,34,34,209,391,34],"47279402","doctorwho42",[393,34,34,209,223,34],"47283080",[395,34,34,209,396,34],"47278705","tyjen",[398,34,34,209,151,34],"47279755",[400,34,34,209,360,34],"47281974",[402,34,34,209,151,34],"47282483",[404,34,34,209,360,34],"47283014",[406,34,34,209,324,34],"47279818",[408,34,34,209,396,34],"47281761",[410,34,34,209,411,34],"47280729","general_reveal",[413,34,34,209,414,34],"47282302","HanClinto",[416,34,34,209,417,34],"47284599","block_dagger",[419,34,34,209,420,34],"47287609","forestingfisher",[422,34,34,209,423,34],"47290812","DuperPower",[425,43,46,426,427,34],"47277085","maker\u002Fpositive\u002Fexecution","nebezb",[429,43,34,370,11,43],"47277231",[431,43,43,432,433,34],"47279990","maker\u002Fcritical\u002Fnone","doctorpangloss",[435,43,34,370,11,43],"47281026",[92,43,34,437,11,43],"maker\u002Fneutral\u002Fexecution",[439,43,40,440,441,34],"47278774","maker\u002Fneutral\u002Fdesign","freedomben",[443,43,34,440,11,43],"47278837",[445,43,34,233,446,34],"47280113","gopher_space",[188,35,34,209,189,34],[449,35,34,450,11,43],"47279733","maker\u002Fpositive\u002Fnone",[452,35,34,209,453,34],"47289630","pixelmonkey",[165,40,40,455,166,34],"project\u002Fneutral\u002Fperformance",[457,40,46,458,459,34],"47278107","project\u002Fpositive\u002Fexecution","serf",[461,40,34,455,11,43],"47278345",[463,18,46,464,465,34],"47280358","project\u002Fpositive\u002Fidea","godrae369",[467,18,34,370,11,43],"47280393",[469,18,46,464,470,34],"47280427","mungoman2",[108,46,46,472,109,34],"project\u002Fpositive\u002Fdesign",[474,46,34,475,11,43],"47275939","project\u002Fneutral\u002Fnone",[477,478,34,209,479,34],"47285911",6,"whyenot",[481,482,34,209,483,34],"47279194",7,"MisterTea",[485,482,34,209,486,34],"47279277","mkehrt",[488,489,34,209,490,34],"47281794",8,"GardenLetter27",[492,33,34,209,493,34],"47286157","Benjamin_Dobell",[123,193,46,495,124,34],"project\u002Fpositive\u002Fnone",[497,498,34,209,499,34],"47276395",11,"p0w3n3d",[135,501,34,209,136,34],12,[503,501,34,209,504,34],"47276376","daeken",[506,501,34,209,136,34],"47277874",[508,501,34,370,11,43],"47276460",[510,501,34,209,511,34],"47276790","orphea",[513,501,34,370,11,43],"47276975",[515,501,34,370,11,43],"47277079",[517,501,46,495,511,34],"47277602",[519,501,34,233,11,43],"47278400",[521,501,34,233,427,34],"47277260",[523,501,34,233,136,34],"47277796",[525,501,34,233,427,34],"47291564",[527,528,46,495,529,34],"47276802",13,"DeathArrow",[531,528,34,233,11,43],"47276845",[533,528,40,370,534,34],"47285081","oblio",[181,536,46,464,182,34],14,[538,536,34,209,286,34],"47281029",[119,32,46,472,120,34],[541,542,46,495,543,34],"47275696",16,"devin",[545,542,34,209,11,43],"47276022",[547,542,34,209,548,34],"47276345","D13Fd",[550,542,34,209,551,34],"47276382","Fokamul",[553,542,34,233,11,43],"47276554",[555,542,34,209,414,34],"47279025",[557,542,34,209,551,34],"47276314",[559,542,34,209,11,43],"47276720",[561,542,34,209,543,34],"47279159",[563,542,34,233,299,34],"47279634",[565,542,34,209,363,34],"47276941",[567,568,46,495,569,34],"47275790",17,"picklepete",[571,568,34,209,11,43],"47275970",[573,574,34,209,575,34],"47278660",18,"carverauto",[142,577,43,578,143,34],19,"project\u002Fcritical\u002Fidea",[580,581,46,495,582,34],"47287732",20,"ParadisoShlee",[584,581,34,209,585,34],"47287813","pwdonald",[112,587,34,209,113,34],21,[589,587,34,209,11,43],"47275988",[591,587,34,209,286,34],"47283823",[593,587,34,209,223,34],"47287688",[595,192,40,475,596,34],"47279235","thetoon",[598,192,34,209,599,34],"47282206","ongedierte",[150,601,40,475,151,34],23,[127,603,46,495,128,34],24,[157,605,40,606,158,34],25,"project\u002Fneutral\u002Fexecution",[608,36,34,209,609,34],"47277695","gverrilla",[611,612,34,209,613,34],"47279058",27,"nottorp",[615,612,34,209,286,34],"47283855",[617,618,40,619,620,34],"47279505",28,"project\u002Fneutral\u002Fdocs","tamat",[622,623,40,606,624,34],"47280812",29,"7bit",[626,627,34,209,628,34],"47278513",30,"kpw228",[104,630,46,472,105,34],31,[632,630,34,633,11,43],"47278291","project\u002Fneutral\u002Fdesign",[635,630,40,636,637,34],"47278331","project\u002Fneutral\u002Fidea","jasonjayr",[639,640,34,209,628,34],"47278537",32,[],[643,648,653,657,662,666],{"id":644,"name":645,"points":646,"category":647},"47336100","Channel Surfer",604,"consumer_social",{"id":649,"name":650,"points":651,"category":652},"47322887","RYS (layer duplication in LLMs)",495,"ai",{"id":654,"name":655,"points":656,"category":652},"47263036","Jido",323,{"id":658,"name":659,"points":660,"category":661},"47337607","Site Spy",320,"productivity",{"id":663,"name":664,"points":665,"category":22},"47300102","Shadowbroker",312,{"id":667,"name":668,"points":669,"category":670},"47280654","realtuner",259,"dev_tools",false,"v2",{"id":674,"name":5,"line":6,"ai":671,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":675,"top":18,"kw":676,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":677,"url":9,"mix":678,"praise":100,"objection":132,"sub":21},47275236,0.47,[24,25,26,27,28],"0000000000000000000051355550505500353435",[32,33,34,35],1794036695353]