Unity3D Game Prototype: Shooting Plane
This post is part of the Into The Past series. A list of posts written long after they happened as part of an attempt to look back at some earlier creations and thoughts I had along the way. This post was written July 2024.
Intro #
Sometimes you start working on something out of curiosity, it starts developing into an actual playable demo and then life comes at you with distractions. Only to realise later on, that picking up where left off is no longer feasible. This is the case with the Shooting Plane concept game.
The prototype can still be found on Google Drive and can be installed and run on an Android device. The prototype however is built for the 2019 Android API, and will present a number of compatibility warnings during install. The game is still playable regardless, but a video preview is also available to demo the game.
Preview #
Game implementation #
The game is fairly simple with a plane falling downwards with the default 9.8 gravitational pull from Unity using a mass of 1. Walls then appear outside the camera area and are moved towards the left side of the screen. Along with the parallax background of clouds moving to the left, they both create the illusion of the player flying towards the right.
Each wall consists of 10 blocks that have an increasing number of life points ranging from low, mid and high value. The wall will always have 3 adjacent blocks that have a low amount of life points, and this "weak spot" will move 1-3 blocks up or down at random. A subtle way to direct the player and give them a fair chance at always breaking down the wall.
A block's life point is calculated at random between a minimum and a maximum value. Both values increase whenever a new wall is created in order to progress the difficulty as the player moves ahead in the game. This increase in value is calculated using the formula below:
f(x) = A * (1 + Y)^x + (B * x)
Where A
is the starting life point value, Y
is a factor to determine the "speed" with which the value increases and B
is a fixed step increment.
Resulting in a progression where we see the distance between minimum (green) and maximum (red) life point value increasing progressively the further in the game a player can go:
Controlled randomisation #
Random events are fun and enganging for the player, and we know from a thriving gambling industry that random chance speaks to the human nature at many levels such as dopamine reward release, the anticipation of that dopamine reward and the willingness to engage in risky behaviour if the perceived gains are valuable enough.
I am however of the strong opinion that controlled randomisation is even more engaging and a very powerful tool to keep the player entertained and immersed for a longer duration. Knowing in advance that the player will experience a dopamine reward from receiving some randomely awarded prize just at the time when they need it the most, means that we can also nudge the odds in favour of the player to allow them that experience more often that with only pure luck.
A simple way to implement this kind of mechanic in Shooting Plane is by nudging the chance of receiving either the more damage upgrade or the faster shooting upgrade. There is a 50-50 chance that any new upgrade which appears will be either of these types. However, the game is more difficult for the player if the they collect only one type of upgrades.
The weight distribution between each upgrade shifts depending on how many of each type was previously collected in a game round. This means the chances are always moving towards a 50-50 distribution of upgrades at any point in time.
Effectively what this does is to promote more gameplay scenarios like when a player has collected 2-3 faster shooting upgrades in the beginning of the game and start to feel the danger and difficulty of breaking through the next walls, and just as the game is becoming too difficult to proceed they see the damage upgrade and will jump for it even if that means risking a move outside the "weak spot" of the wall.
The payoff here for the player is huge and is a situation that we can easily manifacture and nudge the gameplay to provide more often.