Christopher Ball

Game Programmer

About Me

Profile pic

I'm a freelance game programmer living in Cornwall. I hold a City & Guilds Level 7 Diploma in Game Development for Computer Games. I have experience developing games with Unity and Unreal using C# and C++. I create games that have polish, engross the player and inspire other developers. When I'm not programming games you'll find me producing electronic music, painting miniatures or walking the Cornish coastline.


Hired by Strange Games Studios to add extra features and bug fixes for their VR flight simulator, RC Airplane Challenge.

I was lucky for Incredible Two Studios LLC to approach me to create a prototype for one of my favourite game genres, the hack 'n' slash/beat 'em up.
Following a specific design document, I built the prototype in Unity with placeholder assets and added my own slash particles and slow down effect to give the combat a better feel.

Working with RedZone Studios LLC, I was tasked to improve and fix several features and bugs with Release 4. Some improvements I implemented include, added AI shooting decision when the shot clock is almost up, making sure the swipe action only checks collisions with hoop hand, better blocking, better feeling dunks and with the ball slamming down, some dunks can miss and will bounce off the rim and better passing that is faster and more accurate. I also added a foul feature to discourage spamming swipe so that inbounding calls are made and two points rewarded for every four fouls the opposition make. The bugs were related to various out of bounds issues, where out of bounds was either not called correctly or missed completely.

Steam Page

Lotus Reverie is a visual novel developed by Keinart Lobre. Taking on a project that had already started, my task was to improve the 2D, turn based, battle system and write complex AI, giving each level unique enemies and map gimmicks. The player has lots of fighting styles and magic abilities to choose from, allowing them to approach each level from many angles. I also helped expand the visual novel engine to allow my client to tell their story exactly how they invisioned.

"Since the very beginning communication was quick and professional. He managed to take the project despite being faulty and with many issues, understand what I wanted to accomplish, and then fix it and improve it faster than I ever expected. I've never met a professional with a better work ethic and I would love to work with him again in the future." Keinart Lobre Steam page
Ink Sorcerer

I started the development of 'Ink Sorcerer' from scratch using UE4 and C++. 'Ink Sorcerer' is a 3rd person action-adventure where the character uses magic fireballs to attack the enemies. I implemented projectile collisions, HP and magic pickups and the enemy AI. The AI patrols a set of waypoints until they detect the player. Once the player has been detected the enemy will seek them out and attack when within range.

For my first commercial project, I was hired to create a prototype in Unity for an 'anti-runner' game where the goal, instead of controlling the runner, is to prevent the hero from succeeding by using various weapons and obstacles. The project was built from scratch and most of the assets in the example video are placeholders.

Steam Page

Maze Roller was my final assignment for my City & Guilds Diploma. It was made using C++ and the DirectX API. It demonstrates advanced AI using A* pathfinding and attack behaviours. I used a 3rd person camera and added a collision rebound effect whenever the player hits an enemy object. I created a health bar with lives in an onscreen UI. The 3D graphics were programmed using HLSL, displaying diffuse, ambient and specular lighting effects using the Blinn-Phong technique. I included a post processing blur effect whenever the player takes damage. I generated particle effects for sparks, explosions, fire and smoke. Shadow mapping was used for the shadows.

Source Code

Deep Sea Diver was an assignment for my City & Guilds Diploma. I was given the source code for a working game and had to add more features to improve it. I added a demo mode, where I programmed the player character to act with artificial intelligence. I included a mission brief to explain how to play before the game starts. A high score table can be displayed from the menu and is updated when the player reaches a new high score. I updated the enemy with new behavior, such as a squid attack and fleeing, following and roaming behaviours. There is an added 'hard mode', increasing the difficulty level. To balance the game, the player has access to collectable power ups. These include heat-seeking missiles, smart lock missiles, rapid fire, three-way harpoon, explosive harpoons and an invulnerability shield.

Jungle Warrior was made with Unity. I was given a game design document with the requirements to produce the game for a City & Guilds assignment. The player is timed on each level and given a score depending on how quickly they finish and how many enemies are killed on the way. The music track can be skipped with the in-game menu and the starting level can be chosen from the main menu. The enemy AI follow waypoints using a nav mesh and start to track and then shoot at the player when they are within a certain range. There are health and ammo pick-ups for the player to find.


Pixel Pairs is a personal project I made in my own spare time. I love pixel art and retro gaming so I thought it would be cool to include some old game characters on the cards in a card matching game. The cards are randomly placed in new positions every time a new game is played. When a match is found more time is added to the timer, if the timer runs out before all the matches are found then it's game over.

Source Code

This maze game, Robot Attack, was my first assignment for the City & Guilds Diploma. It is a mobile game in early development, hence the large on-screen UI to represent touch controls. The enemy robot moves in random directions and emits a beeping noise. When the enemy has line of sight of the player it will move towards the player. If the enemy can no longer see the player because they have moved around a corner, the enemy will move to the player's last known tracking position. The player can only shoot when the gun has charged but there are some power-ups to help, such as quicker charge-up and double damage.

Source Code


download cv