Galactic Delivery Dash

About the Project

Galactic Delivery Dash was one of the first projects I ever started on Unity, especially without a tutorial to hold my hand, fix my problems and make my decisions. That is why at it’s core, it is quite simple, however its the attention to detail, the exciting new features, the unique movement system (that was designed with a AAA developer), the shop and even just the amount of time spent testing and polishing that make it not only special but fun. The concept of the game was that you, the player, are a space post courier who is paid to collect and delivery packages between different planets, however there is an organisation of space pirates that will work tirelessly to incapacitate your ship and steal these packages. Also, I’d like to add that all of the art in the game was made by me which is a big personal achievement considering my art capabilities.

Development Overview

Movement

Whilst at a college run portfolio review session, I got the opportunity to speak with a AAA game designer from D3T studios who gave me some great ideas, the biggest of which was a new movement system. When I showed him the game, it used a virtual joystick to control the ship however it was arguably clunky and undeniably intrusive. He then gave me a great piece of advise that a key factor of a fun game, is making the simplest things the most fun and that meant making it fun for the player to just move the ship, the rest would just be a bonus added on. To achieve this I got the world position of the players tap, edited the z value and ran a subroutine that calculated the rotation to apply to the player ship. I also compared the time between every tap and if it was below a certain threshold ran another subroutine that edits the ships velocity to go in that direction until changed or obstructed. Finally I played a particle effect and a sound effect to improve the game’s UX. This system allows the player lots of freedom in how they interact with their ship and also allows them to fully utilise all the weapons on their ship. This makes it accessible for players who want to casually go from a to b but also give a skill gap for others to learn, to out manoeuvre the pirates.

Rewarded Ads

Another huge feature that I added to the game as a finishing touch was rewarded ads. A strong theme throughout this project has been learning new skills and trying to integrate them into this project to test my understanding, and ads were something I had never tried before. I had heard of Unity Ads so went to check their documentation however that told me that it was being made obsolete by Levelplay which I then decided to move forwards with. Picking a service was quite easy for me as I didn’t really care that much about the revenue potential and instead cared a lot more about which would allow me to learn a lot without it being to overwhelming as to push me to give up. To maximise user experience the only ads in the game are rewarded ads that the player can choose to watch for either 100 in game credits, or to fix your ship and carry on playing once per game if the pirates incapacitate your ship. This meant I had to create a system to differentiate the reward granted to the player depending on the context of when the ad was played, executed using a switch case statement, granting the corresponding reward. In the revive case, in theory its very simple to just reset the health and resume however there’s a decent chance the player died to pirates that are all still surrounding the ship, which you have to get rid of, and you have to take the players upgrades into account when resetting the health; and then fix the inevitably broken health regen system.

Cosmetic System

After testing the game for a while I decided that although it had ship upgrades for players to work towards and spend their credits on, it didn’t really have any long term goals to keep the player-base engaged for longer. That’s when I came up with the idea to introduce different ships for the player to unlock, costing much more than upgrades and providing long term goals. Therefore whilst the most expensive upgrade is 10k, that’s the price of the cheapest ship and the most expensive is 50k, keeping players hooked and having fun for longer. To achieve this I made a function to handle the unlocking of new skins and another function that handles the equipping of other owned skins. These functions take important values as parameters which allows me to reuse the same functions for every skin and tidies up the code making it easy to read and understand. They also interact with my currency manager and heavily rely on Unity’s PlayerPrefs, which allows me to save the players progress between sessions. The unlock function first takes the credits and hides the price on the button, and then updates the PlayerPrefs and uses the argument provided by the buttons function to call the correct equip function. That function then provides the correct arguments for the equip handling function which updates the PlayerPrefs again, this time for which is equipped not unlocked, and updates all the UI in the store to correctly display which skins are unlocked and equipped.