Topdown Racing

Topdown Racing Banner

This is the final product of my graphics module at university, it’s the first game I’ve ever produced using C++. All the collision detection, graphics programming, and texture art were done by me. Programming collision detection for the first time was a real learning curve so I’m very proud to of successfully implemented SAT (Separating Axis Theorem). I had several discussions on stack exchange which guided me through some interesting problems if you’d like to see them here they are:

OBB vs OBB Collision Detection
OBB vs OBB
Implementing Separating Axis Theorem (SAT) and Minimum Translation Vector (MTV)
MTV

The only third-party libraries I did use to create this game were; OpenGL (Built into VS2010), The OpenGL Utility Toolkit (GLUT) and Simple OpenGL Image Library (SOIL). Here’s a link to download and play the game yourself if you’re curious.

Download

Controls:
Movement: WASD
Pause: P

Starfield Update

Made some additions to Evocannon 2 and also fixed a few bugs here’s the full list of updates:

  • Increased Arena Size
  • Added Camera Movement
  • Added Dynamic Starfield
  • Added Short-term Immunity

Update 1

Controls:
Movement: Arrow Keys/WASD
Aim: Mouse
Shoot: Left Mouse
Pause: P
Reset: R
Debug: 4

First Playable Demo

Finally finished an early playable demo of Evocannon 2 the game loads of stuff still to add, I’m still working out the kinks so ben gentle and don’t get frustrated if you find a bug. However if you do I’d love you to comment and give me a screen print if possible. Enjoy!

Playable Demo

Controls:
Movement: Arrow Keys/WASD
Aim: Mouse
Shoot: Left Mouse
Pause: P
Reset: R
Debug: 4

Polygons Gallore

Just implemented the class I’d previously mentioned here in Evocannon 2. I thought the demo was worthy of uploading for those interested in my progress. If you use the debug mode you can clearly see that the engine detects Convex/Concaved polygons from their vertices and then if requried appropriately breaks them down into triangles grouped into one body. I’m very pleased with the results, and I think I’ll work on getting a playable demo out now with and score/lives counter etc.

Convex/Concave Demo

Controls:
Movement: Arrow Keys/WASD
Aim: Mouse
Shoot: Left Mouse
Debug: 4

Mutual Exclusion

Now that I have some free time on hand, I felt this would be a good opportunity to do a quick summary of the coursework project’s I undertook at University this past semester.
Architectures and Operating Systems
The main coursework project in this module consisted of understanding a core fundamental of concurrent programming called mutual exclusion. “For this assignment you will create a Java command line program that simulates the behaviour of a meeting of a fictional secret society. A detailed list of the requirements and a description of the expected behaviour is given in the problem statement.”
There are two types of members of this “fictional secret society”, these are referred to as ‘Elders’ and ‘Juniors’. They abide by the rules that follow:

  1. Each member must enter the vestibule and pay respect to the ‘Senior Elder’.
  2. If the vestibule is empty, a member of any rank may enter.
  3. If the vestibule is occupied by members of one rank, members of the other may not enter until the vestibule is empty.
  4. If an Elder wishes to enter the vestibule, no ‘Junior’ may enter ahead of them. An Elder will wait until all ‘Juniors’ currently in the vestibule have left, then immediately enter. All waiting ‘Juniors’ will enter only once all waiting Elder(s) have occupied and left the vestibule.
  5. The vestibule has a maximum capacity. Once this is reached, members of either rank must wait until a space becomes available.
  6. Members need not enter in order of arrival.

We had to simulate this ‘Society’ using the ‘Thread’ class and a ‘Semaphore’ class given to us. I’m aware that this can be done much easier using ‘synchronized’ in Java but the point of this exercise was to understand the underlying principles.

Source Code:

Society.java
Elder.java
Junior.java
Member.java
Semaphore.java

Interstella Snooker [WIP]

Interstellar Snooker Banner

This is another old demo prototyping another gameplay concept I’d thought of in my spare time. The idea was to launch a shuttle from Earth so that it reached it’s destination while dodging various planetoid or using their gravitational field to it’s advantage. I made some basic planets and a quick level editor to see if it was fun. For no fault of it’s own I lost interest in this idea and pursued other ideas but I still thought the demo was worth showing. I may do something with this idea I think integrating a physics engine could give it new life.

Prototype Demo

Controls:
Aim: Mouse
Shoot: Left Mouse

EvoCannon 2 [WIP]

EvoCannon 2 Banner

Currently apart from my University Work I’ve been working on wrapper classes for Box2DFlash and I felt the best manner in which to test them was by making a game that used them. So I decided to do a sequel to EvoCannon, I felt that the basic gameplay would be perfect to recreate using the Box2D physics engine. At the moment I’ve covered basic shapes such as convex polygons and circles, hit detection, and skinning the objects via embedded bitmap images (.png’s in this case) which is a big step up as it improves performance massively (apart from the background effect which at the moment uses vector graphics). I also have concave polygons extremely close to completion I just need to implement a few more things and I should have a full demo, but for the moment I have this tech demo.

Tech Demo

Controls:
Movement: Arrow Keys/WASD
Aim: Mouse
Shoot: Left Mouse
Debug: 4

Packed Lunch [WIP]

Packed Lunch Banner

This is a project I started awhile back while I was learning AS3 and Box2D/QuickBox2D. It was going to be a puzzler platformer where the main aim was to push the various fruit objects scattered around the level into the lunch box (or visa versa). I came up with various level ideas but realized quite early on with no knowledge of serialization it would be quite hard to produce levels and test them in quick succession so I’ve abandoned it for now. However I have a better knowledge of serialization now after my first year of University so something may still come of this concept idea.

Testing Player Movement:
Demo 1
Testing Level Creation/Completion/Destruction/Transition:
Demo 2
Testing Physics Joints/High Poly Objects:
Demo 3
Camera Follow Prototype:
Demo 4

Controls:
Movement: Arrow Keys
Pause: P
Reset: R

EvoCannon

EvoCannon Banner

This is a game I made back in early 2008 I was just getting comfortable with AS2 and decided I’d make a top-down shooter with different enemies and varying levels of difficulty. When I finished the beta version I posted it to Flash Game License where I got good feedback as well as a sponsership offer from DABontv now known as Game Butler for $500. This game also featured a highscore board using Mochi Score’s API. Also DABontv offered an additional $100 to integrate their in-house highscore board API which I happily agreed to (since then however I think they no longer support it).

Evocannon
Evocannon (Hosted on DABontv/GameButler)

Controls:
Movement: Arrow Keys/WASD
Aim: Mouse
Shoot: Left Mouse