Page 1 of 1

Looking for information on CLOK's codebase and design

Posted: Fri Nov 28, 2014 4:38 pm
by Sadi
Continuing from chat:

I'm writing a paper on the history of MUDs and the evolution of MUD design, and after having played here for a while I think it'd be good to include CLOK in the design discussion. As such, I'm interested in learning more about the history of CLOK, with a specific focus on anything that inspired its world, lore, gameplay, and code design. Specific sources are best-- what I'd really like to be able to do is compare and contrast CLOK with the sources it draws from so that I can show what CLOK has improved on and how it has done so. Any and all help is welcome!

Re: Looking for information on CLOK's codebase and design

Posted: Fri Nov 28, 2014 7:19 pm
by Jaster
Rias said, "Let there be CLOK." And there was CLOK. And he saw that it was good.

Re: Looking for information on CLOK's codebase and design

Posted: Fri Nov 28, 2014 10:50 pm
by baerden
"If you want something done right, do it yourself."

Iirc.

Re: Looking for information on CLOK's codebase and design

Posted: Mon Dec 01, 2014 6:39 am
by Jirato
I haven't really responded with anything since I feel it's kinda Rias' decision to share this info or not. I will say that CLOK is a from-scratch project written in Python and utilizing the Twisted network application framework.

Re: Looking for information on CLOK's codebase and design

Posted: Tue Dec 02, 2014 9:25 am
by Rias
The idea to make a MUD came to me back around 2009ish I think, when I thought it might be fun to learn how to program. I had heard Python was relatively easy to learn and known for its easy readability, but mostly I was inspired by this webcomic: https://xkcd.com/353/

At the very beginning I thought I would make a simple text-based adventure game as a first step. It was a very simple single-player game set on a creepy massive spacecraft where something had gone horribly wrong and you had to figure out what had happened and try to fix it. You could move from room to room, get and drop items, and there were a few simple attack mechanics for the encounters you might have - you could attack, your weapon had a damage type, the enemies had defensive strengths and weaknesses, and it was a simple hit point system.

I still want to write up and finish that game sometime. I thought it was kind of a neat story.

Before I got too far on that little text adventure game, impatience set in and I wanted to jump right into working on a MUD. I wasn't about to reinvent the wheel and write my own network engine from scratch, so I searched around and found Twisted (https://twistedmatrix.com/trac/). I admittedly got (and still have) a mere basic unerstanding of how to get the thing to work - I wasn't interested in how all the network and communications worked, I just wanted that stepping stone in place so I could start working on my MUD. I programmed a super basic chat server/client using Twisted, goofed around on it with some friends for a while because it was just fun to have our own thing like that, and soon I combined it with my text-based game to set up a very simple "glorified chatroom" MUD.

As far as what inspired its overall UI and gameplay feel, that would be the MUD now called Gemstone IV (http://www.play.net/gs4/), which I had played for something like 13 or so years, and is the only other MUD I've seriously played. I loved (and still love) the game, but there were just little things here and there that bugged me about it (for instance: elves, and an overabundance of hand-wavy "let's not think about how or why this works" magic. Oh, and monthly subscription fees - let's not forget that).

I'm not really sure what inspired the world feel. As may be evidenced by the name, I wanted it to be set in an era with clockwork and steam technology - but not "steampunk". I was more than happy to be restricted by real-world historical limitations in the technology back in the day, I just enjoyed that kind of feel for the world. There was the idea of some rare cases of steamkpunkesque wonders, but they were to be rare and wondrous, rather than commonplace. Again, I can't recall any specific source that inspired this. The film Hugo (https://en.wikipedia.org/wiki/Hugo_%28film%29) likely contributed to it somewhat.

I'm also not really sure why I fell away from that "clockwork era" desire, or rather from its implementation. I still lament a little that (believable) clockwork technology isn't more present. I think part of it was that I simply don't really have a good understanding of the details and minutae of the technology, and I was worried about falling into just BSing things that wouldn't end up being believable, so I just sort of shied away from ever implementing anything specific to do with the stuff.

As for the lore and world feel, I'm sure all of it is subconsciously inspired or plagiarized from somewhere or other, but I like to think that a lot of it was born of my own creative invention. There's some very deep universe and metaphysics lore that the players will likely never know about, but know that it's all there - the world is quite thoroughly thought out. There are interesting stories behind all the major unique (or at least somewhat unique - is anything truly unique these days, with so many creative minds out there?) themes: The Immortals, the origins of mankind, how the Resen/Infested came to be, the lore and history behind the Canim, what Nether really is, the specific details of Thaumaturgy, and so on.

Obviousy most of the different races draw on real-world races and cultures for inspiration, though there are several intentional differences and combining of ideas from different real-world cultures that I thought would be neat to mix together, alter, and so on. Nuum is inspired somewhat by ancient Egypt, Ivial something of a mix of ancient Rome and Arthurian themes, Faewyr have a lot of Scandinavian influence, Tatlhuecan draws on ancient Mesoamerican cultures, Hillfolk are inspired by the early American frontier, and so on. Others I think are more unique, like the Rhuidim, Giganti, and Parrens. Knowing these things, I hope people don't make too many assumptions based on their real-world influences, as I do want them to be unique to CLOK and not completely analogous to their real-world inspirations (not the least of reasons being that I fully admit these are more based on popular stereotypes than reality).

Anyway, I'm rambling. I don't really have a lot of sources for you to compare/contrast with. Sorry! As I said, I only ever played one other MUD seriously (Gemstone), and most of CLOK comes from the shadowy recesses of my brain. This was also my first foray into coding, so I didn't really have anything in the way of inspiraiton there, either. Is there anything specific you wanted to know about?

Re: Looking for information on CLOK's codebase and design

Posted: Wed Dec 03, 2014 8:37 am
by qinweiqi
Huh, I always thought the Parrans were inspired by polynesian/micronesian cultures. They tend to be very relaxed.

Re: Looking for information on CLOK's codebase and design

Posted: Wed Dec 03, 2014 9:35 pm
by Sadi
Rias wrote:Anyway, I'm rambling. I don't really have a lot of sources for you to compare/contrast with. Sorry! As I said, I only ever played one other MUD seriously (Gemstone), and most of CLOK comes from the shadowy recesses of my brain. This was also my first foray into coding, so I didn't really have anything in the way of inspiraiton there, either. Is there anything specific you wanted to know about?
That's perfectly fine; thanks for taking the time to reply! The discussion of the steampunk/clockwork elements was particularly interesting to me; I saw Hugo as well, and it actually got me interested in clockwork myself. If you'd like any information on clockwork technology, just let me know and I'll see what I can pull together from my prior research on that.

As a CS student, I'd be interested in learning more about technical decisions you've made for the backend-- would you be willing to go into any more depth on the design philosophy or conventions that you followed in constructing the server? For the purposes of my paper, I'd be particularly interested in hearing about issues that constrained your design to the realities of the code (or constrained what you wanted to do with the code to the design)-- but I'd welcome any thoughts you'd like to share!