Advertisement

MMORPG - What should I learn?

Started by March 16, 2006 03:13 PM
14 comments, last by GameDev.net 18 years, 10 months ago
STOP! WAIT! DONT! I know you guys hate theese MMORPG threads, since I already read most of them. Though this one is different. I wont ask you to create a game for me, I wont ask how to create one, neither will I ask for any onlineservices where I can create one and I wont ask for any source code.... Since most of the people gets an answer like "learn programming" Ill put some backgroun info to this... At age 9 I started to use HTML and when I was 10 I put my first site up (with frames and stuff, quit goodlooking :P) and had enough skills in HTML to create a website for my fathers buisness. The teachers at school let me use regular school time to create some sample sites to show other people (which I did mostly for bragingrights but they thought it was a good idea to give the others some kind of inspiration). At 11 I started to create sites using DHTML and at 12 I pretty much knew all what JavaScpript was about (Creating my own games and functions at sites). Later on I started to program in delphi and at age of 13 I created sites in my own html-editor, though I discovered DreamWeaver at this point. Got sick of both html-editing and DreamWeaver so I started to read some C++ which I gave up pretty fast. When I were 14 I started to study PHP, but let that go since I got in contact with ASP, then I couldn´t decide which language I would use so my projects didnt get finished. At age 15 I dropped out of school and got myself a job, bought me some books about PHP and started to use that again, once again I got in some sort of conflict between PHP and ASP and stopped that pretty fast. Now Im 17 and been studying a little visual basic which I gave up and recently Ive been reading C++ trying to really ge ta hang of it. So, considering that, I recently found out that maybee I should try some serious programming, and Im considering some kind of MMORPG as a project, since it contains a lot of programming, and in many different areas. Now I need som advice in what books to read. Since books are pretty expensive and I am going to read many of them. So far I know I need to study areas like, advanced c++, networking and animating. So what am I asking for? Good books which will teach me what I need to know. What areas I should study (So I dont miss out on anything) Also Id like some advice on what software I should use since I only used freeware so far, and the "real" programms costs between 50 and 5000$. I know a project like this takes time and probably Is impossible to do by myself, but It would be good practice and just creating an alpha-version might be enough for me (so I maybee can show it up to some gamecreating company and get a job, painting busses really aint fun) Best regars
Unfortunately, writing games (ignoring MMOXXX) requires skills in pretty much all areas of programming. In addition to knowing your programming language inside out, you will need to have learn how to do several other things (some programming related, some not), including Design, Scheduling, Graphics (2d is easier, less math), Data Management, Networking, Scripting, etc, etc..

The choice of programming language doesn't really matter. I would suggest C++ if you are looking for a free compiler, but other people will have other opinions.

I would highly suggest that you start writing smaller games, and leave MMOs till later (much later), when you have a large team behind you. However, If you have an un-dying urge to make an MMO go for something simple. I remember the first MMO that I ever played years ago, The Realm would probably be a good model to start building off.

Books.. life blood.. Books are a great source of information, you will usually get a detailed opinion of one person (who has actually been there), on what needs to be done. For a beginner type book, I would recommend Programming Role Playing Games 2nd Ed by Jim Adams. If you feel you are more advanced try Game Coding Complete by Mike McShaffry. I have both of these books on my shelf, they are both easy to read, and help build your knowledge on the whole process.
Advertisement
Well, that is pretty much why Im thinking of going to start some kind of project like this, since Id feel like learning as much as possible, since it easier for me to sit down and struggle with stuff if I have some kind of goal.

As for graphics, 2d or 3d, the math is not a problem since Im pretty good at it (at age of 10, I did high school math, it has been my favourite subject in school because I find it easy). Though I guess 2D is easier in many ways and will probably do for a start.

C++ is what my mind is on and I already been doing quite some studying in it, so I pretty much got the basic-knowledge about that so far.

Maybee I expressed my self wrong... The game I have in mind will be a multiplayer game played over internet, small in the beginning. Of course Ill do other smaller projects before I start the actual programming, but as stated, a MMORPG of decent typ is my goal.

