Skip to main content
GameDev.net gamedev.net
🔒 Locked

I want to make an mmo with C#

Started by DaveGiant Jan 26, 2008 at 12:07 PM 8 replies 7.5k views
Original Post
DaveGiant
DaveGiant
As the title indicates I would like to develop an mmo in C#. I intend to create a version 1 which looks somewhat like this. http://images.endless-online.com/Screens/screen29.jpg As you can see it is a 2d lightweight application. The main difference between this and what I want to create is that I want freedom of movement instead of a tile based movement system. The reason for this is later on in the development I would like to create a 3d client to run along side the 2d client. So... where do I start? I have a lot of php knowledge and am currently learning C#. I have been told about XNA. Is this a viable option for such a project? If not could someone point in the direction of some good tutorials/books/resources that I could use to get this thing off the ground. Thanks Dave
Imgelling
Imgelling
XNA would get your graphics up and going pretty quickly since you said you wanted to start 2D. But the actual networking in XNA is Windows/XBox LIVE based. There have been many of threads on the XNA website about MMOs and getting passed the 32 player limit (and other limits) in it. As it seems, Microsoft's stance seems to be MMO networking is not a something that is important for them right now. You could look into Lidgren's C# networking library to use, seems good. Also remember, C# executables can be de-compiled VERY easily and leaves your client apps open to hacking.

As for other informative info, you could look around the net for MUDs. They are basically text based online rpgs. I personally would start there as its basically a simplified MMO.

There are some Visual Basic open-source MMO engines out there. If you know Visual Basic it could help you understand what your up against.

So basically, just google for:
"MUD" - (text based simplified, but not simple, MMO type games)
"tinymud" - (skeleton code for a MUD, its in C or C++ but it can help)
"VBGore" - (open source VB MMO engine)
"lidgren c#" - (C# networking library, free)
"C# mmorpg" - (worth a shot)

Hope I helped and good luck on your journey.

my blog contains ramblings and what I am up to programming wise.
Erkokite
Erkokite
Make pong first. Then try making a (very) simple 2-D tile based RPG. Then try to extend that to free movement. You also probably want to make sure you understand how to structure your data types efficiently. And how to optimize your game loop so your code is clean and efficient. Then you should probably learn about the networking models that MMO games use. Then after a few years of all this, you can try to make an mmo.

I believe that there was at one time, software to aid in the creation of mmo games w/o the need for coding, but if you want something done right, and you want to actually learn anything, you should do it yourself.

Sorry, but all the time people ask this question. The answer that is always the same. Make pong first. Start simple. You won't be able to start with a complex project.

I'm not trying to discourage you. Start simple, and keep at it, and eventually you will get there, but it is not something you can do overnight.
Justin Rebuilt
Justin Rebuilt
As has already been said, you need to start small. Without any prior knowledge to C# and the game development method in particular, there's no way you're going to successfully create what you want. You'll only end up discouraged and annoyed if you start with something huge (MMO).

Make pong, chess, checkers and any other simple board / action / puzzle games you can think of in order to get a hang of what game development requires.
DaveGiant
DaveGiant
Thanks for the help guys.

Couple of new questions then.

1) Can anyone recommend a good 'pong development with C#' tutorial? The reason I ask instead of googling is that I would like to learn the right way as opposed to getting into bad habits early.

2) Above someone has mentioned that C# is easy to de-compile. How big of an issue is this? Ultimately I will want to protect my source code. Is there software about that can protect C# compiled programs from this?
Antheus
Antheus
Quote:
Original post by DaveGiant
2) Above someone has mentioned that C# is easy to de-compile. How big of an issue is this? Ultimately I will want to protect my source code. Is there software about that can protect C# compiled programs from this?


This is something you definitely don't need to worry about yet.
darookie
darookie
Quote:
Original post by DaveGiant
1) Can anyone recommend a good 'pong development with C#' tutorial? The reason I ask instead of googling is that I would like to learn the right way as opposed to getting into bad habits early.

Trying to learn from internet (game-) programming tutorials is a bad habit already so don't start doing that. I also partially agree on the opinion not to read source code.

Read the documentation instead. Get familiar with your tools (e.g. IDE/compiler) first and write your typical "Hello World" stuff to get a feel for the language.

Tutorials often present only one way to accomplish a goal and beginners tend to think that it is the way to do this. Not only are tutorials often badly written, they also fail to mention other valid options and mostly don't discuss the pros and cons (e.g. why is it done this way).

A good way of starting Pong (or any program for that matter) is to gather a list of requirements, sort them by priority and then start finding out how to implement them.

Here's a sample(!) list for Pong:

  • Show a game window

  • Draw player paddle

  • Draw opponent paddle

  • Draw ball

  • Draw playing field

  • Let the player control a paddle

  • Make the ball move

  • Make the ball reflect from walls and paddles

  • Count score if ball misses the paddle

  • Draw score

  • Make the AI move the opponent paddle


It makes sense to implement the first item first. I leave ordering the rest of the list to you [wink]. Also, there's no need to stop there. Once you've got single player Pong, try adding effects like sounds, background music and selectable difficulty levels. Next polish the whole thing by adding menu and settings screens or a highscore list. You can also incorporate all kinds of gimmicks like tokens that you can collect using the paddle to freeze the opponent, make the ball invisible or start multiball mode [smile]. Possibilities are endless...

Finally take the game and add network multiplayer mode, etc.

Good luck!
Pat

DaveGiant
DaveGiant
Thanks for the that Pat, the break down will really come in handy. I plan to get my hands on a c# game development book. My experience is with php, while C# isn't that far apart from php I don't have a clue about user interaction or game engines. Hopefully this book will shed some light on these topics.
darookie
darookie
I'd suggest you not baying a C# game programming book. Most of these books are poorly written and feature really bad code examples. Instead, get your information about general UI interaction and event handling for free from MSDN. Buying a language-specific (or worse, language and genre specific) game programming book in my experience is a waste of money and time.

Glad I could help you out a little,
Pat
Justin Rebuilt
Justin Rebuilt
Quote:
Original post by darookie
I'd suggest you not baying a C# game programming book. Most of these books are poorly written and feature really bad code examples. Instead, get your information about general UI interaction and event handling for free from MSDN. Buying a language-specific (or worse, language and genre specific) game programming book in my experience is a waste of money and time.

Glad I could help you out a little,
Pat


Check out books from libraries if you're disappointed with your money. At least then you don't have to worry about spending anything.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.