Sun & Sky - Summer 2016
Sun and Sky is an Android mobile game about making tactical decisions to navigate the terrain and combat the ever growing Fungal! The game has a range of different buildings that act as tools to solve the level's layout, dehydrating water to make new pathways, shielding vulnerable buildings and using the different turret's properties to reclaim each level from the Fungal that has infected it!
This is one of my most polished and solid games to date, with strongly positive responses from all the playtesters, though it is sorely lacking in sound effects and music.
Cyber Security research placement
and AAAI conference paper - 2016
From June to August I worked at Southampton University on a cyber security research project to investigate the effectiveness of data poisoning and the manipulation of standard outlier detection algorithms.
As part of this project I developed a framework for running outlier detection systems on streams of data from inputs, this was a highly modular system designed to be able to be extremely easily modified, including monitoring the traffic data from roads using Google's APIs.
I, along with my supervisor, then wrote a paper about the research we had done and submitted it to the AAAI conference in America.
Arbok Programming Language -
Working alongside another programmer, we built a Lexer,Parser and Interpreter for our own new programming language Arbok, which we wrote using OCaml. The language supported reading from files, arithmetic, splitting strings, variables, if statements, while loops and casting between ints and strings as well as printing out to a standard output. It was a very difficult project for us but I am very very pleased with the result.
Advert campaign data analytics
platform - Spring 2016
As part of a team project, I worked alongside four other people from various technical disciplines to develop a advert campaign analytics platform that allows for filtering by a wide range of properties, such as age, gender, context and so on. It also has support for a wide range of advert metrics to help quantify the success of the campaign between groups as well as interface customization and database support. I learned a lot by leading this project, about task distribution, skill evaluation and time management.
Comic update notification
server - November 2015
To learn the basics of Java RMI (Remote Method Invocation) I built a small publish-subscribe server which would, every 30 minutes, pull the HTML from the webpage of the web cartoon SaturdayMorningBreakfastCereal and pull out the information that has the number of the most recent comic, if it was higher than the most recent one I'd found, the server sends out a little notification to all the clients that has registered which tells them that a new comic is out and what number it is.
Axe of Kings - November 2015
This is the first mobile game I have developed, which I did using Unity. The game featured mobile-specific controls such as swiping as well as a wide variety of enemies to fight as you explored the dungeons and completed quests. This was a difficult project for me as I did not successfully control my scope which led to the project having a dissatisfying finish. I managed my time by maintaining feature lists that I wanted to implement, which helped me limit what I put into the game to a degree, but I did not decide up front what would define the game as finished, which I feel was a key mistake. However, I learned a lot in doing this project and I am proud to be able to show my game to people using my phone.
IPv6 versus IPv4 - performance and
adoption testing - November 2015
As part of my degree I tested how widely IPv6 has been adopted by the top website domains as well as how well using IPv6 performed compared to IPv4. This extended my ability to use batch scripting to collect data and gain insight into systems, it also improved my understanding of the current state of IPv6, which is an upcoming but very important technology.
Puzzle Slide - the procedural puzzle
game! - August 2015
I decided to make a game that was a little more relaxed and casual in it's core loop but to still provide a programming challenge. The solution was to make a puzzle game with generated puzzles, so that the player could keep playing forever at steadily increasing difficulty!
It proved to be surprisingly difficult to make a puzzle generation technique that didn't quickly cap out how much thought was required to solve them and to an extent all of the puzzles the game creates can be solved pretty quickly if you are good at the game (Which might not have been the case for human-crafted puzzles). This was partially solved by adding in extra modes such as a day/night mode and levels that made all of the blocks invisible until you slid into them.
Play link http://puu.sh/jW3i8/9d77b43865.swf
Android Studio &
Android.LocationManager - July
To help me get a stronger understanding of how to develop for android I made a small application in android studio, which I then built into an APK and ran on a few phones to test it out. The application makes use of the LocationManager in android studio to get the GPS data out of the device and then display information based on that data on the phone screen. This project gave me a much better understanding of how the pipeline worked and how to create apps for android devices, though the application was completed under an informal NDA.
Unity RollaBall app - July 2015
As part of my process for learning unity I built a small application that made use of the physics system that comes as part of unity. The player can roll a ball around a small area which has a bit of slide to it to provide some challenge to moving about the various obstacles, the player can also pick up some animated cube collectibles which, once all are collected, win the game. This was a fairly simple app to make but helped me get a handle on various features of unity such as the physics system, scripts, materials and how to navigate around a unity scene.
AI portfolio project - July 2015
This is a project designed to put a wide range of coding and AI examples into one solid and interactive project. The core idea of this project is a top-down arena shooter in which the player is matched up against an advanced AI which considers many factors and make smart decisions about how to move about the map and engage the player.
Included in this project at the present time are the following, though many more features are planned;
Java Client-Server program - May 2015
This was a long term project over the course of a month to put together a program in java that would model the system for a client-server system for an auctioning system.
The program was required to have an implementation-independent client and server that shared a messaging system, the server would handle validation requests and data retrieval and the client would provide an interface for the user to navigate the auction system and put new items up for sale.
For this project I built a system that could send a login request (Hashed) that would be validated against the system, looking for a matching pair of hashed Username and Password.
The system also was able to track running auctions and facilitate bids on them as well as notifying users when their items sold or timed out, as well as notifying users if they won an item.
The system also supported a persistent log of all actions taken by users and the winners of the items.
I also extended the system by adding a description search option, which would then attempt to correct the user's input if it found almost-matching words.
SnowFlake Software Codeoff (SQL & Weather APIs) - January 2015
This was a day-long project where we were challenged to create an application that would request fight plan data from a server across a network and then match that data up with weather data from an online API and produce an output that would allow a user to see which flights would experience potentially dangerous weather (Snow, storms ect).
In this project I went from having no experience with databases or APIs to having a functional app that met the requirements in the space of around 8 hours.
Anya's Quest: The Spider's Den - December 2014
Download Link - http://puu.sh/dDw1M/435d5b89f9.zip
This is the second expansion to the original title released in November 2013, the first being Anya's Quest:The Dragon's Lair, adding more items and new dungeons to the experience.
The expansion has added over 50 new items, from new versions of known weapons (Such as a rune broadsword) to a huge range of items with their own mechanics. To accompany these, four new enemies per dungeon have been added as well as a few to the original dungeons (For a total of ten.).
The focus of the game shifted in this expansion too, from a more casual focus towards an emphasis on harder dungeons and more challenging quests, which also involved a balancing of some of the original enemies to fit this theme.
There were some features that got cut from the game (Phase dungeons being one of them) but I'm planning down the line to try and include some when I port the game to an environment that supports the transparent textures this game really needs to shine.
The Crypt - November 2014
The crypt is a text based adventure game about exploring a dungeon underneath the prison where you were locked. By exploring through strange rooms and hidden secrets you may be able to find your way out.
This was a quick project, completed mostly in about 6 hours of coding but was a fun foray into how to present fun gameplay and an interesting story without using the graphics and interfaces I was used to. I also used it to learn Java and look into file reading and writing for loading new worlds from text files.
Squishy's Island - August 2014
Squishy's Island is a game where you play as a pirate octopus defending what's yours, your perls! In this game, I tried to focus on really strong visual feedback for everything going on. From changing eyes when characters stole perls or got hit, to coconuts bouncing off of surfaces.
I worked on this project over a few weeks, starting with a full set of animations for the octopus character and then building in the spring mechanics and making it so that crouching or slamming to the ground also interacted with the rest of the game, such as enemies or launch pads.
PyoPop remake - July 2014
Based on the old DS game which saw very limited attention, this game is both singeplayer or local multiplayer with two different modes (Classic and excavation), featuring a combo system and special rainbow pyo.
Colour Match Algorithm - June 2014
This project wasn't a game, but was probably one of my favorites to work on. I initially build a program where the AI would score for connecting four blocks of the same colour in a row and lose if it stacked them to the top.
The AI started off random (1-300pts) and then I tried to teach the AI how to play the game well - putting colours together, not breaking strings and other tactics (~1000pts) . Then I built a GeneticAlgorithm to play it and allowed it to experiment with the weightings for different parts of it's tactics. It blew me out of the water by improving the score it got to around 5000pts.
The genetic algorithm was fairly simple, there were a selection of agents that had a list of values for the weighting on each tactic, which they then played out and got a score for. Once they had been "Evaluated" a function was run on the pool of agents to generate a new agent and the process repeats indefinitely. If the game has less colours than columns (I.e. solvable trivially) the AI can play forever, otherwise it caps out it's score fairly high.
CaveClimbers - February 2014
Cave Climbers was a short game where you had to use your hammer to break apart the blocks in your way to reach the top of the cave, though the blocks you destroy you need to stand on to get to the next one!
This game was another that was very quickly turned around from concept to completion in a few days, based on the old IceClimbers game. I had fun experimenting with proceedural level generation that was vertical platforms rather than a landscape.
Genetic Algorithm - January 2014
This project was to create an RTS game played by AI agents who would then develop build orders and behaviors to master the game. For the most part I succeeded, it was an immensely complicated system and the AI did in fact learn to an extent. Unfortunately the system was not really as detailed as it really needed to be to fully allow for the agents to get a grasp on build orders and strategy.
In the end, it was a really enjoyable project that presented lots of challenges, as well as teaching more important lessons about planning and scope.
Anya's Quest - November 2013
Original Game - http://puu.sh/djbjh/7ad5b942da.zip
Dragon's Lair expansion - http://puu.sh/djfuz/7f256ab61e.zip
Anya's Quest was a massive RPG that featured turn based combat, a wide variety of enemies (11) and more items than you'd ever need (60+!). Spanning across three dungeons, the highlands, forest and volcano, the game provided a solid challenge to get through each area and actually complete the quest to get to the boss dragon at the end of the game.
This game was build in VisualStudio and as such had some serious limitations for what I was able to do (No support of transparent textures for one) but was one of the longest projects I've ever worked on, spanning the course of several months. This was also the first time I ventured out of vector graphics and drew all the sprites by hand, which yielded some really satisfying results!
For this game, I also did a lot of user testing and talking with players to find how they felt about various mechanics and the difficulty levels.
RougeLike - May 2013
This game was a dungeon explorer where I focused on the audio feedback, with sound effects for the enemies, the pickups and other effects. You could explore various floors, fight a variety of enemies (With proper collision so that they would swarm up around you instead of overlapping) as well as level up through a skill tree.
This project took just over a week to take from conception to completion and is admittedly lacking in some of the graphics, but I was more than happy with how the audio feedback section of the game worked out, which was the main focus of the project.
The Void - May 2013
The void is a game where you travel through space, meeting aggressive ships that try to take you out! You don't have direct control of your ship, so you have to redirect your resources into your fire rate, damage, shields, shield recovery, salvaging and repairing. Different enemies will present different challenges and demand intelligent reactions!
This game was built in seven days and provided a bit more of a foray into the world of classes and how they could be used to make games and programs easier to manage.
Playable Link - http://puu.sh/dj9nY/0d7f8b5887.swf
Terrain Generation - April 2013
To expand a previous project called Cities, I decided to try and generate some terrain. Using an isometric view I created a small landscape that created hills, rivers and trees. This was mostly using fairly simple techniques such a selecting a spot and raising the ground around it, as opposed to perlin noise or other map generation methods.
A* Pathfinding - May 2013
This tech demo was my first experience with pathfinding algorithms and as such it took quite a bit of effort to actually get working and I had to learn the theory before I could even begin. But I had fun extending it by showing the tiles it considered and getting the program to display the order of it's selections.
Tower Defence - March 2013
This game can be played at: http://puu.sh/2n81I
This is one of the first games that I really decided that I make sure I finished, so this time I started with a much more planned out scope of how many tower types I wanted, what they were, the enemies, all planned ahead.
This finished piece looks very similar to the initial build, but I've refined the idea closer and closer to what I had in my head, making good use of pages of hand written notes and planned out mechanics. The build I had labelled "finished" I then presented to other people for feedback, through an event called "Feedback Friday" where I learnt that the game didn't really present much of a challenge, making it not much of a game despite my hard work. This was accounted for, and difficulty modes added, the result is a reasonably challenging tower defence game that is most importantly, complete.
Features were refined, such as using the menu system (On the right) to present the player with a variety of choices that had an impact on the game, but not overwhelming them with choices to make. By only presenting the choices that were available and significant to what they were doing, this allowed the player a much more comfortable interaction with the game.
In my original designs, you refined which turret you wished to deploy, and then selected the mount to place the turret at. Through testing this turned out to not be very convenient, so instead it was changed that you what you had selected defined what options were presented, which is much more intuitive & worked a lot better.
Pushing myself to finish this game and have something I was proud to present to people showed me how much work there was to do once a game was feature complete. This was the beginning of my understanding that a game is not just it's mechanics, but also about the extra details & the polishing that's involved.
Sokoban - March 2013
This was a recreation of an old Japanese puzzle game where you have to push boxes around a maze in order to put them on specific tiles, while trying not to trap yourself!
This game presented a real challenge for me as I had to find a way to code the game such that I could build all the levels by hand and yet have the game recognise what I had built by dragging and dropping objects and then interpret that back into an actual game.
Gravity Simulation - February 2013
This is a quick tech demo of some physics principles that I was studying at the time. You can place new 'planets', modeled as particles, into the world and they interact, pulling on each other and spinning around in gravitational orbits.
Steampunk Turrets - January 2013
This was a fun take on the tower defense idea, by playing the game horizontally instead. Waves of steam punk flying enemies come at you and you must use a variety of turrets and upgrades to defend yourself!
This game was mainly made possible by the lessons learned in SpaceGame about how trigonometry worked. But it also featured a variety of interesting animated UI and modular turret graphics that allowed me to create adapting graphics, without needing one for each variation!
Space Game - March 2012
This was one of my very early games and though I enjoyed making it, it was never finished.
It did however, teach me a lot in hindsight about what makes a good game, as well as finishing one. I loved the top-down space games and had decided to make one, though I had no defined scope, gameplay or just about anything. The game had plenty of customisation, in terms of weapons, ship parts and how you played, but little of it actually mattered as the reason for getting these items simply wasn't there.
The art for this game wasn't awful, but it did leave a lot to be desired & using this as a learning experience has taught me a lot about making choices meaningful, refining my ideas and getting a good idea of what I want to achieve before I start working on it.
Stick Island - August 2010
Stick Island was a puzzle game where you had to press buttons and collect coins to advance through each level and is probably one of the biggest games I have created. With nearly 50 puzzles and 5 bonus levels hidden in it, it truly was a colossal game. Unfortunately it wasn't very mechanically complex and was fairly linear, but did provide a lot of play time for my siblings as they poked around the levels at the time.
SU Hamsters - January 2010
One of my first ventures into AI! In this game, all of the members of a forum board I visited where brought to life as small hamsters that you could interact with and feed! They would wander around and complain about being hungry, not much more, but it was an interesting experiment on building a game with an audience rather than for them.