Endless Arrows

January 2017 – February 2017
Developer: Gold Plate Games
Platform: Android, iOS
Engine: Unity
Language: C#
Role: Programmer

Skills Demonstrated:

  • Level generation using procedural generation with seeds. Each level in Endless Arrows is generated by a system I created that uses the level number as a seed. It simply takes the seed and builds the level with the rules I have set out. The game is advertised to have infinite levels, but the truth is the final level is number 2,147,483,647, the maximum size of a signed int32. No one is going to get remotely close to that level! This means I didn’t have to design and hand craft each level.
  • Google Play Services and Game Center. Leaderboards and achievements can be earned by players through each platforms implementation.
  • Google Admob Mediation. Banner, interstitial and reward based advertisements are mediated by Admob, with Admob, Chartboost and Unity Ads implemented as network platforms.
  • Analytics. I get player stats for each level they play, so I can see which levels take the longest, which levels have the most deaths, which levels are completed quickly etc.
  • Solo. I created and published the game on my own. Music and sound was acquired from the Unity Asset Store.

Endless Arrows is a puzzle game with a minimalist theme. The environment is made of cubes, including the player. The goal of each level is to guide the player’s cube to the portal. The cube can move only in 4 directions and is placed on a grid of cubes that have arrows on them. The arrows are set to point in a random direction.
The player’s cube moves constantly in one direction, rolling along an axis of the grid, until the player taps to change it’s direction. If the player taps, the cube will take on the direction of whatever arrow it is currently on. By manipulating the direction of the cube, the player may find a path of arrows that lead it to the portal. (Hint: there’s always at least one path.) Although it’s hard to describe the gameplay in words, it’s very easy to understand it visually.



Ready, Aim, Splat!

November 2016 – December 2016
Website: readyaimsplat.com
Developer: Blue Volcano
Platform: Steam VR, Oculus Rift
Engine: Unity
Language: C#
Role: Junior Programmer

Skills Demonstrated:

  • Created a control system that worked with the pre-existing HTC Vive code and added code for the Oculus Rift, including support for the Xbox One controller and the new Oculus Touch controllers.
  • Created a robust system for unlocking the many different weapon bonuses, camera effects, etc. that the player could earn.
  • Created a UI that would allow the player to unlock, enable and disable the many unlockable items.

Ready, Aim, Splat! is a VR game where the player has a slingshot in their hands and uses the hand controllers to sling vegetables and many power ups at incoming zombies. It has a cartoon art style that doesn’t take away from the VR experience at all. It’s great fun.

The game was already playable when I was brought onto the project, but it had many features to come before it was ready for release. I was first tasked with getting the game working with the Oculus Rift and its new Touch controllers. For the camera rigs, I simply put both into each scene and only activated the one for the active platform. I also added haptic feedback (vibration) for the Touch Controllers. The Touch controllers use a more advanced API than the Vive and Xbox One for haptic feedback, allowing you to use sound files so that the vibration intensity is based off the sound data. Awesome!

When I joined, there were power ups in the game but they weren’t managed and appeared at random. I created an unlock system that allowed the player to spend the points they earned on whatever unlock they liked. Included in this system was a rarity factor, since we created a bonus stage for the player to get an unlock for free. The rarities were based on a weight system, which is the most common way to deal with multiple items (with different rarities values) at once.

Once this unlock system was in place, we needed a way for the player to manage their unlocks and unlock more items when they had enough points. I created a UI that displayed all the unlocks over different panels, ranging between perks, camera effects, allies and enemies. Some unlocks had special conditions, for example: perks could only have 2 activated at a time, so attempting to enable a third would fail if the player tried to do so. Another example, camera effects could only have on activated at a time, so that panel worked differently as well, but they all tied into the one system.



Say Again?

March 2015 – November 2016
Developer: Gold Plate Games
Platform: Android, iOS
Engine: Unity
Language: C#, PHP, SQL
Role: Front and back end programming, Game design
Team: Jonathon Anslow – Programming, Aedan Chaseling – Art

Skills Demonstrated:

  • Front end: design and programming.
  • Back end: extending Google Cloud.
  • Publishing: Google Play and iTunes Connect.
  • Managing colleagues and contractors.
  • Google Play Services and Game Center. Leaderboards and achievements can be earned by players through each platforms implementation.
  • Supersonic (Ironforge) Ad Mediation. Interstitial and reward based advertisements are mediated by Supersonic, with Admob, Chartboost, Supersonic and Unity Ads implemented as network platforms.
  • Analytics. We can see what players’ favourite choices are, what game mode is played the most etc.

Say Again? is the debut game of the company my team founded – Gold Plate Games. The goal is to record a phrase into your phone and apply a voice morph to the recording, which is sent to someone else. The recipient has to interpret the recording, record what they think they heard, morph it and send it onto someone else. Once all the players have submitted a recording, all the recordings are played back to each player, showing how different and mutated the original phrase has become.

I developed the prototype that was play tested numerous times at public functions. At every test we had great, funny responses from players so we decided to pursue the game as our first commercial product. Since then we completely redesigned the code base and we’ve hired a Google Cloud Server so that we can take the game online, so the game would operate similar to an app like Snapchat, including the features of having in game friends and Facebook integration.

The game has taken much longer to develop than we initially thought – the gameplay is very simple but the back end is complicated and we’re doing things we’ve never done before such as a hash + salt password system, database transactions and accounting for SQL injection.
We have user accounts that hold have their own usernames, display names and all the data for what they’ve unlocked in the game. We’ve created a shop for upgrades to the voice morphs, as well as in-app purchases. Video ads are integrated into the game as well.
There’s a system for adding friends and playing with them, you can even play against random players.

I have worked on the front end, extending Unity’s UI to scroll between windows, drag and drop items, animate sliders. I’m also heading the overall design and layouts of everything that’s visible in the game. Since Jonathon moved on from the team, I have taken over his role on the backed. I have had to learn PHP on the fly, as well as SQL for database interactions. Not only have I learned new languages, I’ve had to adapt to industry standards within the back end, such as PDO, SQL injection and database transactions.



Dragon’s Domain


July – November 2014
Developer: Overcharge Studios (student group)
Platform: PC
Engine: Unity
Language: C#
Team: Jake Thomas, Platon Pavlov – Programming;
Jack Findlay, Shakari Chulyin, Timothy Nielson – Art;
Joshua Benz – Music; Kyle Fisher – SFX.

Download: DragonsDomainGoldBuildPC.zip

I was the team leader of our group of 6 and unofficially the programming lead as well. Jake and Platon had barely touched Unity before so during our prototyping stages I was teaching them how to use it. This game was one of the prototypes we made, we also created a FPS and a stealth prototype. We went with this game because we thought it would be the most fun and unique of the prototypes we created.

I created the first controller for the dragon and Jake took over the controller as I moved onto other things such as investigating Unity’s networking API and creating the main menu. We didn’t end up using any of the networking systems we created and stuck to a single player game.

The main menu required the usual basic functions like the play and quit buttons. We added in a tutorial so that was added to the menu. We also had a music composer from another college (AIM) create music for the project, so I added this to the menu too. I had to keep in contact with not only just the composer but also a sound effects creator from AIM as well. Their efforts definitely increased the production quality of the game, since we were able to work with them to get the sounds that we required, instead of downloading random assets off the internet.

Lastly, Shakari made an opening credits video and title screen so I added these to only be shown on opening of the game and transition into the menu.

On top of coding for the game I had to create programmer schedules and an overall schedule for the team, among other documentation that was required for the submissions.

Comments are closed