BeatSprint Music Game – Group Project


This game is a side-scrolling platformer with one action: jump! You choose music from your hard drive, and the level is generated for the length of the song. The mood and pace of the music dictates the difficulty (more beats per minute means more obstacles to jump over).

After a summer learning theories on making games (a short-lived attempt at creating one is visible at my smuggler game blog), I jumped at the opportunity when my uni started allowing our course to pitch a game, rather than an animation, for the group project. I spent 2 weeks getting together a music visualisation demo in Qt and C++, and with a few hasty concept designs, my pitch was enough to get the idea chosen!

We were randomly assigned group members – I had no idea who any of my three team members were (of course I know them well now)! Everyone had clearly defined roles, mine being the leader and game/ engine programmer. After some research into engines, without much of an idea of what the game would be, just that it was a side-scrolling platformer that reacted in some way to music that the user could choose, I decided on the Angel 2D Engine

Some of the engine architecture was very confusing to me (a relative newcomer to C++, and writing games) – there were four destructor-like functions one could call per pointer to an object! I spent a long time on bugs caused by my wrong assumptions about how the engine “should” work. Also I didn’t have a debug build, which I didn’t realise I could do!

The project was 4 months long (along with other assignments) so I learned a lot in that time, both through programming, and being taught in lectures and tutorials.  It felt like every new thing I learned in maths or programming could be almost directly applied to the game. I decided a month before the project’s deadline to restart all the engine programming, switching development OS to Linux (an OS I had barely used) which gave me a lot of motivation to work hard, fast and well. I was still writing the development tools for the artists to add their work a week before the deadline! I taught myself skills that I needed quickly, such as how to write a shader in GLSL in a day, then writing the music-dependent sky shader in a couple of hours.

I knew my personality did not make me a natural leader before starting the project, but after making quite a few mistakes, I learnt an awful lot about managing a team, and getting them working efficiently. Since we were a group of introverts, strung together, communication was in short supply, and at times the project suffered for that.

Here is a link to the executable and source code (unfortunately, it only works in 64-bit Linux at the moment. If I have the time and inclination I might make it multi platform later):

Here are some gameplay videos (having chosen some songs that are distributable under the creative commons license – I don’t want to get in trouble for copyright infringement). Also I had to cut the songs down due to my video recording software breaking after a minute every recording:

AlexBeroza – Purple Nurple

Super Sigil – Thunderlizard at the Art War

cdk – Look to la Luna

djlang59 – Drops of H2O

Jack Bzowski – Art Director
Tom Beaufoy – Programmer (Beat detection, OBJ animation)
Tongqi Ou – Artist


Well I finally got round to putting together a showreel, perhaps 2 months later than I should have. It only took a few hours, once I had the rendered material! I used Premiere and After Effects, which were slow and buggy with 720p video, with which I’ve not worked before.

Projects in order of appearance (more info on each should be available on this blog, at least, shortly!):

1. BeatSprint
In second year, we have to do a group project. This is the first year they have allowed games. I pitched the game idea (which evolved over the first few weeks), and thus led the team. I also did most of the programming, in C++ and OpenGL (with a bit of Lua and Python). My team were: Tom Beaufoy – Programmer, Jack Bzowski – Art Director and Tongqi Ou – Artist. The user chooses a song and has to press only one button, to jump over the oncoming obstacles, which are generated to the beat of the music. The sun sets over the alien city, and foreground landscape is procedurally generated over the length of the song.

2. Charlotte the Necromancer
A character I created in a couple of weeks for a competition, using 3ds Max, Zbrush, Photoshop and Xnormal.

3. Billybob hits the Gym
Animation assignment, entitled “I Wasn’t Expecting That” and lasting 15 seconds. The Maya character/ rig was provided by my lecturer, Jahirul Amin. The environment I did to learn Maya’s lighting and procedural texturing (having come from 3ds Max).

4. Iron Man/ Audi
Modelling Assignment. This was mostly to learn Maya. 2000 quads each, for the Iron Man, and Audi R8.

5. Countryside generator
Scripting assignment. Done with Maya and Python. My first programming, so there are no classes or any more advanced concepts (maybe a lambda function or two but Python’s good at that!), and it’s very buggy. I’m quite proud of some of the procedures!

6. Billybob fall loop
Done for the same assignment as 3.

The music was pROgraM_vs._Us3R by morgantj, and is distributable under creative commons. The full song is available here:

Please get in touch if you like my work or would be interested in employing me.
Thanks for watching!