Game Programming and Development Tools

The Road to MMOG – samw3

samw3

Member

Posts: 542
From: Toccoa, GA, USA
Registered: 08-15-2006
[NOTE: This first post will be constantly updated to reflect the recommendations offered below by other posters. See bottom for edits.]

Hello World,

It seems like everyone loves MMOG's these days, particularly of the MMORPG style. And several people, I've noticed, have come to this board with a deep craving to develop one. But for some reason or another nearly all of these attempts have failed (as best as I can tell).

I have decided to begin developing a "course" for Game Development. I use the term loosely however as it will not be for learning how to program. What I am hoping to accomplish is to help coders be able to hone their existing skills toward game development.

That said, I present to you...

**triumphant fanfare**

The Road to MMOG!

What is it? Its a road map of milestones to develop a series of Mini-Games that each highlight a particular subsystem of video games and take you a step closer to building an MMOG.

What is it NOT? It is not a programming course. It will NOT have any code, except maybe some pseudo-code to explain a confusing concept or two.

Though I have many years of experience as a developer, I am not a game developer so I, myself, will be taking this journey as well. I know that there are many experienced game developers on this board and I would appreciate any help you can offer.

So, to get things started, I have attempted to generalize the various systems of video games into some equally generic milestones. Here's what I have so far; listed in chronological order. When the project is complete, these will each be a mini-game which uses all the systems up to that particular point. If you want to spice things up a bit, build each mini-game according to your genre. For instance, if you are doing medival, try casting magic missle at falling rocks and call it "Boulder Smash", instead of Asteroids.

Because of the vast difference between 2D, 3D, Network Play, and MMOG, I think a good approach would be for the learner to implement the whole road map in these four iterations. That means taking the path from start to finish in each of the iteration areas.

ITERATION AREAS
1) 2D, non-networked
2) 3D, non-networked
3) 2D or 3D Small party network play
4) MMOG

It seems like there could be a temptation to skip right to the end. I would encourage you however to stick to the iterations. I believe doing so will provide a firmer foundation for and better understanding of games.

GENERAL VIDEO GAME MILESTONES

