Spriteship is a combat prototype for a 2D adventure game. The player controls the captain of their ship, running between the ammo tubes, the sensors, and the cannons in a bid to defeat the other ship. Each type of ammo has different properties, and can be fired out in one of two 'cannon lanes', allowing the player to block enemy shots and think strategically about how they want to fire.
Unreal Engine 4
Designer & Programmer
Spriteship was rapidly produced for a prototyping course, one where we were often challenged to try and recreate systems from other games. In this project, I tried to develop the tank combat in the lesser played Dragon Quest Heroes: Rocket Slime one of my all time favorite games. I recruited an animator and an illustrator to help me with visuals as well, as a means of furthering my understanding of asset implementation.
The most complex system I needed to design was the ammo system. I needed a means of storying a series of properties on an object, one that would exist in two different states of play. For this I created a type of scriptable object, allowing you to create a new ammo type out of a class and give it a number of variables, as well as its own sprite. Finding the right way to store that data, and when and where to read it out was a bit of a challenge, but satisfying when I got it down.
Since I had an animator who was willing to draw for me, I had to make sure to display his animations well. The player kit would need to handle all animations, interactions such as viewing the sensors, picking up ammo, and of course, firing from the cannons. Most of it was trivial, if not a bit laborious (setting up all those animations), but the one true challenge ended up being the carrying system. For it to be proper, the player could only carry three pieces ontop of them. Again, I got to flex some data management muscles and was able to replicate the Rocket Slime carrying system pretty well!
There are two cannons on the ship, one that fires at an a arc and one that fires purely horizontally. Objects would have to move along this trajectory and be able to translate their various variables into tangible effects, such as speed, amount of collisions before its knocked out of the sky, and of course damage. Whenever you loaded an object into the cannon, it would instantiate the 'live' version of that object in the appropriate spot, with collisions detected by physics interactions. This was a deceptively complex task due to its mathematical nature, but was very satisfying when I got to see it in motion.
Spriteship was a test of my abilities to reconstruct systems from another game, and on a very basic level I was able to accomplish it. All the elements of tank combat at are there, unnuanced, and unrefined, but proof that I could build it. Looking back on it a year later, I have a different view though. I've learned that the raw system isn't nearly as impressive as the fine tuning, and feedback systems that uphold that game. Rocket Slime is bursting in flavor, with how their physics works, the FX and sounds when you lift something onto your back, drawing out the satisfaction of loading the cannon. At the time, I failed to see them and their importance, though I'll admit, it was a race against time to even get the basic systems done!