Back to the main site


← Older posts

Super Dimensional group project

Posted on by Malcolm

Over 6 months and with a team of 8 artists, designers and one other programmer I helped develop this quick and crazy game called Super Dimensional Great Space Justice Treasure Hunting Pilots (“Super Dimensional” for short) using Unity and C#. My main responsibilities included the design and implementation of the entity management systems for the power-ups and obstacles as well as the random spawning system that guarantees an even distribution through the use of an Influence Map. I also implemented the obstacle behaviours (asteroid, black hole and alien) and tailored my designs to work well with Unity’s component-based system.
Continue reading →


Posted in Uncategorized | Leave a comment

Using Influence Maps in Unity for random entity spawning

Posted on by Malcolm

I have previously written about this subject; the project I present here is the fruit of that labor. In order to avoid relying on unconvincing computer-randomness I created a system based on Influence Maps that can be used to ensure that obstacles are spawned randomly but in a human-like, distributed, manner. This is an example of a problem I had identified for the project at hand with no one to teach me what to do. It took me around a week to go from identifying the problem to researching and implementing a solution.
Continue reading →


Posted in Portfolio | Tagged , | Leave a comment

OpenGL Deferred Renderer with Reflections

Posted on by Malcolm

This was my final assignment for my real-time graphics module at university. In this application I have implemented reflections with cubemaps and FXAA in OpenGL 3.3+ and have optimized the rendering through the use of stencil guarding and have implemented Carmack’s Reverse to avoid issues with culling while inside the light geometry. I also use OpenGL queries to profile the performance of the GPU (this it recorded in various text files that will be created/overwritten in the same directory as the executable).
Continue reading →


Posted in Portfolio | Tagged , , , | Leave a comment

Bullet Hell Game Redux

Posted on by Malcolm

This is a full 2D game engine implemented using SDL complete with a game demo. Originally the engine and demo was implemented in my second year of university but I reused the project in my final year when I had to implement and profile a game for the linux-based GP2X Caanoo handheld console (which is why all the images are in 16-bit [r5 g6 b5] format). However the GP2X uses a very old compiler (pre C++11) and so I’ve rebuilt it using a modern compiler and taken out the linux-only code.
Continue reading →


Posted in Portfolio | Tagged , , , | Leave a comment

Rigid body simulation (Fizzicks!)

Posted on by Malcolm

Recently for my Physics Simulation module at university, I had to implement an impulse-based rigid body simulator. I chose to implement this using an iterative forward Euler integration method. Contact resolution also used an iterative method (finding the contact with the greatest penetration depth and resolving that first) and the narrow-phase collision detected utilized Separating Axis Theorem. This was done in C++ and the Ogre3D framework. Video after the break!
Continue reading →


Posted in University Work | Tagged , | Leave a comment

Quick and easy primitive animations in Unity

Posted on by Malcolm

So I was working in Unity the other day on a shooting gallery style game for my final year project only to find out that they had updated the animation system in Unity 4.3. Previously it was super easy to apply basic animations (as displayed in this now obsolete video tutorial) but I found it quite tricky to figure out how to apply a basic animation with the updated system. After about 30mins of trying to tinker with the editor I threw my hands up in the air and said “I’m a programmer, let’s sort this out using a script!”. The solution did end up using a very basic script but it also taught me something that I find very cool about animations in Unity.
Continue reading →


Posted in Tutorials | Tagged , , , | Leave a comment

Test Specifications to assess Gaze/Gesture input devices

Posted on by Malcolm

For my university final year project I am looking to assess the viability of a gaze/gesture control system in a computer game context. In order to develop a intuitive (and fun!) control system I will be making a designing/implementing a couple of tests and asking for volunteers to try and give their feedback. The measurements I will be taking from the tests is largely based on Usability Benchmarks for Motion Tracking Systems (Lugrin et al, 2013).
Continue reading →


Posted in Final Year Project, University Work | Tagged | Leave a comment

Gesture based spaceship control with the Leap Motion and more!

Posted on by Malcolm

I’ve finished the first iteration of the gesture component of my multi-modal user interface. It was surprisingly easy with the data the Leap SDK provides (such as palm direction and palm normal). Below is a video showing my progress (the Leap Motion diagnostic visualizer is in the bottom right if you want to track my hand movements). Sorry for the bad quality, I’m using new screen capture software.
Continue reading →


Posted in Final Year Project, University Work | Tagged , | Leave a comment

Physically Based Shading and Reflection Mapping

Posted on by Malcolm

In my latest assignment for my final year Real-Time Graphics course we had to write a paper discussing physically based shading and reflection mapping in a deferred rendering context. Our target audience was someone who is already comfortable with basic 3D rendering concepts (blinn-phong shading, multi-pass rendering etc). This article is an adapted version that concentrates explaining both topics as a concept and I had no previous knowledge of either topic before I started my research and it took me approx 2 weeks to complete this section.
 
In recent years we have seen a shift in the 3D rendering towards Physically Based Shading (PBS) because it allows us to achieve a more photo-realistic look in our real-time and offline rendering compared to previous techniques.
Continue reading →


Posted in University Work | Tagged | Leave a comment

Distributed randomness in a battle arena game

Posted on by Malcolm

The Problem
 
My final year at university has a really fun module: Advance Games Development. It’s a module where students from various games-related disciplines (designers, artists etc) get together and produce a game. The game that my group is doing is a 4 player battle arena that takes inspiration from games such as Crash Bash.
 
The game is set in space and each player controls a spaceship. There is treasure that spawns in the center of the screen and each player does righteous battle for that treasure which scores them points. During all the battling going on there will be various obstacles (e.g. black holes which hold a player in place) that will spawn in the arena. The player with most points at the end of the round wins.
 
All of the obstacles/power-ups etc will be procedurally generated at random and it’s this aspect which is a little bit tricky to implement. Sure, you can just use whatever mechanism your programming language of choice offers to randomly generate numbers but there is an inherent problem with computer randomness: it is not the same as what we humans perceive as random.
Continue reading →


Posted in University Work | Tagged , | Leave a comment
← Older posts