After reading over people's suggestions, and looking at the various API's I've come to decisions regarding my attempt at a MiniMORPG. Given that it is (sorta) geared towards beginners (or at least those who's skills are as narrowly focused as mine) I want to use a language which comes with as much value added as possible. This means simple constructs, a large support library, and a familiarity with existing languages which will make it fairly easy for existing programmers of other languages to pick up.
For this reason, I will be attempting to create an MMORPG using C#.
As for libraries...Well, one thing appears to be true of all MMO's. The technology used must be bleeding edge. As well, the hardware and software requirements to develop tomorrow's MMO, must be at least on par with the MMO's of today. That means 1-2 GB of RAM, a Geforce 7600+ (Shader 3.0), etc...
For this reason, I will be using XNA for the Graphics, Input, and Audio systems of the MMO.
Microsoft has put all of their money behind XNA, in hopes of making it the next big thing. In fact, if you go to http://msdn.microsoft.com/directx it now automatically redirects you to the XNA website, clearly showing Microsoft's business strategy. Finally, for those that feel the desire to do so, my little MMO can be modified to make it runnable on the XBox360 game console. This alone, appeals to many.
As for operating system and UI technology. Well, I'm running WinXP SP2 on my machine, however with the recent release of Vista, I can, as a developer, assume that by the time my MMO is finished (most commercial MMO's take 3-5 years), in a year or so that Vista will be the predominant OS, as it is already OEM on most new computers.
For this reason, I will develop the MMO using a combination of .NET 2.0 for the XNA Game Components, and .NET 3.0 for the WPF components whenever I need a windows interface. As you'll see later, this will happen more frequently than one might assume.
As for the file structure. There is always a tough decision when determining whether to use saved files, etc...or to use a database. There are benefits to both, and the tradeoffs are many. However, given that we want this little program to be scalable to user preferences, I'm opting to go with a database. Since we're using C#, and everything so far is express, Microsoft's SQL Server 2005 Express seems the most likely candidate. Also, I've got no real Database experience, so this should be a good learning experience. (Learning is often a painful process)
And finally...2D or 3D. The answer to that for me is simple. 2D hasn't appealed to me since the days of Ultima Online. And, well, this is supposed to be a microcosm of what developers out there must go through when building their MMO's...and very few commercial MMO's are in 2D now. So 3D it is! For the purpose of making my 3D models, I'll use the freely available Blender Modeling program. Even though I've got no experience with it, and very limited modeling skills. But hey, what's success without a challenge, right?
Ok, so here's what the numbers look like.
IDE: XNA Game Studio / Visual C# 2005 Express
Framework: .NET 2.0/3.0
Database: Microsoft SQL Server 2005 Express
3rd Party Modeler: Blender
To all those people who are disappointed I didn't use Library X or support Operating System Y. I apologize. The truth of the matter is that at least the client for all major MMO's must run on Windows XP/Vista. And I wanted to limit the complexity of the project by requiring only a single operating system/machine.
So I opted to put the server on windows as well. Once I made that decision, the rest kind of fell into place. As I do this little project, feel free to make ports to whatever operating system and/or framework you like. What's important are the concepts. The Language, Framework, and IDE are merely bootstraps which are designed to speed development. Although it may require a bit more code, it should be feasible to do at least as well as I manage to do, using whatever libraries and OS's you decide.
I'll be posting randomly as I'm currently in travel. I'll try and post soon with the design goals of the MMO.