a portfolio of videogame writings
I’m a self-taught programmer and game designer, having used Unity and C# for over two years. In this time I have designed, created and released two original games on iOS platforms, alongside having creating numerous other prototypes. I’m competent and comfortable with both the Unity API and writing C#.
Examples of my code can be found in my GitHub repositories here. Some examples of my work with accompanying descriptions are presented below.
Stroid is a retro-synth styled space shooter, released for iPhone in December 2014. Everything in the game was designed, created and programmed by me, from the scoring system and the artwork to the music and the tilt-n-tap controls.
Examples of code from this project:
I designed the ObjectMover class to be generic enough to control the movement of multiple objects in each Stroid level, including clouds and background planets. It sets each object’s velocity on creation and modifies this velocity based on the player ship’s boost state.
Ore is the currency of Stroid. It is collected through destroying hazards and by intercepting floating ore with your ship. The OreCollection class is attached to each Instantiated Ore object.
On collision with the Player object’s collider, this script adds the value of the collected ore to the total ore points, instantiates a number to appear as a GUI object in the scene at the position of the collision, instantiates a particle effect to signify the collection and finally destroys the gameobject. The AddOrePoints() method in this class is also called by other events in a scene that increase or decrease the total ore points.
Simple Pooler is my object pooling solution for Unity, designed to alleviate issues associated with the instantiation and destruction of objects during run-time. Through a custom editor it allows users to specify large numbers of various object types to be created on Awake. These objects can then be taken from the pool, used in the scene and returned back to the pool post-use for later re-use.
Frog Flop is a one-touch, distance platformer I created and released in early 2015. The design, programming and artwork were all solely created by me.
Some examples of code from this project:
The FrogJumper script controls the various states of the Frog object from the buildup to a jump, to landing on a platform and re-positioning the Frog to the appropriate rotation and position. It also controls the physics of the Frog’s jump and, through the use of events, signals these states of the Frog to numerous other classes during run time.
The CameraMover script controls the position of the camera object and the size of the camera screen depending upon the position of the Frog object. The camera’s x-axis position is synchoronised with the Frog object’s x-axis position once the frog has attached to its first platform. The size of the camera screen increases upon the Frog object reaching a y position greater than a threshold value, to give the effect of the camera zooming out to track the Frog.
In each of the possible camera states the CameraMover script modifies the x-position of the camera so that the Frog object remains a certain distance from the left hand side of the camera, ensuring that the player can view the avaliable platforms ahead of them.
My third-person Camera Controller is a generic solution to third-person camera controls in 3D games. It allows the user to switch between fixed-distance and non-fixed distance control, as well as providing a solution for geometry compensation using raycasts. I have also created a simple third person character controller for use in this demonstration.
Note – use of the camera controller requires an Xbox 360 controller-equivalent gamepad for input.
Procedural 2D Terrain Generation (WIP)
This angular, procedurally generated 2D terrain, is intended for a Pole-Vaulting based endless platformer.
Grid-based Snake Movement (WIP)
This project is based on an idea for a turn-based multiplayer game about two snakes trying to eat each other. Currently, I have the grid creation, a turn controller and snake movement programmed in C#: