Golem: my hobby MUD project

What is a MUD?

A Multi-User Dungeon (MUD) is a text-based adventure in a shared network environment. Goontube with less videos and more killin’, and gods instead of mods. :black101:

Some feature more social, roleplay-centric mechanics like a text-based Second Life and others are aimed at an action hack-and-slash kill the monsters, get the loot, cast the magic spells, and level up sort of experience, where you’re responding to a rapid gameplay loop with your combat vitals in a line-based prompt. Some do not allow PVP, some allow intense PVP where all loot is dropped on death, some restrict various “severity of death” to different zones for gameplay reasons.

The themes of these games are varied from smurfs to sci-fi to old western to high fantasy to low fantasy to apocalyptic wasteland debaucheries, and some (many) have many themes coexisting in the same game world.

MUDs are typically delivered using the telnet protocol over TCP. Popular clients include MUSHclient and Mudlet. Telnet as a protocol allows the client and server to negotiate about terminal size and other capabilities without interrupting the the player’s text input and the game’s output using a series of “Interpret as Code” (IAC) statements.

Often ANSI escape sequences are used also to create visually engaging and colourful outputs:

End result is something like:

combat

what_is_a_mud

In the above screenshot instance, you can also see the output of my server app.

SomethingAwful-overlapping users might be familiar with these due to HellMOO. I personally spent a lot of time playing, coding enhancements for, and administrating these games over dial-up connections as a geeky kid, and I’d love to revisit them anew for nostalgia’s sake and possibly community-building/fun for goontube?

For about the last month I’ve been spending a couple of hours most nights after work to build one from scratch.

This is the basic “feel” of the game. Lots in common with the old ROM/SMAUG derivatives I spent the most time playing. I am stumbling through creating what I remember bit by bit, day by day.

I’m getting close to hosting a persistent alpha instance and allowing in public traffic, so I thought I’d start to post about it here.

Keeping the code open as I develop this, if anybody is interested in poking around, or familiarizing themselves with tech that might be relevant to future goontubes.

The work thus far has included a lot of plumbing to allow the basics to be possible, building the network server and implementing telnet protocol/basic gameplay loop stuff/CRUD stuff serializing info to a MySQL store/embedding and integrating a JavaScript scripting engine.

There is presently a core game where you can register/save/load player accounts with object inventories, combat is possible (and all scripted, so the combat engine can be swapped out without restarting the game server), learn and cast/use scripted skills/spells. We have a maze generator and we have a “dungeon generator” that connects multiple maze floors by their most circuitous paths.

I’m aiming to next create an ANSI map wilderness space that connects multiple “dungeons” together, along with a town/town square or safe “hub” area where autogenerated quests will give players a reason to go out in the first place.

The next steps will include a bit more thinking about gameplay mechanics and if it’s actually converging on a good game, text or not. I’m not looking to create something with endless runaway scope creep I can never finish, so a bounded experience with about 50 “levels” and a limited number of player classes/races/skills/spells is a good start. I’m going to keep it to fairly cookie-cutter medieval fantasy stuff for the time being.

We could expand on this later as a community project if anybody is interested in doing some world-building or making this an “us” thing, and this would be the thread for it.

Anyways, I’ll be following up with updates and hopefully later this week some details on how to connect to a persistent instance I’ll host.

3 Likes

Playing MUDs in the late 90s is how I learned how to type quickly, this is awesome

2 Likes

Small update but I worked this evening on completing groups/player parties, experience sharing on kill, and automatically joining a fight if members of your group are attacked.

1 Like

Already forked this and will maybe contribute after I get out of the nuthouse. Amongst all my future projects (like trying to v2p install gentoo and continuing to experiment with AGI) I will have to add learning go and refreshing my javascript skills.

1 Like

Hope you are doing alright Benikis, really excited that you want to join in and learn some Go. When you are able to check this out properly, the “roadmap” in the docs directory is what I’ll be keeping to. Right now my immediate goal is to just host an instance you can connect to and say hi or see the updates that I will continue to post here. Anticipating this over the weekend.

With the disclaimer that this is work in a literally incomplete state - do not expect to be joining a playable game for now - I have set up an instance this weekend that I’ll be keeping persistently online and up-to-date with the codebase, so that it’s possible to at least join and see something, or say hello in the game world.

Host: mud.jskarzin.org
Port: 4000

edit: CatPetter and Tnega were both able to help me to fix a couple of bugs already, a productive first day of running this thing outside of my local.

1 Like

I made a substantial update before bed and it required a DB wipe. Full hot-reloadable scripting support for objects and rooms, with a clear path for mobs too :toot:

e: tested with a red button in-game that when I press it, posts an HTTP POST request behind the scenes to “make it rain” in goontube :v:

Tnega put a trigger on and did a slime genocide for a day and a half, which made me realize I needed to make a little tweak today:

groupings

Where objects are listed, identical descriptions are now grouped and counted.