Log in

No account? Create an account
Previous Entry Share Next Entry
Passion - MUD development

One of my biiiig passions that has never ever faded has been -- Multiplayer Online Dungeons. (MUD's).  Some of the more popular MUD's these days are: Guildwars, WoW, EverQuest, etc -- these are a subset known as the MMORG's or Massively Multiplayer Online RolePlaying Games (or is it Multi-Media)? 

Its the combination of:
  • Real live people interacting with each other and with a system in a synthetic world
  • Controlling the parameters of the world to enhance the user's joy as they interact.  Ie, COOL STUFF
  • Simulating an entire system - how things weigh, how they are placed with each other, how they
  • interact with each other, etc.
  • Creating Systems - Economies, Combat Models, IM Models, Levelling models, Skill Models.

Over the years, when I first got involved, I was a principle coder and architect of Vincent's Hollow LPMUD -- which is still up and running today, just very very small.  I think its on the 3rd set of maintainers now, and the 3rd incarnation of itself.    We went through so many cool implementations.. the ones I fondly remember:
  • Architecting an "Endless Sea" that people could sail on -- a sort of 2D-map-driven-thing within a linear text mud. It was conceived as a way to expand to limitless numbers of lands without having to worry about linking them all together. Sea battles and everything. My friend Randy (Quag) coded it (my goodness, he was an awesome coder) (I also learned the difference between passion for design and passion for coding -- I'm much more a designer than a coder, though I can do both very well).
  • Refactoring the sequence of Find_Object().Get_Parent().xxx.yyy down to a single: X_Find("@person.^.monster(xxx)"). In a way, this was like a primitive version of XPath queries -- keep in mind, this is all in 1991, long before XML became popular, before Java, before C#.
  • Adding a lighting system into the LPMUD Driver similar to the Weight system. (I think this made it into the kernel).
  • Programming in LPC. LPC was like.. Javascript! but came much before it. C-like syntax, awesome try/catch type constructs, a loose-ruled multiple inheritance model (used similar to how interfaces are used now), and other neat constructs like shadows (run-time, slap-on inheritance), timers, call back functions... Just an amazing language for simulating systems of objects interacting with each other with time components.
  • Writing mapping autodiscovery code -- little robots that ran around and traversed the maze of what existed, logged it, and then offline code to try to render a map of it. Looking back, I know so much more now of how to do that.. think TouchGraph now. It was a fun effort, though. I wanted to extend it so that I could create automatic guides -- ask the guide to lead you to a certain location, and then they would do exactly that, for a fee.
  • Creating a black-box combat model -- the previous combat models were all so ingrained. What we did was, we created a "combat" object that we would clone and stick in a person's inventory -- that combat object interacted with all the other combat objects in the room -- they all knew about each other, with a combat controller, etc. What that helped us do -- i wrote a very simple combat model, which then somebody else came along and reimplemented (Prydain, Jack Needles, another very passionate mudder.) Looking back, its similar to the design principle of Model View Controller that Microsoft and other folks use all over the place.
  • Managing people -- Training people -- divvying up tasks -- it was basically a little volunteer programming team, and I learned how to be soft and gentle, work with people, yet also inspire people to be excited about getting stuff done. I learned how to help without taking over, and many other skills that I've since used in my career.
  • System Autobalancing -- One of the problems we'd always faced is, how do you know how much XP a monster could or should be worth? So, we created a random monster arena -- we kept a log of all monsters that exist, and we would randomly pit them against each other, and see how badly they trounced on each other -- and then use that data to establish a scale of difficulty, and then cache that information persistently -- and so when you create a monster, it asks how much XP am I worth, and we would tell it. If we didn't know, we'd give it a default value, and the put it in the queue to enter monster gladiator school, so that the next incarnation would have a better number.
  • Skill JIT calculation -- Discovered over time that one of the performance bottlenecks was in calling the functions to read values -- HP (hitpoints), AC (armor class), etc -- partially because each of these had a standard base value, plus any temporary modifiers (for example, if you were holding a sword of HP+10, then we had a +10 modifier on your HP, which was kept track of seperately) -- well, all this took a lot of horsepower to calculate every time it was needed. It was also noted that most things were reads, not writes.

    So, created a cache -- at two levels. One of them was based on immediate modifiers -- other things, like for example, your HP depended on your level -- had a secondary cache with a system of dependencies so that if your level changed, that meant that 0000011101101 had to change, which invalidated certain entities so that the next time they were queried, it would trigger a calculation. >In addition to that, needed a system so that these dependencies could be represented easily.

    In retrospect, what I did was probably overkill. And the core base problem was: LPC was an interpretted language.

Since I left the active world of mud development 15 years ago, i've often gone back with a gleam in my eye, but have not had the time or the support to do anything. My old mud-mates -- all are married, with children, and its much more fun to play Guildwars than it is to write Guildwars. I have made occasional attempts at doing some things:
  • Write an LPC-type system in C#, complete with in-game recompiling and stuff. Go check out sunnywizmudding for my thoughts on that subject.
  • Create a mud which tried to put some cosmic principles -- stuff from my spirituality -- into play. Things like Tithing, and Helping-Others-Increases-Luck, and Reincarnation, and even having monsters have "souls" and "ghosts" that also go back and resurrect and have the monsters have personalities and histories of their own.
  • Create a now-that-I'm-Level-20-What-Should-I-Do thing, where people go and create kingdoms, and armies, and basically a resource-gathering type game like civilization within a mud. Opportunity of course to higher other players to do stuff for them, etc.
  • Create a 2D mud -- I love the 3D stuff that's out there, but I have no skills in those areas yet, and as I like architecting, I can architect a 2D mud better than a 3D mud anyways. Besides, i grew up on games like NetHack and I would love to make that genre available again, with coding possibilities. Note: Then Neverwinter Nights came along and implemented my idea. I was almost crushed.

What would I do with this passion? are there Master's programs yet in this field? I'd so go back to school if I could pursue this...

  • 1

What not game development?

Xav and I always say that we need to do what we enjoy. We like games. We like computer games. Maybe our calling is to make games for other people to enjoy. We have been tossing some ideas around, but no catalyst to push us forward. Perhaps the catalyst is you, oh, great coder and designer :)

Re: What not game development?


Well.. no, i no have passion for games. Games is pretty boring -- working with limited set of things to create environment for people to achieve particular goals, etc.

Nowhere near the fun of creating complex systems with no particular endgoal in sight, and no fixed way for people to get there.

And.. gaming industry is VERY competitive, ruthless even. The way it is now, i'd burn up if I entered there.

Now, adapt it instead to something like: using virtual environments and system simulation to help teach -- now you're talking my language. :)

Re: What not game development?

What's your hourly rate - Doing some work in Visual Studio VB w/ ASP.NET for work and will require some outsourcing in a month or so. Email me if it needs to be private :)

Oy. My list would be large, as well.

One another MUD someone asked to me to write a daemon to control weather across the MUD, since I was a meteorology undergrad at the time. It took me about two hours to go "Sorry, no can do. I'd never be happy with it." -heh-

You were such a snob about that.

... "But all I want is that it says that it rains sometimes. It doesn't have the be realistic, I mean, people toss fireballs about."

I stand by my snobbery!

Hard to recreate Michelle when it's a reserved name. -heh-

This is Sabby, if you remember who the heck I am.

... We did that on purpose, sir. Didn't want someone coming along and claiming to be you. I'll gladly open the name back up to you if you want it. A lot of the people that were lost to real life had their names reserved. In fact, I think you were the reason why the message says "reserved" and not banned. (What we did was "ban" your name, but it just seemed WRONG to do it with a command that reported banning as the reason.)

Anyhow, yeh, let me know if you wanna log back on. And let me know if you wanna have the wiz powers back just to poke around. I almost never log in, but there's still a few people that pop in now and then.

Oh, I know why the name was reserved. :D

Yeah, poking around would be cool.

  • 1