FuturePong

As part of my MSc Games Engineering course, I had to create a simple version of Pong, using OpenGL for its graphics rendering. This was a fun project to do, and funnily enough I’d never made a simple game like pong before, I jumped straight into the deep end with Syndicate Wars. Rather than just stick with the simple monochrome pong style (as amply demonstrated by my banner image) I went for something a bit stranger: FuturePong! Against the backdrop of a procedurally generated landscape (courtesy of my undergrad project) floating in space, two robots (who appear to have no legs) battle it out for pong supremacy.

The landscape features a set of hills and steppes, with a large crater in the middle. In the middle of that crater is a large spire, with, for some reason, a pong game balanced on it. Each of the player robots is animated, and animates in response to player key controls. The robots have victory and defeat animations as well, which play when a player reaches 10 points. I was going to add in a joystick mesh and big fire button for the robots to use, but time ran out, so their animations look a bit weird. The animation system is really simple, Each bit of the robot is kept in a hierarchy, so rotating a shoulder joint, for example, makes the whole arm move. I then defined a set of rotations for each joint, and interpolated between them to make a fluid animation.

In addition to the basic pong game rules, each paddle has a ‘bouncer’ that can be fired to make the ball behave more unpredictably. Each impact of the ball fires off hundreds of particles of various colours, which bounce around the play area.

There are two lights in the game area, a spotlight inside the camera, and one inside the ball.  Most of the game world has a lighting shader applied to it, with the game area floor having a bump mapping shader. This was the first time I’d used GLSL, and I didn’t quite get all the matrix transformations right, but it was good practice for when I decided to use GLSL in my own game engine, rather than Cg.

The text in the game is rendered using some font code I made after reading a NeHe tutorial years ago, I made the font bitmap at the time using a bitmap font generator from somewhere or other. The code and bitmap have followed me about from coding project to coding project for quite a while 🙂

I tried my hand at modelling for this project, something I’d never done before. I definitely need more practice 🙂 . I failed quite badly at getting the hang of texture coordinate generation with Anim8tor, so the pong playfield textures look all wrong, unfortunately.

I wouldn’t say it’s a particularly brilliant game, but it was fun to make, and it was certainly good practice!

Ground texture courtesy of KatsBits.

Playfield texture from here.

Playfield background texture from here.