Hello. I have been aiming to create my own mmorpg game for more than a year and I haven't even mastered the basics because I have been busy with college. So, I have been wondering about what the things I would have to learn are.
What I would like to create is a 2D side scrolling mmorpg. There should be levels, NPCs that appear on certain kinds of actions.. Of course, I have to get some graphical input. So yeah, basically what I want is a large list of everything I have to do.
OOP (Object Oriented Programming) is definitely a big element in game programming.
OOP in C++ includes classes, structs, unions, inheritance, virtual and purely virtual functions, etc.
There are a couple of design patterns that would also be useful like the Factory/Abstract Factory pattern for generating NPCs/items. Or potentially the Observer/Listener pattern to trigger events.
There was also another pattern that I think was called the Chain of Responsibility, but I'm not sure about the name. It is good for organizing what handles events first to last.
Now, while you can use C++ for the core of the engine, you will need a 3rd party library for graphics, such as SDL or SFML (and I recommend you use a spritesheet instead of using the library to draw everything).
It makes sense that you need to be able to "do" (single player) 2D side scrolling game using what Daleth wrote in his post before jumping at MMORPG. Also, it's good to have several prorotypes of the game so you can refine your ideas and be clear about what exactly you want to achieve.
I don't know why you would go with a side-scrolling MMO, to each his own I guess, I never really got the maplestory thing...
My advice:
- Create a text based game (or have the skills needed to)
- Pick a graphics library to use. There are many, such as: Allegro, SDL, SFML, OpenGL, Cinder (more than just a graphics library). I use SDL and I quite like it. Spend time learning the library, how to draw images, keyboard input, mouse input, etc.
- Learn how to change sprite position and animation frame when a key is pressed (aka moving your character)
- Learn networking, I recently started this and it's not easy. You could use winsock for example, if you're using windows.
-(somewhat optional) Learn threading.
- Finally, what I consider the absolute hardest part about making any RPG, develop a good AI and combat system. It's best to leave this for last, I think.
In between all this, there are many MANY little things you will have to learn, and some bigger fundamental programming concepts you should learn that will make your life easier. Embrace OOP. Don't be afraid to copy from tutorials but at the same time make sure you understand what is happening in your program, and be able to modify anything if necessary.
Beyond that, you have to find someone who can draw well, buy some art online somewhere, or find some free art somewhere to use in your game.
I think sound effects are something that you could do yourself.
Currently I've been working on a pokemon-esque 2d MMORPG, and similar to you school has gotten in the way of me progressing. =[
I have a working prototype with everything except AI and networking, and I was extremely close to finishing the server/client code before the semester started. Hopefully I'll have that done soon.