Matthew Sawrey

a portfolio of videogame writings

Game Dev Portfolio

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.

You can find out more about Stroid on the game’s press page, here.

Examples of code from this project:

Object Mover

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.

Code available on github.

Ore Collection

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.

Code available on github.

Simple Pooler

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.


The full Simple Pooler tool can be downloaded from this github repository.

Frog Flop

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.

You can find out more about Frog Flop on the game’s press page, here.

Some examples of code from this project:

Frog Jumper

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.

Code available on github.

Camera Mover

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.

Code available on github.

Third-Person Player and Camera Controller

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.

Third Person Controller

The Third-Person Camera Controller project can be downloaded here.

Note – use of the camera controller requires an Xbox 360 controller-equivalent gamepad for input.

Other Prototypes

Procedural 2D Terrain Generation (WIP)

This angular, procedurally generated 2D terrain, is intended for a Pole-Vaulting based endless platformer.

The in-progress project can be downloaded here.

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#:

GridCreator code available on github.

SnakeMovement code available on github.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: