Top Mud Sites Forum Return to TopMudSites.com
Go Back   Top Mud Sites Forum > Mud Development and Administration > MUD Coding
Click here to Register

Reply
 
Thread Tools
Old 09-19-2008, 05:22 PM   #1
Pipboy
New Member
 
Join Date: Sep 2008
Posts: 2
Pipboy is on a distinguished road
born-again techie looking to MUD

Yeah, another “I wanna build a MUD” thread, or not.

I'm not looking for an easy hookup to crank out a MUD by next week. I plan to start by actually learning programming. Well, relearning, as I used to do a little programming in C about 10 years ago. I've done virtually nothing with computers since, but I'm sure it's like riding a bike...you never forget how to fall off, right?

I have a variety of motives for wanting to develop a MUD:

1. Most MUDs are medieval fantasy (not my thing), and the few contemporary/near-future MUDs out there just don't do it for me. The only one I've seen that's even piqued my interest is Awakened Worlds. Not that the others are bad, but they aren't what I'm looking for.

2. I have my own idea for a setting/system/game, and I'd like to see it happen. While I'm not so naive as to think it's going to be the "most awesomest MUD ever", I'd like to think it will be something fun and a little different.

3. I'm currently on a work assignment in the middle of nowhere, probably for the next couple of years. My next assignment will most likely be just as bad. If I don't find something to do with myself, I'll probably lose my mind.

4. I'm aware that MUD design will likely drive me just as crazy, but at least then it will be on my own terms.

5. I'm already an insomniac; I might as well do something constructive with it.

There are a few things that I want to be able to do that I haven't seen in any other MUDs. I'm not sure if these things aren't possible, designers just haven't done them, or I just haven't seen it. I'm trying to conceptualize these elements not as a “it would r0x0rs to have laser beams coming out of my eyes”, but whether it is possible to get a computer to do these things considering the limitations of a programming language and the MUD as a construct. Obviously, I'm not looking for an explanation of how to do these things right now. I merely want to know if (down the line) they're reasonably possible and/or if how I'm thinking about these things is how I should be thinking about them.

Space within space

One thing I want to do is kind of a “rooms within rooms” effect. It will be a cyberpunk setting in a not-so-distant future city surrounded by a wasteland. So, if we split the region into “sectors”, each one of those sectors is a chunk of wasteland. One of these sectors would be the city itself. The city is further divided into (city) blocks. On these city blocks are structures (buildings), which will contain multiple rooms. So, there's kind of a fractal spatial effect (at least within the city). If you're in a room in a building, you're also on a city block, in a sector on the map. But one can be on a block without being in a “room”, or in a sector without being within a city.

I'm sure this is a cumbersome endeavor, but there are certain system elements that will rely on this distinction (movement/travel, communication, etc.). For example, PCs will have a communication device that will let them communicate while working a job, but the range will be limited.

Time after time

That probably won't make sense, but you gotta love a Cindi Lauper reference. Anyway, I have an idea as to how I want to handle the passage of time, but it may not be doable.

First, there's overland travel. Within interior structures, I don't mind PCs being able to zip from room to room. It's a matter of seconds and not important. For exterior travel, it's a different situation. Essentially, I want there to be a “lag”, so to speak, when traveling between city blocks or wasteland sectors. Nothing too long, but enough where it can matter on certain jobs where time is an issue. Where I see the potential complication is in where the PC “exists” during a transitional moment, and most importantly what s/he can do during a transition (and how that might affect the transition). So, a PC could take out an item or drop something without interrupting the transition, but if s/he decides to get into a fight, that would/should cancel the move.

And this brings us to fighting. I've thought about how I'd want to handle combat. When a fight starts, all combatants will be entered into a queue based on their initiative. Actions they take will have a simulated time value which will determine when they can act again. In short, time mechanics will be a little Final Fantasy-ish. In a sense, PCs in combat will be in two “places” at once...the actual (virtual) geographic location and within this constructed combat space. But this brings me to my next topic.

Being in two places at once

It isn't just with combat that PCs will have to be in two places at once. The VR/hacking element will function similarly. A PC hacker will be in such-and-such room in such-and-such building (in a virtual physical sense), but will also be on the net (in a virtual sensory sense). Even though a PC will be in a room with exits to other rooms, a PC on the net is essentially rooted to that spot. Not only that, but s/he will be too engrossed in the virtual environment to be able to interact in his/her physical environment. So, when I think about a MUD, I see objects and I see spaces. One object, one space, no problem. With these situations it's like there is one object in multiple spaces with varying capacities. It sounds like the kind of thing that would give a computer an aneurysm. I might have had one just thinking about it.

The room is moving

I'm still trying to conceptualize how I would handle vehicles (esp. with multiple passengers). The only thing I can think of is to treat them like “rooms” that can move. Keep in mind that vehicles would also be affected by transitions like PCs traveling on foot. However, maneuvering a car is going to be different than “maneuvering” one's body.

The way I'm thinking about how I would go about these things could be totally off the mark. I just want to know at this point if what I'm conceptualizing is beyond what a MUD can do.

Anyway, I'm assuming that the first step is to relearn C, though maybe I should be learning C++ instead? Also, I read some guides on the web, and some of them suggest learning Java (which I really know nothing about) rather than C or C++. Other guides I've read suggest spending time as a builder on other MUDs to help you develop your chops. I know I'm nowhere near that point, but if I can figure out how to get that far, that probably means I'm doing something right, no?

So, can anyone point me in the right direction? Thanks.
Pipboy is offline   Reply With Quote
Old 09-19-2008, 09:19 PM   #2
Ide
Senior Member
 
Join Date: Feb 2006
Location: Seattle
Posts: 361
Ide will become famous soon enoughIde will become famous soon enough
Re: born-again techie looking to MUD

