How to Design a Text Based MMORPG?

First off, I'll apologize. I have been looking around on this forum for a long time for an answer to this question, and I have found some decent attempts to address it, but nothing is really what I was looking for. To make everything easier, I have decided to make a posting asking the exact questions I want.

Also, a bunch of the threads end up with people telling the asker to look at "the sticky", which of course is enormously helpful because it leads us right to the thread, right? Wrong. I finally found a link in one reply though, and was severely disappointed by the legendary sticky. Not even it answers what I am looking for.

After I find out what I want and finish my project I will try to write a better tutorial so that other people don't have to go digging through the piles of useless threads that I had to.

Anyways, here are my questions.

1. Some background information would be very helpful. Just to make sure everybody is on the same page, what is a MUD? What does it stand for? What is an example of a MUD you play or have played?

2. What are the very basic steps/requirements/parts in creating a MUD? As in, you need to have the overall design and concept charted out on paper before you begin any coding, or you need to have a group of people who know certain skills that you will need in creating game.

3. What languages are used for the actual coding? It seems like some sort of mix of HTML, PHP and SQL would work, but is there some language that just fits this type of thing perfectly, and if it is just those three languages I mentioned, how to sew them together for effecient and quick communication between them all.

4. What are the basic parts of a MUD? This sounds similar to my second question, but what I mean this time is in the actual gameplay. For example, there is a way to store all the accounts, store the stats of each account, a message system, a way to train your player, a PVP system, a way to create or join a clan/alliance, etc.

5. How do you go about getting a URL? Are there certain sites that you can buy a URL? What do you do if the URL you want is taken?

If anybody is still confused, here is a list of games of the type I am trying to create:

SpireGames Wrote:1. Some background information would be very helpful. Just to make sure everybody is on the same page, what is a MUD? What does it stand for? What is an example of a MUD you play or have played?

SpireGames Wrote:2. What are the very basic steps/requirements/parts in creating a MUD? As in, you need to have the overall design and concept charted out on paper before you begin any coding, or you need to have a group of people who know certain skills that you will need in creating game.

Unfortunately (or perhaps fortunately, since it's part of the fun), game development isn't nearly straightforward enough to define a set of steps or requirements that every project follows. You really just need to find a process that works for you and go with it, whether it's what other developers use or not.

SpireGames Wrote:3. What languages are used for the actual coding? It seems like some sort of mix of HTML, PHP and SQL would work, but is there some language that just fits this type of thing perfectly, and if it is just those three languages I mentioned, how to sew them together for effecient and quick communication between them all.

Again, this is a case of trying things out and finding what works best. It would be conceivable to write this in almost any programming language that exists today, as long as it's turing complete and has some sort of network capability. Some languages will lend themselves better to this than others, but among the likes of C, C++, Java, Ruby, Perl, Python, PHP, etc., it comes down to personal preference and the fine details of your project to know which is best suited for the task. Sorry I can't give you a more straightforward answer, but there simply isn't one. You'll probably just need to do some experimentation, put together some prototypes, and see how they perform and what problems you run into along the way.

SpireGames Wrote:4. What are the basic parts of a MUD? This sounds similar to my second question, but what I mean this time is in the actual gameplay. For example, there is a way to store all the accounts, store the stats of each account, a message system, a way to train your player, a PVP system, a way to create or join a clan/alliance, etc.

It might help to play someone else's MUD for a while to get a feel for what they're generally like.

SpireGames Wrote:5. How do you go about getting a URL? Are there certain sites that you can buy a URL?

Yes. You can go to a site like Network Solutions, GoDaddy, Dreamhost, etc. to register one. Some (most?) registrars are also hosts, so you can sign up for a hosting package at the same time so that you have a place to run your software on the web.

SpireGames Wrote:What do you do if the URL you want is taken?

Pick another name, try a different TLD, or wait for the domain owner's registration to expire (which won't happen if they're actively using and renewing it, but may happen if they're just squatting).

ThemsAllTook Wrote:Multi-User Dungeon. Wikipedia can tell you more, and is almost always an excellent first stop for questions like this: http://en.wikipedia.org/wiki/MUD

I checked out the Wiki on MUDs (Sorry, I usually do that first, it just slipped my mind this time...), and I think what I am working on is slightly different than a MUD, although correct me if I am wrong. If you try Cyber Nations (I provided a link in my first post), you will play a game much like the one I am planning to make. In order for you to better be able to answer my questions, I will tell you a bit about my final goal.

Basically, what I am creating is a nation building simulator. You (the player) will create and manage a nation, from building and maintaining infrastructure, to forging alliances with other nations, to building a fighting force and attacking other nations. I think, just from my small knowledge of programming and how this game will work, that the code will need a huge amount of databasing to store all the information necessary.

