Monday, July 20, 2009

Space Smashout Postmortem Entry #2

This is the second part of my Space Smashout (referred to as SS) postmortem.

After having decided on Opengl as my video driver, I began work on the game engine. For SS, I created my own (simple) rendering engine. After about a month into the project I had model loading capabilities via my own model format, texture loading with the tga image format, and the start of a scriptable gui (graphical user interface). I must say, though, the gui was undoubtedly the hardest thing to make.

People really don't notice gui's anymore. Its as if people just figure that the gui is "supposed" to be there, and if it's not, then something is wrong. I don't think people realize how hard it is to write one either. So many unforeseen problems can occur. Also, the gui was not only the hardest thing to program, but also took the most amount of time to finish.

The thing about a user interface is we all know what it is and how it should work. We all know what a button and checkbox are, so my problem was that if I didn't integrate the gui 100% correctly, people would say the gui was bad.

It probably took me at least 2 months to get the gui working right, which was practically half the development time! And in the end, I had a variety of 6 different widgets: The button, label, checkbox, slider, listbox, and text field widget.

As a gamer, a gui is just something to be expected, but as a programer, the gui is one the hardest and most tedious things to get right. Perhaps now that I know what mistakes I made, I'll be able to integrate a gui faster next time. All I can is, that as a gamer, I have much more appreciation for the programmer stuck with writing it.

To the fans out there, just do me a favor: next time you find yourself in a game menu, just stop a second and really absorb in the work that went into displaying that start and quit button.