Portfolio - University Work

Procedural Story Generator (3rd Year Project) - Year Three

The subject of my third year project, this is a system for procedurally generating stories based on character interactions. Based on Façade, the system generates a story by arranging pre-defined 'events' to react to the user's actions and create a story they will find interesting. This system is incorporated into a simple text-based game, which provided a way for the player to interact with (and therefore affect) the story. In the story created for testing the system, the player assumes the role of a student who must complete a report (which is due in later that day), all the while trying to keep their flatmates happy. This project was also the subject of a paper I wrote for (and was accepted by) the 2014 GAMEON Conference.

'Pinball Phys-Zard' (PhysX Pinball Game) - Year Three

The first assignment for the Game Engines module asked us to create a pinball game made using PhysX and C++. In this game, the player has three balls to get the highest score they can, with points being awarded for hitting the blue 'bumpers' and yellow 'boosters'. Boosters award twice as many points as bumpers, but the ball will move faster after hitting them, making it more difficult to keep in play. Additionally, there is a score multiplier which increases the worth of each bumper and booster hit. This multiplier will increase by one for every ten bumpers hit, but resets when the ball is lost. The '\' and '/' keys control the flippers while the space bar adds power to the plunger (the red square).

'Petri' (Group Project) - Year Two

The Group Project module required each team of Games Computing students to create a game centred around 'Creatures'. Specifically, the creatures needed to use a kind of 'genetic code' to determine their appearance and behaviour, along with allowing the creature's to 'cross breed', with children gaining traits from their parents based on this code. For our game, the four-person team I was in decided to make a simulation-based game, in which the player creates a species of creature (from various body parts) at the start of the game. These creatures, along with other, randomly generated ones, then interact with each other, fighting and breeding with each other, with the player being able to observe how well their species survives in the environment. We divided the work amongst ourselves by separating the game into four major aspects: the 'genetic code', creature behaviour, art and assets, and miscellaneous features (e.g. menus). Each member worked on one aspect, with regular meetings allowing us to assess each other's work, collate it, and set targets for the following meeting. I developed the game's genetic code system, which could determine the creature's appearance by deciding which body parts it consisted of, as well as controlling its behaviour by specifying values for various statistics for the creature (such as their aggression). The genes took inspiration from actual genetics by using pairs of letters (alleles) to represent each trait. Some letters represented dominant traits, while others were recessive. Children took one letter from each pair from each parent to create their code, allowing them to inherit traits from their parents. Stat values were derived from the halfway point between the parents' values, with some random deviations to better simulate natural diversity.

OpenGL Amusement Park Scene - Year Two (video)

This was the first assignment for the Computer Graphics and Games Programming module. For this assignment, we were tasked with making an 'amusement park' scene using OpenGL. For my assignment, I decided to include three rides (a Helter Skelter, Teacups and a UFO ride) on a flat patch of land, surrounded by hilly/mountainous terrain. Each ride is divided into smaller objects and pieced together using the appropriate transformations. The terrain is generated using Sierpinski triangles and adjusting the heights of the inner vertices (i.e. those not on the edges of the largest/original triangle) to create mountains/hills. 16 right-angled triangles are used, creating the eight outer squares of a 3x3 grid to surround the park (the central square). Controls for manoeuvring around the scene were implemented for Wiimote controllers, in addition to standard keyboard and mouse controls.

'Math-teroids' (60-second ASCII Game) - Year One

The first assignment for the Introductory Games Studies module, another Gamemaker game. This time, it had to finish after 60 seconds and was to be ASCII themed (i.e. only ASCII characters could be used as sprites). The player controls a ship in an 'Asteroids'-style environment, but must shoot a number that correctly follows the instruction given at the bottom of the screen.