Source MUD
Source MUDNewsWikiBugsForumFilesSource LoginRegister
HomeForumsDevelopmentCurrent development is in...?
Current development is in...?
Development
Kintar Dec 15th, 2008 at 8:22am
Hey there. I recently got turned on to SourceMUD by a friend, and in browsing through the site, I'm a little confused. The README says SourceMUD is written in Python, and there's a post talking about the last GIT check in from the C++ code, and that the repository would soon be archived to make way for the Python code. But then there's a (more recent than the first) post about Python not being the way the code should go, and I see that there are very recent commits to the C++ repository. But then the current download package is still Python.

I'm just a bit confused. Could someone tell me what's currently going on?
Elanthis Dec 15th, 2008 at 11:15am
Yes, I admit, it's been a bit confusing. I'll give you some history, and (at the very bottom) a short and clear answer.

When I was 16, I started AweMUD. It was a C++ MUD server, with the very vague goal of being "Open Source and awesome like Simutronics' Gemstone III." Which is a pretty crappy goal. And at 16, I wasn't exactly an experienced programmer. Over the course of 8 years AweMUD never hit fully-usable, mostly because I kept using it as a ground for learning and experimentation. AweMUD has had Python, Ruby, TCL, Lua, and several different custom script engines integrated into it at one point of time or another, for example. Its file format has changed through a number of standard and custom formats. Parts of its internals have been rewritten over and over, and other parts have been left very much the same as originally written by 16-year-old me. In short, it really sucked.

I started Source MUD as a from-scratch C++ MUD based, with a clearer set of features in mind, and a desire to use all I know after almost 8 years of professional experience. Unfortunately, almost all of my professional experience is in working with very dynamic languages, and my C/C++ skills had remained mostly academic in nature. I realized I was doing things in a way that a dynamic language would (notice the use of regular expressions in a few too many places in the sourcemud-cxx repo, for example). So I figured I might as well just write it in a dynamic language; after all, I tell everyone else that's the best way to write apps these days, as C/C++ just slows you down and no MUD actually needs that level of performance.

So hence Python SourceMUD. I'd used Python a lot years ago, I liked it, I decided to work in it. During that work, I was reminded of one of the primary weaknesses of dynamic languages: they really do suck for large-scale complicated applications. They're great for small apps. They in turn are great for Web-style applications, because in reality all a huge Web app is is just a ton of tiny little applications all working together. A single HTTP request only uses a tiny portion of a Web application's code, after all. When a single feature in a MUD needs to touch half of the codebase (e.g., the network/TELNET handler, to the player session handler, to the command parser, to the "get item" action handler, to the room search code, to the object container search code, to the player inventory code...) dynamic languages become a huge pain in the ass. The vast majority of them don't make it possible to define the actual API of a module; I can say that the Player.getItem() has two parameters, but I can't easily enforce that the first parameter is the container to look in (possible just null/nil/None/undefined/whatever) and the second is the name of the object to search for as a string. So if I pass in the wrong type, on accident, I won't find out until I start the server, log in, and type in the command. After I mentioned these problems and have several Python apologists jump up my ass telling me that I was obviously I only knew how to use static languages (despite having been using dynamic languages professionally for longer than some of those people had been programming at all) or that obviously I should be writing unit tests because that's better than having the language specify types. Aside from the fact writing a 10+ unit test for every possible caller of a method (not just the method itself) to check types seems like a huge waste of effort compared to just adding one freaking word (the type name) to each parameter in the method declaration, and that running a full set of unit tests is even slower than recompiling a small handful of C++ files and hence the arguments that compiling is a waste of time are totally bogus, I was really put off by the Python community's desire to stick their heads in the sand as well their hostility. I pretty much stopped having any desire to work on a Python project outside of my for-pay duties at that point. Plus I was still have some legitimate problems with Python; Python 3.0 fixes many of those (string types in particular), it leaves a few others wide open.

The MUD itch finally kicked back in. I have not yet announced it yet, but I've dusted off AweMUD. I've renamed it to Source MUD, and I've spent about a week and a half cleaning it up. I started by ripping out the biggest design mistakes (the custom script engine and the use of the Boehm GC, which I did to suppose said custom script engine). I then started cleaning up some crappy code, and fixing memory management issues (a lot of the code is written with the assumption that there is a GC, which now there isn't). I still have more cleanups and memory management fixes to do. I don't know how far I'm going to take the codebase; I may just take it to a relatively bare-bones "build your own MUD" level, or I may continue hacking on it for years to come. To be honest, I fully believe that graphics technology and game design tools have long since reached the point where a graphical game can offer 100% of the features and flexibility of a text MUD, in addition to offering features that are flat out impossible in a text MUD. I foresee the hobbyist MUD scene being mostly (not entirely) replaced with a free, hackable server+client combo equivalent to more modern and heavily improved version of Bioware's Neverwinter Nights. Once you have tools for non-artists to easily create levels, plots, quests, NPCs, and so on, the one advantage of text games (much easier for non-artists to create) essentially disappears. If a community springs up offering free models, textures, and tile sets like the HUGE community NWN has, there really ceases to be any reason to accept the limitations of text, even if you don't have an ounce of artistic talent. Once Source MUD is out in something I feel comfortable calling 1.0, I very well may decide to leave it alone and dedicate my hobbyist developer time to such a graphical game; especially since I'm very strongly considering "rebooting" my career and enrolling at Digipen University next year as a Game Design major.

Short summary: a revamped and majorly cleaned-up C++ AweMUD is going to become the new Source MUD. Once the codebase is in a pretty solid shape, I will make a new release. Then I will add in the few missing features necessary for a basic playable MUD, which will be Source MUD 1.0. The future of my involvement with Source MUD beyond that point is unclear.
Vassi Jan 18th, 2009 at 1:56am
Amen.
DOSGeezer (unreg) Feb 8th, 2009 at 5:23pm
Any idea when Source MUD 1.0 should be available?
Elanthis Feb 26th, 2009 at 11:50pm
Not a clue.
Xenith Dec 28th, 2009 at 6:45pm
I am saddened that, despite having followed AweMUD back in the day, somehow I never discovered your move to SourceMUD. To think of all those missed discussions on the upsides and downsides of databases, which scripting languages were actually useful to embed, and other fun design decisions.

I guess I'll stick around, and maybe learn something along the way.
Elanthis Jan 13th, 2010 at 2:46pm
Sadly, there may not be much more to learn. I just don't have a lot of free time anymore at all. DigiPen is life-consuming. I spent 30/hrs a week just one one project last semester, I have the continuation of that project this semester (which our team is hoping to get into IGF this year), plus my other classwork and my 20 hr/week job (which I am, apparently, insane for trying to keep while attending DigiPen, so sayeth the school staff).

As much as I'd love to work on MUDs as a school project, they tend to prefer games with graphics and physics and heavy math as a learning tool over text games, at least for Sophomores and up, which I transferred in as.

Reply to Topic
or Login