49 comments

[ 2.1 ms ] story [ 107 ms ] thread
Holy crap. Now there's a name I haven't heard in a long, long time.

To give some perspective, the last public release of DikuMUD was in 1991.

Weirdly, my initial thought there was "that's only 9 years ago", and then did a quick double take when I realised that it wasn't.
it's nice to see so much of the original DikuMUD surviving this far into version 3, but don't understand why raw html is being generated instead of something to be parsed on the client given that the client is a web browser using web sockets.

as an aside, I have a nicely working copy of sillymud hanging out in my GitHub, and local copies of phoenix (the successor to sillymud), and epic (another highly customized mud that ran off of goldman.ai.mit.edu).

Some years ago I wrote a really simple MUD in Scheme[0] and that's what I did. It was essentially a REST-like API that returned JSON objects. Commands went through a hierarchial routing structure. Connecting via SSH or the browser just had different ways of "printing" the structured data.

[0] Can't remember if this was before or after PLT Scheme got renamed to Racket, but it was around that time. It turned out to be a great language for it. Wish I had done more with it.

> ...don't understand why raw html is being generated instead of something to be parsed on the client given that the client is a web browser using web sockets.

Looking at the repository, the impression I get is that this codebase had a web interface grafted onto it relatively recently. Most of the code looks like it was written with the expectation that it'd be used over a line-mode interface. (A lot of it also looks like it was converted from C to C++ very late in the development process -- outside of the WebSockets library, there's hardly any code which uses even basic STL features like string or vector.)

> Looking at the repository, the impression I get is that this codebase had a web interface grafted onto it relatively recently. Most of the code looks like it was written with the expectation that it'd be used over a line-mode interface.

yes, if you know the history of muds, and diku specifically, you would know that, but where those changes were made it could more easily have been changed to respond either as text, and styled in the browser without adding all of the html elements, or as json. it was a very weird decision to be made given its history and the new goals of the project.

Interesting. When I dealt with the problem of wanting to give people access to my MU* through a web-browser, I worked around the problem by building an ANSI-aware bridge between the existing MU* and the browser.

https://gitlab.com/hlieberman/webmu

DuckClient/Wedgetail also exists for this purpose.
Check out Iron Realms' MUD client. Nobody else's web client comes even close, I think.

https://nexus.ironrealms.com/Main_Page

https://writtenrealms.com/ client is pretty nice.
That looks interesting - is this a mud client of custom browser-based game?
This client is what I think of in my minds eye for a modern day MUD that still stays true to what a MUD is but has an accessible interface. Whoever designed the UI did a nice job.
This brings me back. I wasted so much time on MUDs when I was young. I had the best TinyFugue scripting when everyone else was dragging with zMUD.
MUSHclient represent! I spent so much time on Realms of Despair, it's basically where I learned to program.

Being text-based, MUDs were basically made for scripting. I have very fond memories of that entire world and its people.

Downloading and trying to figure out the code for DikuMUD-based distributions is what drove me to learn C as a kid.
Same here! I remember making my own port of DikuMUD because I wanted to start my own community but quickly learned how daunting the writing workload is and I sadly never finished my beginning city but it felt magical to have a friend from AlterAeon join me and enter this world I had built. It was all so accessible if you could just put in the time to world build.
Ditto! Digging through Diku and the derivative Smaug codebase was my gateway to programming and I am forever thankful that such software existed and was available for a young teenager to dive into.
Me too. Learnt a lot about Unix, c, networking and compilers getting it working in 1992.
I still sometimes log in to a MUD, Diku as well! Fond memories of roleplaying and PK.
I still relish my time as a darkside member.
(comment deleted)
I am thankful to Diku and it's derivatives for many important lessons in life. The situation when a mob kills you, takes your exp and all your equipment and you are faced with dire reality of starting all over again from nothing - is the one that we are facing in life ever so often. MUDs have taught me to persevere, focus on what is important and keep going. I am thankful for every friend I met via MUD and every friend I will make. As a matter of a fact I am in the middle of MUD renaissance right now - rebuilding the MUD I created in 1995 and playing it with a handful of buddies - all of us now in our forties and we are having the time of our lives chasing down mobs and magic items (and of course playing only after the kids go to sleep). On top of that I get to code in C again. Life is good. Wish the best of luck to DikuMUD 3.
Luckily I've yet to face mob kills me and takes all I got in real life ;) But then I used to play MUDs at some point in the 90's so maybe that's because of the lessons I learned there!
When a bug or a mistake wipes irremediably many days of work, you need that kind of perseverance.
C++ is the worst possible choice for something like this.

I tried compiling it and got flooded with screens full of incomprehensible errors of the sort:

    /usr/include/c++/v1/type_traits:1547:38: error: implicit instantiation of undefined
      template 'std::__1::owner_less<boost::weak_ptr<void> >'
    : public integral_constant<bool, __is_empty(_Tp)> {};
It's pretty much incomprehensible to me too (is it complaining about a missing definition of owner_less? Perhaps it requires some newer version of C++?).

But, arguing it's a bad choice because the errors are incomprehensible is only a valid argument if you know C++. Otherwise the argument could be had against most programming languages.

There are valid arguments why C++ shouldn't be used (I'm of the opinion it should never be used) but this particular problem isn't unique to C++.

> incomprehensible errors

Maybe incomprehensible if you don't know C++ or don't bother to read them or carve them entirely out of context (like you've done here). Every error tells you both where the error occurred, how the compiler got to that file location, and what the problem was. Literally what more do you want?

But, yeah, everything is incomprehensible if you don't comprehend it.

I'm glad I'm not the only one with this thought. Some errors (and languages) are easier to understand than others, but there is SO MUCH text and energy wasted on languages' level of "readability". Everything is hard to read until you learn to read it. I can't read Greek; there's even a saying about it, but that doesn't make it unreadable. (Credit to Rich Hickey for that, albeit paraphrased badly.)
I hardly think that an error such as this one points to a solution

../../build//vmc/vmc.o: In function `fix(char)': /home/user/DikuMUD3/vme/src/vmc/vmc.cpp:254: undefined reference to `init_lex(char)'

I don't have a lot of experience with C++ and even I know that the most likely cause of that error is not having the linker configured correctly. It's probably something simple like a common library not being linked in.
> I hardly think that an error such as this one points to a solution

It sounds like you don't program in C++ then. "undefined reference" is quite explicit.

What should they have chosen then? I think there wasn't much to choose from back then: either C or Lisp (or maybe Erlang).
Is DikuMUD by any chance affiliated with the Department of Computer Science at Uni of Copenhagen (Datalogisk Institut Københavns Universitet)? FWIW that’s where Peter Naur did most of his work on formal grammars.
Yes. The original authors of DikuMUD were all students at DIKU when they wrote it.
I got my start on a DikuMUD running from the pulmonary labs at UBC (AoD, if you're still out there, thank you). I was still a high school student at the time, but fortunately there was an unprotected dialup (604-822-2222) into the NIM system, from which you simply typed in the IP address of the machine you wanted to connect to.

This was my gateway into serious programming. I'd already learned some C, but the idea of a networked multiplayer RPG really stoked my interest in network programming as I tried to write my own MUD from scratch, and it's because of this that I chose BCIT to study in the datacomm program.

DikuMUD is _the_ influential mud code base. So many derivatives came from it - including my favorite, CircleMUD. There were also rumors that Everquest was directly inspired (and perhaps even some code lifted!) from DikuMUD. Millions of hours of gameplay across MUDs and MMORPGs owes its life to this C codebase built by a handful of university students in Denmark.
Fond memories of playing my warrior and cleric at the same time using a program called tintin++. An early form of multiboxing only with unix shells instead. The server was Apocalypse which appears to still be running.
Tintin was amazing. I kept a copy on a zip disk so I could use it in the computer labs at college.
This is extremely cool. I cut my teeth on C by writing code for a DikuMUD derivative, SMAUG, and used it to learn a whole lot: socket programming, parsing files, basic interpreter scripting languages.
used to play MUDs back in junior high / high school. DartMUD, Seventh Circle MUD, along with a few others (I think there was a Dragonball Z MUD at some point that I played, too).

Never played DikuMUD, but I honestly miss those days playing DartMUD for hours on end. I looked up DartMUD a while back, but it doesn't appear to be very active, if it is even online anymore.

Just tried getting on DartMUD. Their character registration process is so hostile with their requirements (no free email providers???)

Yup. DartMUD will remain squarely in my memory, and I won't bother trying to play it now.

Seventh Circle! That was my home for most of college.
This can be hosted online right ?