[an error occurred while processing this directive] [an error occurred while processing this directive]
Space Smashout Postmortem


  • Part 1:

I originally started Space Smashout as a way to learn more about 3d graphics. One of the first decisions I had to make was whether to use Microsoft's DirectX or Silicon Graphics Opengl. After some thinking about, I decided to use Opengl.

The reason for this is simple: portability. When I was younger, I was brought up using Macintosh. I loved my Mac, it did everything a nine year old could expect, except to play the greatest games. I was always disappointed that all the "cool" and "new" games were coming out for windows first, with Mac being fed only the scrapes. I vowed that if I were to ever make a video game, I would make sure it ran on Mac. Thus, this resulted in my choice to use Opengl over Microsucks DirectX.

As I said at the beginning, Space Smashout (lets refer to it as SS from now on) was my first attempt at 3d graphics. When I began SS, I had no clue how 3d graphics were produced or displayed on the screen. I began my journey cutting and pasting code which I would find on the internet. Let me tell you right now, DON'T CUT AND PASTE CODE! The result is that my source code looked like it had been sent through a meat grinder (not pretty).

I quick realized that if I stayed on this track, SS would never be finished. That's when I sucked in my pride and *gasp* read the manual (yes, even programmers hate reading manuals). But there was no other alternative, I read over the Opengl specification a step at a time.

Apparently, things worked out well because SS was finished after all and I have no regrets about choosing Opengl over DirectX.

Of course, there were still many of other problems that I will write about over the next few days.

Comment on part 1 now!

  • Part 2:

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.

Comment on part 2 now!


[an error occurred while processing this directive]