Tuesday, December 15, 2009

College Chronicles Part 2: Extreme Pong 2

Two months after I made the first Extreme Pong I got to Windows Programming at Full Sail University.  In this two month class I learned my way around the Windows API.  GDI, string tables, resource files, icons, windows and the list goes on.  During the first month of the class we were tasked with taking the knowledge we learned and applying it to a simple pong game outside of class.  Since I already made a pong game at the point I decided a sequel was in order.  Extreme Pong II was it.

The date on this sucker is around March of 2006. You'll notice the graphics have improved a bit from the first game.  That is thanks to the "awesome" GDI rendering and bitmap graphics.  All art in this game is actually created by me (as if I could find an artist that could create such atrocities).  The sound is taken care of by fmod, myself and Coheed and Cambria.  There are also some obscure features such as toolbar and options to save and load the score for the game.  This is due to the game being used as a way to learn the Windows API.

The game features the standard Volley Ball, but I added in other balls to spice it up.  I called these balls: Death Balls.  The paddles also have armor.  When you get hit by a Death Ball your armor becomes damaged.  If damaged too much the paddle's Private Areas are revealed.  If the Private Areas are hit by a  Death Ball it is game over.  You can also win by getting ten points.

The biggest aspect of gameplay I'm disappointed by is the AI for the opposing paddle.  It simply tracks the ball so the only way to win by score is by hoping the Death Balls hit the ball into the goal before the paddle can get to it.  Again my focus was more on learning the tech then making a fun game :-(.

Looking back at the code I unfortunately reused a lot of the game physics/collision (or rather lack there of) from the first game.  I imagine this was done so I could focus on the rendering and new tech I was working with (Windows API).  It is humorous to look at regardless, here is a snippet:

It also seems that I attempted to used class inheritance, but to very little effect.  Refer to the different ball types that derive from the base ball class.  All they do is set a bool that discerns the two for damage/point checking.

This time around I tried to improve my commenting standard.  Pretty much all function's input and output are commented in detail.  I didn't do very well with managing my TODO comments however.  A lot of them are still in the code even though things are implemented, or changed.  There was also some comments that were more interesting then informative.

I was once again surprised at the code, but in a bad way.  I thought I would have improved more upon what I did in the first pong game.  Time-line wise, this is only two months after my Extreme Pong.  I also had to worry about learning the course material to get the grade I wanted.  This comes across in the code pretty clearly.  I can tell there are some areas where I am experimenting, which makes sense.  At the time I had only been coding C/C++ for about five months.  When that is taken into account I am pretty impressed with what I was able to accomplish.

Game Download(Windows):
Extreme Pong 2 - Game and Source

Game Video:


  1. Ha ha ha. Please tell me that MessageBox was from the recording program or something.

    I remember this game. I love the sound effects, man.

  2. Nope, that was the game prompting for you to save before you quit. Don't want to lose any data.