A DirectX Maze

DX Maze

As part of a group project, we had to produce a small maze game in DirectX 9, from scratch.

My work revolved primarily around setting up a proper graphics architecture for the program, and implementing it using the MVC development pattern. Here is a summary of what I worked on.

  • A uniform tesselation algorithm, which was called at startup, and allowed proper lighting of the maze.
  • Implementing the MVC pattern.
  • A grid structure for the maze, where each square would contain a piece of ground, and between one and four walls, and between one and four corners.
  • Loading of a maze configuration  file.
  • Varying drawing distance and level of detail.
  • A small adaptive drone that would scower any maze configuration.
  • Collision detection and response with the maze walls.
  • Animated textures.
  • Art assets.

Start Wireframe A floating key Mini maze in wireframe Culling (top view) OH  MY GOD A BOUNCING CREEPER

Assault on Glassbraltar

Assault on Glassbraltar is a very simple game demonstrating vector-based graphics in OpenGL.

The game was developed for a 2D coursework, where the students had to produce a 2D game/interactive demo based on the assault of Gibraltar. The player must control a cannon from a cliff to shoot incoming boats. I decided to experiment with polygonal graphics and texture distortion to produce a stained glass appearance. When a cannonball collides with a triangular glass segment of the boat, it will break the glass. When a boat has none of its glass triangles remaining, it will sink. Multiple affects and particles have also been added, as well as the ability to break the background.

The game is available for download on my DeviantArt page.

Shooting at boats About to sink Big boat, small boat

Logic 0101

Logic 0101

Logic 0101 is the result of a university group project. With a team of 7, the aim was to produce a maze game that would emphasize programming. It was a tough project, as we had to go through very strict deadlines. Although we did pretty well in retrospect!

I worked on some of the graphical design, interfaces and flow, as well as the program architecture, which is based on hierarchical state management.

The player must place arrow tiles to guide little robot HARVEY through a maze. When the pattern of arrows is properly arranged, the player can run the program and the robot will follow its path. Each obstacle or object the robot encounters is referred as a method call, and the player can observe the sequence of method calls in a console on the left, which is displayed when the program is being run. The goal is, of course, to guide the robot to the end portal, without getting it stuck or destroyed. The player must be aware of certain variables, such as the direction of the robot when it enters a portal, or the portal colours.

An extract from the tutorial/in game instructions. The very first level fo the game. The program is running, and HARVEY is heading into a pit.

TNT (It’s Not Safe Outside)

TNT might be a tad misleading name, as this game is not really based on any kind of explosion.

The game was developed alongside Rob Marshall as part of the Three Thing Game of October 2011, and won first prize.

The game is for Windows Phone, and is based on the three words ‘Tomb, Ninja, Travelodge’ (hence its name, TNT). It is a side-scrolling game, where the player assumes the role of a ninja, who is tasked to escort a group of travelers (who incidentally are stupid enough to travel at night) through hordes of zombies and other creatures from beyond the grave. When a traveller gets hit, he/she will turn into a lovely angel and slowly ascend to meet his/her maker. At least one traveler must remain alive when reaching the next safe point. Safe points, of course, happen to be Travelodges.

To protect the travelers, the player has a variety of tools.

  • A standard shuriken attack, which targets one zombie.
  • A slice attack, which targets all zombies it crosses.
  • A burn attack, which deals damage over time to all zombies it comes in contact with. The player must hold his finger for one second on the screen to activate it, making it a bit more risky to pull off this very powerful attack.
Zombies (so far) come in two fairly standard types. A smaller, and faster zombie, and a big, fatter, bulkier zombie. Every time a zombie takes damage, a part of its body is taken off. The amount of damage a zombie has endured can be guessed by how many body parts it has left. Tombstones will regularly spawn zombies, while coffins are free for the player to open, and may yield a coin reward, or another zombie. Zombies themselves pop in satisfying bursts of coins when slain. The amount of coin obtained for each zombie is subject to a multiplier.
So far, coins do not have any use in the game, although they will be used to purchase upgrades.

To this day, I took the development back from scratch (while Robert Marshall is focusing on Warrior Koalas on Mars), and I am planning to release it to the Windows Phone Marketplace. The game’s title has changed “It’s Not Safe Outside”.

A few new features include semi-random upgrades, new enemy types and genetic-based difficulty increments.


The first traveller sadly passed away. The strongest attack in the game. Ninja waves at travellers from atop the Travelodge. The travellers wave at the ninja.

Minesweeper And Stuff.

MineSweeper And Stuff

Here’s for kicking off the “stuff-I-made-bit-of-the-blog”.

‘Minesweeper And Stuff’ was my very first programmed game, a product of blood, sweat, tears, and various other bodily fluids. It was originally developed for a piece of coursework. The initial specifications stated the game should be either a console application or an XNA game. Needless to say, XNA was definitely the more interesting (and most fun) approach.

The game was developed during four weeks, and includes a variety of modes, such as:

  • Standard minesweeper: One life, no time limit.
  • Challenges: Grids of various sizes, with varying amount of lives and time limits. A riddle mode (image 4) makes the player guess a specific motif based on a clue.
  • Custom: Allows the player to create his/her own level to play on.
The game can be found and downloaded from my DeviantArt page.
Black and white theme.   Game Menus Riddle Mode When the player wins a game.

Still Alive.

Besides, the cake isn't even a lie.
No. No portal jokes. Get out.

It has been a while since I last wrote on my blog. Which is not entirely true, since I have been writing posts, which I never got to publish thanks to both the amount of university work and my obsession polishing as much as possible. A blog gives me as much time as I want, which is a nice change from the time constraints of game development and coursework. In any case, not much has been happening since the bulldog switch in March. This post is an attempt at proving to the three people who actually read my blog that despite all the recent events, I am still tending it. In the shadows.

So, here is a summary of the upcoming posts, still in the works, that I will hopefully end up publishing.

A retrospective post about the Three Thing Game, which is several thousand words long, about the design process, and several recommendations I would give to people who take part in the competition. I have been a long time at it, mostly rewriting and rewriting, because it is very, very hard to formulate textual advice without sounding like a total self-obsessed idiot.

A tutorial on using shaders to make a 2D laser. As you might have guessed, this goes through the process of making the light beam in our TTG game. Most people in their third year would be familiar with shaders by now, although this covers the shading language found in the PSSuite, which surprisingly looks more like HLSL than GLSL.

An eulogy of genetic algorithms (GAs), to which I caught a liking. I will be describing their basic principles, as well as some the existing implementations of such algorithms in games. Although I am far form being a professional in the subject (I hardly even coded a GA yet!), the revisions for the NEAT module got me back into GAs, and reminded me how amazing they were.

I also have some various post scraps lying around, which will emerge or stay in the shade as hidden monstrosities.