The Road to Undermountain# 2018 Jan 15
So now we run a game. *gulp*
We run a game that’s been around since 1997, had many features added to it, and has managed to survive the many things that have been thrown at it. But a few things stuck out as issues:
- staff activity had dwindled in the coding and building areas,
- many bugs still exist that have been around for years,
- few activities for players to do, most of which the veterans have a huge advantage at,
- everything requires a code change, and C is terrifying for people to learn
These were all items that have plagued most MUDs that have been around for this long, with two possible options: fix the problems or eventually dwindle into non-existence. So we’d need to combat this problem with a few phases.
Hire Some People
And after hiring some new coding and building staff, I believed we had the team that would be able to achieve this:
- Kelemvor (me!) - Coder and Delegator
- Jergal - Everything from Coding to Roleplay
- Torog - Events and Roleplay
- Mielikki - Roleplay
- Bahamut - Building
- Sune - Enforcer and Justice
As well as the various staff members and owners who had been around forever and showed up from time to time: Kord, Nisstyre, Meathe, Epsilon, Bane, Malar, Mask, Vorcet, and Sharess.
I had a team I could trust to be honest, caring, and get some work done. I could delegate the work to be done and trust that it would be handled.
For a game that’s been running 20 years, you’ll find with that kind of longevity comes a few interesting problems. Many of which show up in interesting ways, not all of them are necessarily code-related. The economy was in shambles, players felt they had been owed for past hardships, feuds between community groups had gone on for years.
We started by fixing the various bugs in the codebase that we could find, especially the low-hanging fruit that was causing obvious crashes; but funny enough, it turns out that the game wasn’t exactly coded over the years to be able to handle a long uptime.
It was a bit of a rat’s nest.
Revamp the Engine
It’s at this point we decided that we’d start a two-pronged approach for Waterdeep’s future: stem the bleeding of the current game with fixes, events, and duct tape in a few places, while we work on creating our own engine upon which to run the game: Undermountain.
The goals of this project would be fairly straightforward, but also quite flexible:
- Easy to Learn - Programmed in Python, be fairly easy to learn and get started with contributing to,
- Batteries Included - Designed to be used as a framework for creating MUDs (and potentially other games) with reusable tools to handle the various tasks,
- Flexible - Be modular so that portions of the logic could be replaced or implemented in other ways,
- Powerful - Support scripting for the world, rather than in the codebase– giving more powers to the builders
- Stable - Trading a bit of performance that raw C would afford, memory safety and asynchronus task management would be easier to implement
With this codebase behind our project, we would be able to re-implement what Waterdeep provided, as well as support other universes and worlds.
Goals and Future
With the engine updated to support many new functionalities, our goal will be to migrate Waterdeep over to it and start expanding the game (and underlying engine) to support anything we can think of.
Alongside this progress, we plan to start a network of a few MUDs that implement different universes, functionalities, organizations, vehicles, and more.
Where Are We Today?
Waterdeep is running, available at telnet://waterdeep.org:4200 or via our web-based client: https://client.waterdeep.info/ and being supported primarily by Jergal on the coding side of things, as we try to gear up for the new codebase.
Undermountain is slowly progressing, with features being added daily. The codebase is open-sourced and coming along quite nicely at: https://github.com/gvanderest/undermountain
Progress is being made daily to get an example of the game available for connecting with a telnet client to beta.waterdeep.info on port 4200. A web client will be getting developed in the near future for this instance.
We really appreciate the support we’ve gotten so far, and we’ll keep everyone posted as we reach milestones in the project.