Engine Familiarity
* GOAL : To become familiar with the graphics commands of the engine you are choosing to use.
* TOPICS: Primitives, Sprites, Image/Texture Loading, Sound/Music etc.
* GAME : a Title Screen (Hey, you've gotta start somewhere)

Dealing With Assets:
* GOAL : To learn how to optimize and organize your game's assets
* TOPICS: Planning, obtaining, optimizing, importing, packaging and loading game assets.

Basic UI
* GOAL : To learn how to interact with the user
* TOPICS: Keyboard, mouse, text to the screen
* GAME : Memory Game

Game Overs
* GOAL : To learn structures for all the things in between the game play
* TOPICS: Start Screen, Lives counter, Score, High Score, End of round, Game Over
* GAME : Wack-a-mole

Movement & Collision
* GOAL : To learn to make things move and hit each other
* TOPICS: Create, Delete, Move Sprites; Collisions; Projectiles
* GAME : Asteroids

Designed Levels
* GOAL : To learn how to create, load, and interact with designed levels (no scrolling)
* TOPICS: Loading Tiles, Loading and Drawing a map, Triggers
* GAME : Breakout/Arkanoid

AI
* GOAL : To learn enemy and NPC AI

Battle System
* GOAL : To learn about battle systems in games.
* TOPICS: Energy/Life, Attack, Defense, Stats, etc.

Commerce System:
* GOAL : To learn about systems for buying/selling/trading and inventories

World System
* GOAL : To learn about scrolling maps and portal triggers, towns, dungeons, etc.

Dialog System
* GOAL : To build a dialog system for communicating with NPCs/Enemies(Bosses?)

Quests
* GOAL : To learn about quests and questing systems

Story
* GOAL : To write a story and track its progress through the game.

Advanced Animation
* GOAL : To learn advanced animation techniques

Advanced UI
* GOAL : To learn about innovative, advanced user interface routines

Special Effects
* GOAL : To learn to do special effects for your game
* TOPICS: Particle systems, lens flares, dynamic shadows, etc.

NOTES:
* Add some assets that coders who are not visually/aurally creative can use to not get bogged down.
* Add encouragements along the way.

LINKS:
http://reinerstileset.4players.de/englisch.htm - Visual Assets

That's all I've got so far. Any other ideas? Things I've missed?

P.S. Thanks to HanClinto, jestermax, Nomad, and the rest of the posters in the Hello World thread for the idea.

EDIT: 1/27/2007 Added another step for MMO Play (could become steps) from HanClinto
EDIT: 1/28/2007 Removed network steps and added them as iterations. From dartsman
EDIT: 1/29/2007 Added "Dealing with Assets" from JeTSpice
EDIT: 1/29/2007 Added free visual asset link from jestermax
------------------
Sam Washburn

[This message has been edited by samw3 (edited January 29, 2007).]

HanClinto

Administrator

Posts: 1828
From: Indiana
Registered: 10-11-2004
Looks good!

Some of the later steps (such as questing, storylines and dialog) might not need separate projects to learn how to use them all, but still you've made valuable steps of progression and I think they're good kept separate.

The last step is vastly simplified -- it doesn't quite get the player up to the level of working on a MMOG.

The generally accepted meaning of MMOG is "Massively Multiplayer Online Game" -- the word "massive" implying that there are hundreds of simulatenous players all in the same game instance/world. This requires the use of more than one server to handle all of the players, and it introduces immense synchronization difficulties (hence why "duping" is such a prevalant problem in MMOGs). If Blizzard has a hard time getting it right, most indie devs will as well.

One indie dev that has successfully (and mostly single-handedly) programmed his own (successful) MMORPG is Josh Ritter. He created the game Minions of Mirth, and a little while ago he made an excellent blog post about the evolution of an indie MMORPG. He posted a picture of his most recent server setup, and just trying to drink it all in was mind boggling to me.

Anyways, just wanted to specify that this list doesn't take a programmer all the way up to creating a system like that -- there is a lot of knowledge of networking fundamentals, database synchronization/optimization and math/stats that is needed to do a good job with making one's own MMOG server.

So yeah -- just wanted to add a bit to show just a glimpse of what's all involved in that last "learn networking" step.

Again, good list and progression, Sam!

In Christ,
clint

[This message has been edited by HanClinto (edited January 27, 2007).]

samw3

Member

Posts: 542
From: Toccoa, GA, USA
Registered: 08-15-2006
Very good point. I have added another step to reflect going beyond basic multiplayer. As you said this will step into the server side of things. Along the way I will be recommending libraries that can implement functionality if available. Perhaps there is an open source middleware that can do the massive part. Either way it seems like a logical step after smaller, maybe party-based multiplayer.

ALSO, let me stress that this is not only about MMOG's! You and your game can jump off the road at any point. An action game may stop at the Battle System while an RPG moves on. Or even skip parts that don't apply to your killer app.

The goal here is to progressively get those interested ramped-up and actually making games without biting off more than they can chew.

------------------
Sam Washburn

[This message has been edited by samw3 (edited January 27, 2007).]

dartsman

Member

Posts: 484
From: Queensland, Australia
Registered: 03-16-2006
One thing that worries me is the order of your topics... being a programmer and having looked into network programming, I do think you really need to consider what the games requirements are from the network system from an early stage. A lot of MMO Projects fail due to the networking issues which arise and the difficulty/scale involved in developing a MMO.

Just wondering if this will end up as more of a ‘learn games systems’ and then ‘learn how to network your finished game’... rather then the real path to an MMOG. As learning the networking at the end will result in a lot of explaination for the previous systems created...

An example:

AI for an MMO, this *should* be server-side, however there could be some cases to let the client do this (say to enable a random dungeon fighting arena, or if you didn't mind where NPC's walked in certain areas). Also when server-side, the clients need to be updated with this data.

I know this won’t be an actual ‘This is how to program a MMO’ but the networking needs to hold a stronger grasp over the systems within an MMO.

Any who, sounds like a really good idea and I do wish you the best of luck It'd be cool if CCN had an MMO Tutorial Series and I'm sure if you did it well enough you could publish it into a decent book.

------------------
www.auran.com

samw3

Member

Posts: 542
From: Toccoa, GA, USA
Registered: 08-15-2006
Thanks dartsman, I appreciate your comments. You have made a really good point also. Here was my reasoning for the order. Take your example of AI. Since I am far from a being a game programmer I feel I need to learn how to do AI in a non-networked game before thinking client-server.

I have removed the network steps altogether and have added them as iterations along with 2D and 3D.

Does that make more sense? Any more ideas?

------------------
Sam Washburn

JeTSpice
Member

Posts: 433
From: La Crosse, Wisconsin, USA
Registered: 06-10-2006
Perhaps designing the artwork. Anti-aliasing 2D assets, creating alpha channels, optimizing sheets of graphics, making tiles... Some of which might be "outsourced" to other sites on the net. (There's lots of tutorials out there on making tiles, but not too many on getting rid of pixelization.)

Using 3D modellers to create 2D assets presents extra challenges of matching perspective.

And this all might be flavored with encouragment. For most of us, our biggest enemy is lack of perserverance. I'll only perservere according to the strength of my faith. If I don't believe it matters, I won't finish it. No skill will overcome futility. But in addition to teaching skills, we need to encourage one another in Christ.

Our ideas are important--they are given to us by God. We were put on the earth for such a time as this. If God is with us, who can be against us? He is faithful to complete us. He desires above all else that we prosper and are in good health. He has plans for us for a hope and future.

...encouragements like that throughout the instruction.

jestermax

Member

Posts: 1064
From: Ontario, Canada
Registered: 06-21-2006
hey there. just wanted to post and say i think you're onto something with this . i'll pray for everything in this project to work out and you have my support if you need it.
samw3

Member

Posts: 542
From: Toccoa, GA, USA
Registered: 08-15-2006
quote:
Originally posted by JeTSpice:
Perhaps designing the artwork. Anti-aliasing 2D assets, creating alpha channels, optimizing sheets of graphics, making tiles... Some of which might be "outsourced" to other sites on the net. (There's lots of tutorials out there on making tiles, but not too many on getting rid of pixelization.)

Using 3D modellers to create 2D assets presents extra challenges of matching perspective.

And this all might be flavored with encouragment. For most of us, our biggest enemy is lack of perserverance. I'll only perservere according to the strength of my faith. If I don't believe it matters, I won't finish it. No skill will overcome futility. But in addition to teaching skills, we need to encourage one another in Christ.

Our ideas are important--they are given to us by God. We were put on the earth for such a time as this. If God is with us, who can be against us? He is faithful to complete us. He desires above all else that we prosper and are in good health. He has plans for us for a hope and future.

...encouragements like that throughout the instruction.


I really like the ideas about encouragements, and I want to keep this a Christian thing, so, if it turns out to be popular in the game community as a whole, there will be a witness there as well. I understand what you mean about futility crippling an idea/project.

As for your artwork suggestion, I have added creating alpha channels and optimizing sheets of graphics as well as some other ideas as "Dealing with Assets".

However, creating assets can be a stumbling point for some very good coders that are not visually/aurally artistic. While definitely necessary, it diverges from the heart of the topic which is teaching programmers to code games. As this section is fleshed out, it will include ideas about how most games are written by a team.

On that note, if there are any game artists out there that would like to provide more information about game assets, I would be happy to help provide the structure for the document.

I have made a note to include a set of prepackaged graphics, and sounds with links to related tutorials.

------------------
Sam Washburn

jestermax

Member

Posts: 1064
From: Ontario, Canada
Registered: 06-21-2006
try this for 2D sprites. they're free and look nice.
http://reinerstileset.4players.de/englisch.htm
samw3

Member

Posts: 542
From: Toccoa, GA, USA
Registered: 08-15-2006
Nice! I have added it to a new links section. Oh, and thanks for the prayers and encouragement. I appreciate any help you can offer.

------------------
Sam Washburn

jestermax

Member

Posts: 1064
From: Ontario, Canada
Registered: 06-21-2006
Well, i'll help anyone who needs me but i just wanted to make it explicit here because i'm really excited about the outcome of your project here
samw3

Member

Posts: 542
From: Toccoa, GA, USA
Registered: 08-15-2006
Well, let's see. Is there a free/creative commons sfx link you know of or game music archive? (If not maybe we should start one)

Also, you could help me think of mini-games for each of the milestones. The trick is to think of a game that only uses what the learner knows and doesn't jump ahead.

------------------
Sam Washburn

[This message has been edited by samw3 (edited January 29, 2007).]