Sunday, July 11, 2010

The joy of prototyping

One of the biggest problems I face when doing tools for my game is the sheer size of it all and my general lack of experience doing usefull things (as oposed to screwing around).
The biggest challenge I'm facing right now is making a level editor that be called a 2D version of Valve Hammer Editor.

Yes. I'm that stupid to try making a huge editor on my own with barely any prior experience. How did it go? Well... I failed miserably before I even begun. The sheer number of features I want in my editor is daunting. Implementing them on their own is already quite a task, not to mention integrating them all into one big editor where every piece has to cooperate with the rest.

I've seen a number of GDC presentations in my day, one of them being the Chris Hecker's and Chaim Gingold's marvelous lecture on prototyping for such a huge project like the innovaive spore animation system. The lecture was so good in fact that I often take advice from it even without knowing it. One of these times was when I decided to create experiments instead of fully-functional programs. Those experiments Turned out to be really helpfull. They helped me understand how a saving system should work, helped me with my work on using the Macros in C++, I even did a small scripting language.
About a week ago I decided to make a smaller version of the editor I want. A really basic level editor that wouldn't even use the wxWidgets UI and had some basic functionality like multiple selection, moving and scaling entities and saving/loading. At the time I wasn't aware that what I made was in fact a Prototype.

(My editor prototype.)
After I finished the level editor experiment I made a small list of other experiments to do, and most of them turned out to be related to the future level editor I want to make.
-Creation of diferent entities based on a GCF-like entity description file.
-2D Geometry editor.
-Small app for loading and testing how various map formats would work out.
-And a another app for creating and testing out custom widgets.

(Currently I'm working on the geometry editor and I'm tackling with DevIL's inability to load the textures into openGL.)

(EDIT: I got textures working and I'm ready to go!)
What I got from all this?
-Prototyping is fun.
It is really, really fun! You can do all that stuff you'd do in your major game editor or your game engine but on a smaller scale, and you don't have to worry about how you integrate that with other parts of the app. This means a lot less stress, and if you enjoy programming (if you don't then why the hell do you do it?) you'll have a lot more fun making prototypes, and only later figure out how to integrate them, than you'd have if you were implementing everything right into the engine.

-Prototyping is easy.
Prorotyping helps you divide the big problems into smaller problems and since you have no worries about how to integrate features with eachother and the engine you are free to experiment and fail as much as you want. I've spent over 2 weeks doing close to nothing because organizing an entire editor without any knowledge on how I'll make things, and without much prior experience was just too damn difficult. With prototyping of indifivial features it's a lot easier, and seeing them work in their own little contained environment very rewarding.

-Prototyping is fast.
"Well, duh!" Yeah, I know, that's a no brainer. When making a big project a lot, and I do mean A LOT!, of time is wasted on organizing things that don't yet exist, and you still don't know how all of them are gonna work. This means that not only the planning stage takes a lot more time, but the implementation itself is being pushed back until the planning is finished.

-Prototyping adds variety.
What I mean is: When you prototype you can easilly paus your current prototype to work on another one, or even on another project. It depends of the kind of programmer you are but It's difficult for me to work on only one thing at a time. Often if I postpone my ideas I either forget about them or don't feel like working on them anymore, so prototyping is Ideal for me since I have a array of smaller projects I can grab at any time I want.

That's the end of my rant on prototyping.
My diagnosis:
Listen to what Chris Checker said, and see his presentation about it!
Here's a free link to his page on Advanced Prototyping:
It has the slides and the mp3.


No comments:

Post a Comment