We all have that one thing we have always wanted to do. Whether it’s to fly a plane, learn a new language or in my case – create a game. The thing about doing something new is that you never really know where to start and that was the first problem I encountered.
Starting Agent in September 2016, I never expected to be doing what I do today. I expected to be a developer working on websites and applications with the odd bit of design work now and again, but then I was give my dream opportunity of creating a game.
This was just three months into my role at Agent. With limited experience in creating games, but with a whole lot of coding knowledge, I was asked to get the ball rolling and begin to think about building an app for our Better by Bus campaign.
Being who I am, I always like to impress and put 110% into everything I do. So, when I was just asked to download and explore a new software called Unity, I was keen to get going. Before I hit download, I asked what it was going to be used for, what type of game they had in mind and from that I decided to start developing the game.
Though I had not been tasked with making the game and the fact I was just meant to be looking at the software, I couldn’t help but dive straight in and start to create it. I began looking up blogs and pages of documents on how to start of building a game and then realised I would need a to build a list of everything I wanted the game to do.
So, I took a few ideas from colleagues and inspiration from games I had played in the past and noted down a list of functions I wanted the game to be able to do. From there I worked out what would be easiest to complete first.
Starting with the most basic functions, I read up documentation on functions which allowed for objects to move, after some research I could get an object moving in one direction at a set speed. Working off that I managed to manipulate users input to change the course of direction of the object, so if I pushed the right arrow the object would slide right.
Thinking in a linear way, I thought about what would come next. I figured now I had a moving player that I would need a scene or road for the player to follow. Might sound as simple as adding in a plane panel that’s X amount of metres long, but after some time the player would hit the end.
So, I had to figure out a way of cloning a road after each other so the road would be endless. I had done some research into cloning algorithms but I’ll admit I had never created one as complex as this would be. First, I needed to make a prefabricated road/scene, then take that prefab and make a list of clones, separating them by how long they are and generating them in front of each other to make an endless roadway.
Once the player object has passed a road completely, the algorithm would call a function which then deletes the last road in the list to save on performance. Not really thinking about it, the script I had written can work across the board for various aspects within the game. I figured this out later in the development when implementing obstacles.
Now I had a player moving forward and sliding side to side on player request with an endless road/scene, I needed to add in some sort of difficulty that wasn’t an object. I decided to increase the speed of the object over a period of time with the intention that in the future it would make it harder to dodge on coming objects.
The previous script I had written with the algorithm in would save me a lot of time for three major steps in the game. I now decided to make up some obstacles that would go in the opposite direction to the player; I figured it would need to be randomly generated, and a constant flow of objects generated in front of the player. From there, I edited the algorithmI I had created then used that same script for Fuel and Boost pickup objects I would add in later.
The core game was working, with only squares and rectangles I had created an endless runner styled game, from no experience and no former knowledge of making games. It wasn’t as visually appealing though because it just didn’t have that feel that it was a working game.
This is where Unity was helpful as it has an asset store with hundreds upon hundreds of free and paid for assets that anyone can use for their projects, so after a brief time searching I found a basic looking bus, some houses and trees and some roads, lamps and park assets. I replaced my existing objects with these new assets I had downloaded and that’s when I could really tell the game was coming together.
Now it was time to work on the user interaction into the game. This was vital and would allow the user to have a home screen, buy playable characters, upgrade them and have an area to play the game from. Using Unity’s easy to use UI system I planned out how I wanted the game GUI to look.
I then started using Unity’s basic images that come with the software and named my elements. Once I was happy with that I then passed over the layout to Jon from our creative team who worked his magic in making it come to life. Slowly but surely the game was really coming together and looking like a rather professional game – especially for someone who has never developed a game before.
After some finishing touches like adding in a soundtrack and some minor bug fixes the first release of the game was ready. It was a fully functional game that a user can interact with, buy buses and upgrade them as well as play as those buses they just bought.
Still to this day I wouldn’t ever think I could create a game, but I now can’t wait to make more.
Fancy playing Ollie’s Fare? You can download it for free on iOS and Android. Don’t forget to give Better by Bus a follow on Twitter, Facebook and Instagram to stay up-to-date with the campaign and any Ollie’s Fare updates. If that wasn’t enough, check out the Better by Bus website.
Ollie’s Fare in action at The Big Bang North West!