ThemsAllTook Wrote:Unfortunately (or perhaps fortunately, since it's part of the fun), game development isn't nearly straightforward enough to define a set of steps or requirements that every project follows. You really just need to find a process that works for you and go with it, whether it's what other developers use or not.

Just for the sake of me being able to learn, is there some sort of basic steps that you could break it down to, maybe even an example of how you would do it? Then I could just start there and see what parts of the process I liked and disliked and what I wanted to change, etc. I just want a concrete basis on where to start from somebody that has some experience in the matter.

ThemsAllTook Wrote:Again, this is a case of trying things out and finding what works best. It would be conceivable to write this in almost any programming language that exists today, as long as it's turing complete and has some sort of network capability. Some languages will lend themselves better to this than others, but among the likes of C, C++, Java, Ruby, Perl, Python, PHP, etc., it comes down to personal preference and the fine details of your project to know which is best suited for the task. Sorry I can't give you a more straightforward answer, but there simply isn't one. You'll probably just need to do some experimentation, put together some prototypes, and see how they perform and what problems you run into along the way.

Are there any programming languages you know off the top of your head that "lend themselves better to this"? Somebody told me they could do it in pascal, I don't really know much pascal, so I don't know if this would work. If anybody has done this before, and if there is a basic folder of source code you could send me that I could run in Firefox just to see conceptually how something like this was put together, that would be IMMENSELY helpful. If you don't have source code but know the basics of coding a project like this, if you could write some pseudo code explaining what basic parts I would need to have. I'm sure you have all had somebody ask you to make a game for them and then they will modify it and call it their own ("PLZ MAEK ME A GAME I WIL CHANG THE BACKGRUND COLOR THANK YU!"), and essentially I am asking for the same thing, but for an entirely different reason (to learn how, as opposed to changing the background color).

ThemsAllTook Wrote:It might help to play someone else's MUD for a while to get a feel for what they're generally like.

I have probably clocked over 1000 hours on MUDs (sad but true), I was just wondering if there was some standard for what parts it was broken down into that everybody accepted.

Also, this doesn't seem to be exactly the right forum to be asking this question in. If somebody could redirect me to a better forum for asking this question I would be much obliged.

SpireGames Wrote:I checked out the Wiki on MUDs (Sorry, I usually do that first, it just slipped my mind this time...), and I think what I am working on is slightly different than a MUD, although correct me if I am wrong. If you try Cyber Nations (I provided a link in my first post), you will play a game much like the one I am planning to make. In order for you to better be able to answer my questions, I will tell you a bit about my final goal.

That depends on how strict you are with the definition. Some MUDs are about fighting monsters, others are more social. Some, like LPMUD, are first about fighting and then (when you become a wizard) about building.

Quote:Basically, what I am creating is a nation building simulator. You (the player) will create and manage a nation, from building and maintaining infrastructure, to forging alliances with other nations, to building a fighting force and attacking other nations. I think, just from my small knowledge of programming and how this game will work, that the code will need a huge amount of databasing to store all the information necessary.

I thing that is a kind of MUD. A networked game, it is almost the same thing.

Quote:Just for the sake of me being able to learn, is there some sort of basic steps that you could break it down to, maybe even an example of how you would do it? Then I could just start there and see what parts of the process I liked and disliked and what I wanted to change, etc. I just want a concrete basis on where to start from somebody that has some experience in the matter.

I would start by identifying key components and making sure you can do them.
- Graphics. If it is text-based, skip this.
- GUI. Maybe you don't want to run from the command-line. But you can.
- Parsing messages.
and the biggest of all in your case
- Networking. Choose a networking model (like client-server), send data, solve synchronization issues, etc.
From there you go on deciding on data representations for the world

Quote:Are there any programming languages you know off the top of your head that "lend themselves better to this"? Somebody told me they could do it in pascal, I don't really know much pascal, so I don't know if this would work.

It certainly would. FPC is fast, portable and easy to write in, my favourite compiler. Personal preferences vary, but if you want a close-to-english language, that is one of them, a good and much overlooked solution. But note that it is a compiling language. That means fast, but also that it will not run inside a web browser or things like that. If you want a web browser solution, you need something else.

Quote:If anybody has done this before, and if there is a basic folder of source code you could send me that I could run in Firefox just to see conceptually how something like this was put together, that would be IMMENSELY helpful.

There are many code samples on the web and on our hard drives, but working from other people's source is in 9 times of 10 not helpful. It will not do what you need and it is usually poorly documented. Well documented code will help more, certainly, but what I like best is small, small demo snippets showing how to solve very specific problems. Working from them is much easier than breaking down an undocumented 100000 line solution of the wrong problem.