Everything you describe is well within the capabilities of any programming language and has been done on a mud before. However I'm going to make a suggestion you may not want to hear, which is that a mud is probably too big of a first project for you. If you just want to tinker on system design and prototypes, fine, but if you want to make a game that other people will play I suggest doing something single-player first, or make a mud with a much narrower scope. Otherwise you'll probably just get frustrated and quit.

As far as programming languages go I wouldn't go by any hard and fast rule about which language to learn first. Instead try a few and see what you're the most comfortable with. You might want to try C, C++, Java, Python and Ruby to start.

If you really want to develop a mud from the code end I don't think building areas for other muds is the best idea, unless you want a side project to turn to when you're tired of working on the mud project.

Good luck.


eta: and oh yeah, if you want a small first project, here's one -- research and make a list of 20 notable muds and play each of them for a few hours.
Ide is offline   Reply With Quote
Old 09-19-2008, 09:46 PM   #3
Mabus
Member
 
Join Date: Jan 2006
Posts: 213
Mabus is on a distinguished road
Re: born-again techie looking to MUD

I feel you!

I want to say that my responses are just "off the top of my head" opinions, and not the only, or even best, options.

With that out of the way:

One solution:
Make each a separate area, and the parent of the area below it. The city would be an area, containing the blocks which would contain the buildings.

This would allow control of what affects each in an amazingly simple way.
The classic "PlayerA moves south/PlayerB closes door south/Dragon breathes - all at the same time" problem. Single threading and queues.

Some fantasy games have "astral travel" spells that allow (constructed to appear so) a player to leave the character's body behind and travel in a spirit form.

This leaves the old session-controlled MOB (let's call it OM, old MOB, for simplicity) item of the character where it starts the skill, and places the session within a secondary MOB (the spirit, NM, new MOB). Echoes from the room of the OM are sent to the session, with appropriate messaging ("In the room:" or such, in your case) and regular messaging would happen to the NM.

The vehicle is a room with a portal (RP, for room portal). The moving part is an exit object (MP, for moving portal). The MP moves through the other rooms, and switches the exit target of the RP each time it moves.

I had a builder ask for "a floating reed island that randomly wanders, based on wind", which I coded recently, that uses the same principle. You can sail a boat, fly or swim to this portal, and end up on the island. You can then leave the item from the shore and end up in the same room with "a reed island" in its journey through the large body of water. I plan on using the code for ships, tents and several other future projects.
Most already exists, but not in exactly the form you are stating. Entirely doable.

I would recommend (I can hear the howls and protests already...) C++ or Java. Either (or other OO with inheritance language) should work fine.

Could find a codebase that handles most of the "chores" for you, strip it down (code-wise) and then code in your features. If you go Java, then could work out.

If you are not familiar with coding it could take some time. You might want to get all of your ideas down on paper before you "learn" what is "possible", so that when you are able to code the game you envision you will remember that exactly why you started.

I wish you the best of luck.
Mabus is offline   Reply With Quote
Old 09-19-2008, 11:45 PM   #4
Pipboy
New Member
 
Join Date: Sep 2008
Posts: 2
Pipboy is on a distinguished road
Re: born-again techie looking to MUD

Oh, I totally agree. In fact, this isn't even the first MUD I want to do. I have a much simpler MUD that I would do first (which I could build off a code base), and even before that I would experiment with some smaller single-player games (that I could turn into little mini-games for the cyberpunk MUD that I would eventually make).

I'm not even presumptuous enough to think that this MUD would be the first thing I make; this is just where I want to end up. Right now, I'm trying to figure out the best way to get there.

I was wondering about this. Learning one programming language is no problem, but learning 5 seems pretty intimidating (especially since I've never even heard of two of them).

Yeah, I already did that. I'd get bored of medieval MUDs about a half-hour into it. Part of the problem is that everything seems like a clone of each other. The same 20+ races Itoo many in my opinion), the same kind of back story, the same skill sets....etc. What would be really cool is if I could find something contemporary and a little less "fantasy". Cyberpunk would be cool, too. But I just haven't found much of that out there.

On that note, what is the MUD player base like nowadays? With the MUDs I've played, I haven't exactly seen many, if any, other people playing at the same time. Is the scene pretty much dead except for a few dedicated hobbyists?

I don't think I know what any of those acronyms mean.

What do people have against C++ or Java?
Pipboy is offline   Reply With Quote
Old 09-20-2008, 12:06 AM   #5
Mabus
Member
 
Join Date: Jan 2006
Posts: 213
Mabus is on a distinguished road
Re: born-again techie looking to MUD

MOB - Mobile object, usually refers to move-able NPC's (non-player characters, the monsters), but can also refer to the player-object (avatar, the thing you control when playing, and even other players). Some codebases have separate code that defines NPC MOBs and PC (player character) MOBs. Some share code between the two.

Exit - A method of moving between rooms.

Portal - A non-standard exit. Where a standard exit would be a direction (N, S, E, W, etc.) a portal could be "path", "a path", "a hole" or any infinite number of things (in your case, and from my example, as a vehicle the movable portal could be named "an old jeep", or any other vehicle name).

Session - Each time you connect to the game server certain information is used by the server to receive input (commands and such) from the player and to send data (usually messages) back to the player's client.

The rest were defined within the text of the post.
There are staunch defenders of C that often swoop in to attack anyone that proposes any other language. Don't mind me, just attempting to avoid arguments I have seen in decades past.
Mabus is offline   Reply With Quote
Reply


Thread Tools


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off

All times are GMT -4. The time now is 06:00 AM.


Powered by vBulletin® Version 3.6.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Style based on a design by Essilor
Copyright Top Mud Sites.com 2022