Ill check the game, and the books out, thanks for the reply.
Ok, so you have already chosen C++ as the language you will use? (Then we don't have to suggest other languages). If you want a serious MMORPG the first step is to really understand the language, by this I don't mean learn how pointers works. You need programming to be a second nature to you. Before becoming really good with C++ you will need to actually learn the language. I would suggest you to pick up a beginner C++ book, I'm not completely sure which one, but I have heard C++ Primer should be pretty good (not C++ Primer Plus). Then when you know most of the syntax in C++ (variables, functions, RTTI, inheritance, dynamic polymorphism, templates) etc. You will need some more advanced skills. I would recommend the following books (You might not need them all, also some can be replaced by others):

Good coding:
Effective C++, 3rd edition
More Effective C++
C++ Coding Standards: 101 Rules, Guidelines, and Best Practices (read this as one of the first books, it provides good advices you can use when reading other books)
Advanced C++ Programming styles and Idioms
Exceptional C++ style
Exceptional C++
More Exceptional C++
C++ Gotchas: Avoiding Common Problems in Coding and Design
Modern C++ Design

SC++L:
Effective STL
C++ Standard Library, The: A Tutorial and Reference (a very good idea to read this early on, and before the next book)
Standard C++ IOStreams and Locales: Advanced Programmer's Guide and Reference

Templates/Boost:
Beyond the C++ Standard Library: An Introduction to Boost (most of this can be learned from the Boost website)
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond(best programming book I have ever read)
C++ Templates: The Complete Guide
Boost Graph Library, The: User Guide and Reference Manual

Misc:
Secure coding in C and C++
Efficient C++: Performance Programming Techniques
C++ FAQs, 2nd Edition
The C++ standard

As you can see there is a lot to read on C++. You don't need to read that much before moving on to graphics programming, but before starting your MMORPG it might be a good idea to read most of it (well new books might be out by that time). When you feel like starting something different start reading books about graphics/windowing APIs, I would suggest you to learn SDL after having read a couple (yes I mean 2-3) of C++ books. Then when you have a good grasp of SDL you should start reading more C++ books, but now you can start to actually create graphical programs with what you learn. I don't think you should learn APIs like OpenGL and DirectX yet since they will take your focus away from learning C++. When you have read some more books I would suggest you to take up some books on graphics programming with a 3D API, the most important thing here is trying to understand the concepts (like pixels, framebuffer (frontbuffer), depth buffer, matrices, animation etc.). When you have a good grasp of both C++ and graphics you should start reading the stuff you feel like you don't know yet, stuff like networking, scripting languages, input (you will probably learn some of this when learning graphic APIs).

The most important thing is to through the whole period you should create projects. They can be small or big, but remember if you start creating a big project, then don't be afraid of starting over because you WILL learn new things, and figure out that your way to do something wasn't the best.

I really hope you will achieve your goal, it seems like you are on the right path. But remember when actually starting your MMORPG you most likely can't accomplish it alone (content generation is very hard for a MMORPG, if you feel like doing everything yourself you could look into procedural generation of content). If you want to do this to get a job a MMORPG might not be the best language.

I know it sounds like a lot of work, but when you first get started it start getting really interresting and before you know it you have read a lot of books and created a couple of projects.
Quote:
Original post by MrSpiceGirl
STOP! WAIT! DONT!

I know you guys hate theese MMORPG threads, since I already read most of them. Though this one is different.


What would be different is a MMORPG thread in which the poster suggests he uses a JIT language because he just wants to get his game done instead of spending the next three to five years studying descrete programming practices.
Quote:
Original post by Thevenin
Quote:
Original post by MrSpiceGirl
STOP! WAIT! DONT!

I know you guys hate theese MMORPG threads, since I already read most of them. Though this one is different.


What would be different is a MMORPG thread in which the poster suggests he uses a JIT language because he just wants to get his game done instead of spending the next three to five years studying descrete programming practices.


The difference is that Im willing to learn all the programming it takes, and I know its a lot, and if you read everything I wrote, you´d know that I dont "just want to get my game done", im also in it since I find it interesting and Id like to learn about pretty much all the areas. I also wrote that I have a MMORPG as goal since It makes my studying easier.

Most of the other threads is pretty much "Help me get my game done in 2 weeks so I can be a millionare, and yeah, I dont know anything about programming, and I dont want to learn, but it is possible right?" just because they got some thing going around in their heads since the latest exposure of PE....

CTar>> Thanks for the advice, I made a order containing 4 of thoose books and 2 others just 5 secs ago. Thinking that it might be good to read additional of the basic books incase the on I already read, the one Im reading, or if "c++ primer" might miss out on something. Otherwise, repeating is good....
Advertisement
Programming is like anything else, you learn as much (if not more) by doing than you do be reading.

I propose you do the following:

Pick a programming language. C++ is fine, as is Delphi, C, C#, Java, whatever. C# and Java will probably be easier if you're new to programming as well as being new to game programming.

Make pong. This will teach you the basic game loop, some really simple graphics rendering, input handling, etc. Don't be fooled by the simplicity of the game - there is a *lot* to learn here. Don't just blindly copy code from some tutorial and call it done, if you don't fully understand everything that is going on at this level you have no hope later on.

Now that you're a pong expert make something slightly tougher like the ever popular Tetris clone or Archanoid clone. Do it from first principles to test yourself.

Do some studying of the network API available to you. Make a very simple TCP chat app. Again, don't just copy code, you need to understand what it is you're doing.

Now make 2-player networked pong. Test it on a LAN.

Now test it on the noisiest, laggiest, and generally crapiest Internet connection you can find. You'll likely have to do a bit of redesign to get it to work at all.

By now you should have a better feel for what you're trying to do. There are several different directions you can go. Pick one and follow the same model of building up in complexity and sophistication.
-Mike
annon mike>> Well im not new to programming, if you can consider html, &#106avascript, php as programing. C++ is pretty new for me, even though I done a little earlier.

Actually I already made a archanoid clone in Delphi, though it was about 5 years ago and I didnt get the game to register any hits, and the graphics did suck...

Id see reading as a good start, it is what I did when I learnt HTML, PHP, DHTML and &#106avascript. Though, I did projects at the same time, but the reading explains functions and gives you names &#111;n new tags. It also gives inspiration ant mostly books got good exampleprograms to do. As a CD-course about C++ programming im doing right now. It tells me what to do and then Ill try it out and get a full explanation of every line.<br><br>Thanks for advices, it´s good pointers.
Really good book
_______________________Afr0Games
Lot's of people have already covered all of the C/C++ books and resources I'd recommend.

As far as the MMO portion is concerned, there's also a lot of material to consider - and basing your code on a simple TCP chatroom is NOT the way to go - you'll just end up ripping this out. An MMO is more concerned with the networking at a higher level (beej's tutorial pretty much covers all the low level (sockets) stuff you need). By a higher level, I mean things like collecting clients together into zones, and thinking about how events propogate through the game world (and therefore between the servers comprising it, and subsequently the clients attached to those servers).

Good luck. It's a very heavy project.
Winterdyne Solutions Ltd is recruiting - this thread for details!

This topic is closed to new replies.

Advertisement