Final Build - Documentation Devlog
Comparison between Concept Document and Final Game
A lot of changes have been made to the game since the original concept document was created. I'm sure a lot of first-time game developers are guilty of this, but my original concept for the game was far too ambitious.
First of all, I initially wanted my game to have an arena mode in the game which would allow for 2-4 player PvP game. While I still think that this would be a cool feature to implement, there just was not enough time, especially considering how the tutorial only got completed in these last 2 weeks, and the endless mode is completely new in this last week. However, I have created the player object in such a way that there could be multiple players in a scene being controlled by different methods, if I had the time to implement this.
I also had the grand idea of making this game into a complete Metroidvania, which looking back on how I progressed throughout the weeks just seems like a ludicrous idea. However, I still think that this would be a cool idea to do in the future if I ever update this project.
Another feature that I didn't really mention in my original design document, but had thought about, was having many different abilities of each type. For example, there would be a shield ability that instead of reflecting the projectiles like the current shield does, it would destroy the enemy projectiles and recover a small amount of juice for the player. The player would be able to pick and choose whichever version of each ability they preferred, allowing for more varied gameplay. Having alternate abilities like this is something that I still think would be a cool addition to the game, and I have "future-proofed" the game if I were to add this feature by having a variable on the player which determines which version of an ability will be used.
Another cut idea was different types of enemies. This would include enemies that could fly or create their own shields, as well as enemies that are just stronger versions of other enemies. This is something that would add more depth to the gameplay and make it more enjoyable but I just did not get around to implementing it in the game.
Overall, the main idea of what I wanted to create has stayed the same, even though many features that I wanted to add did not make it into the final product.
Summary of Feedback from Week 12 Testing Session
As mentioned in the Week 12 devlog, I didn't really have a good form made up for receiving qualitative feedback, and as such I didn't receive a lot of specific feedback on how to improve general areas of my game. However, there was still a decent amount of feedback which gave me enough information on areas to improve.
One responder noted that the use of the middle mouse button to recharge the player's juice was not the best control, as a lot of browsers will often hijack this control for auto-scrolling. Apart from already having an alternative control in 3 on the keyboard, I didn't think that there was anything that I could do about this. However, after changing the viewport dimensions for the game on itch.io, this seems to have been resolved (at least for me). Another issue stemming from this that someone pointed out was that the player's platforms were not appearing where they were meant to, but the auto-scrolling fix solved this as well.
A piece of feedback that many people mentioned was the inability to know how much "juice" the player had left for their abilities. This has been remedied with the addition of the particles that spawn when recharging, to better demonstrate that an action is occurring, as well as a number in the user interface directly showing the player's remaining "juice".
Another piece of feedback was that the controls were not intuitive enough. By that point in development, I did not have a tutorial in the game, and as such the only way to know the controls was to look in the description box below the game on itch.io. However, there is now a tutorial in the game which I think sufficiently explains the abilities to the player, but there is also room for improvement in the delivery of the controls.
List of Assets with Short Descriptions
Art
ASSET NAME | DESCRIPTION |
health | This png is used in the UI of the game and goes behind the player's health number. |
particle | This is a white square which is used as the sprite for the particles. |
playerIdle | This is a sprite-sheet for an 8 frame animation, as the player was initially going to have animations based off of what action they were currently doing. While this system didn't make it into the final game, the first sprite in this sprite-sheet is what the player and enemies use as their sprite. |
power | This png is used in the UI of the game and goes behind the player's juice number. |
projectileNew | This is a white square which is used as the sprite for the player and enemies standard attacks. |
score | This png is used in the UI of the game and goes behind the player's score number. |
standardPlatform | This is a white rectangle which is used as the sprite for the player's platform ability. |
standardShield | This is a white rectangle which is used as the sprite for the player's shield ability. |
standardUltimate | This is a sprite-sheet for the four different components of the player's ultimate ground-spike ability. |
terrainTilemap | This is a tile map of the original terrain for the game, which would have had different sprites for surfaces/corners/other pieces of terrain. This is still used in the game but all the sprites in this sprite-sheet are now the same colour and indistinguishable from each other. |
Physics Materials
ASSET NAME | DESCRIPTION |
PlayerPhysics | This physics material is used on the player's standard collider, and is what handles the physics of moving along the ground. It has a friction value of 0.85 and a bounciness value of 0. |
WallPhysics | This physics material is used on the player's other collider which is wider than their standard one and thus is the only collider which will touch the walls. It has a friction value of 0 and a bounciness value of 0, meaning the player will slide down walls instead of stick to them. |
Prefabs
ASSET NAME | DESCRIPTION |
BasicPlayerProjectile | A prefab of the player's projectile attack. |
BasicPlayerShield | A prefab of the player's shield ability. |
BasicPlayerUltimate | A prefab of the base of the player's ultimate ground-spike ability. |
BasicPlayerUtility | A prefab of the player's platform ability. |
EnemyBullet | A prefab of the enemies' projectile attack. |
Particle | A prefab of a particle which stays in place. |
ParticleFalling | A prefab of a particle which has gravity applied to it. |
ParticlePlayer | A prefab of a particle which moves towards the player's position. |
ParticlePortal | A prefab of a particle which moves towards a portal's position. |
ParticlePortalBig | A prefab of a larger particle which moves towards a portal's position. |
Player | A prefab of the player character. |
Portal | A prefab of the portal objects. |
Respawner | A prefab of an empty object with a collider which resets the player's position somewhere else on collision. |
StandardEnemy | A prefab of the enemies in the game. |
TutorialTextChanger | A prefab of an empty object with a collider which can enable or disable an object in the game world. |
ultPart2 | A prefab of the second part of the player's ultimate ability. |
ultPart3 | A prefab of the third part of the player's ultimate ability. |
ultPart4 | A prefab of the final part of the player's ultimate ability. |
Scenes
ASSET NAME | DESCRIPTION |
Endless | The scene where enemies will continue to spawn at portals placed in the game world until the player dies. |
MainMenu | The menu scene, featuring the title of the game, buttons to access the two game modes, and a portal for aesthetics in the background. |
Tutorial | The scene where the player can get to learn the controls of the game and how the player moves around their environment. |
Scripts
ASSET NAME | DESCRIPTION |
DamageEnemy | This script is attached to the player's projectiles and allows them to collide with and damage enemies. |
DamagePlayer | This script is attached to the enemies' projectiles and allows them to collide with and damage the player. |
DestroyAfterTime | Taken from tutorial work, this script takes a time in seconds and destroys the game object it is attached to after that amount of time. |
DestroyOnCollision | Taken from tutorial work and modified, the original script would destroy the game object it was attached to after colliding with an object with a specific tag. The modified version now has a degree of lenience, meaning it will not be instantly destroyed upon collision, but instead will start a timer and check again once the timer is up. If both times it is colliding with the other object, it will be destroyed. |
FadeIn | Changes the alpha value of an objects SpriteRenderer in increments to make the object fade into view. |
FadeOut | Changes the alpha value of an objects SpriteRenderer in increments to make the object fade out of view. |
ParticleChangeColour | This script is attached to the various particle objects in the game. Which layer the particle is on determines how much the colour will change every frame. |
ParticleMoveToObject | Particles which are a part of the "portals" have this script attached to them, as it allows them to move towards the centre of the object at chosen speed. |
ParticleMoveToPlayer | Particles which are a part of the player's recharge ability have this script attached to them, as it allows them to move towards the centre of the player at chosen speed. |
PlayerDie | Disables the player object when their health is at or below 0. |
PlayerMovement | Handles the player character's movement, including their horizontal movement, jumping, and checking if the player is grounded. |
PlayerStandardAttack | Allows the player to spawn a projectile which is travelling in the direction of their mouse pointer while holding down the left mouse button or 1 on the keyboard. |
PlayerStandardRecharge | Recharges the player's "juice" while holding down the middle mouse button or 3 on the keyboard. Also in charge of spawning the particles for this ability. |
PlayerStandardShield | Allows the player to spawn a shield on their left or right depending on the position of their mouse when they click the right mouse button or press 2 on the keyboard. |
PlayerStandardUltimate | This script will spawn the base of the player's ultimate ability on the ground below where their mouse pointer is when they press 4 on the keyboard. |
PlayerStandardUtility | Allows the player to spawn a platform at the location of their mouse pointer when 5 is pressed on the keyboard. |
PlayerVariables | Holds various variables that the player has, such as their health, current and maximum "juice", score and the amount of damage that their abilities do to enemies. Also holds variables which would allow for alternate abilities to be created and swapped out with current abilities. |
RespawnPlayer | Has a respawn location and time delay variables. Once the player touches the object this is attached to, it will wait out the time delay before setting the player's location to the respawn location. Also enables and disables the FadeIn and FadeOut scripts on an object which covers the screen at the appropriate times. |
Rotate | Taken from tutorial work and modified, this script makes the object it is attached to rotate by a given amount. The modified version allows the direction of rotation to be randomised. |
SceneSwitcher | Taken from tutorial work, this script changes the current scene when it is attached to a button and the button is pressed. |
SceneSwitcherDelayed | Modified version of SceneSwitcher, this script will enable the Rotate and ShrinkThenDestroy scripts on the player, allowing these to play out for a bit before switching scenes. |
SceneSwitcherOnObjectDisabled | Modified version of SceneSwitcher, this script will switch the current scene when the player object is disabled (i.e. when the player dies). |
ShrinkThenDestroy | This script will reduce the scale of an object by the chosen amount each frame, deleting it once it gets below a certain threshold or disabling it in the case of the player. |
SpawnAttackPart | This script is attached to the first three prefabs of the player's ultimate and allows them to spawn the next part after a short delay. |
SpawnEnemy | Spawns an enemy at the object's location, with decreasingly short delays between spawns as the player's score increases. |
SpawnParticle | Spawns a particle at the objects current location every frame, putting the particle on the same layer and rotation as the object, as well as inheriting its SpriteRenderer's colour. |
SpawnParticleCircle | Spawns particles every frame in a radius around the object it is attached to. Particles inherit the layer and SpriteRenderer's colour from the object this is attached to. |
SpawnParticleFalling | Spawns a particle at a random position within a defined area every frame. Allows it to be spawn particles the whole way along the player's platform ability, or the whole way up and down the player's shield ability. Particles inherit the layer and SpriteRenderer's colour from the object this is attached to. |
SpawnParticleUpwards | Spawns a small amount of particles at random x positions along an object. The direction that these particles move in is based off of how far to the left or right the particle spawns using trigonometry. Particles inherit the layer and SpriteRenderer's colour from the object this is attached to. |
SpawnReflectedProjectile | Attached to the enemies' projectiles, this script will make the projectile destroy itself when it comes into contact with the player's shield, as well as spawning one of the player's projectiles at the impact location moving in the opposite direction that they enemy's projectile was. |
StandardEnemyAttack | Allows the enemies to spawn projectiles which travel towards the player's location. Only spawns projectiles if there is an active player object in the scene. |
StandardEnemyDie | Destroys the enemy object when their health is at or below 0. |
StandardEnemyMovement | Allows enemies to move to the left or right depending on where the player is, as well as jumping if they come into contact with a ledge and cannot proceed. Also makes the enemy stop when they get within a certain range of the player. |
StandardEnemyVariables | Holds various variables about the enemy, including their health, the amount of damage their projectiles do, whether they are currently attacking the player or not, and if they are a stationary "tutorial" enemy. |
TextToggleOff | When the player comes into contact with a trigger with this script attached, the chosen game object will be disabled. |
TextToggleOn | When the player comes into contact with a trigger with this script attached, the chosen game object will be enabled. |
UpdateUIText | Updates the player's health, "juice" and score in the UI every frame. |
Get Ability Game
Ability Game
Defeat enemies and traverse your environment by making use of a set of powerful abilities.
Status | In development |
Author | ow514073 |
More posts
- Final Build - User GuideMay 30, 2021
- Final Build - UI, Updated Aesthetics, Updated Game Modes and more....May 30, 2021
- Build 5 - Testing, Updated Aesthetics, Enemy Interaction and MovementMay 23, 2021
- Build 4 - Updated Player Abilities and Basic SpritesMay 20, 2021
- Build 3 - Basic Player AbilitiesMay 10, 2021
- Build 2 - Enemies, Player Animation and Updated Player MovementMay 02, 2021
- Build 1 - Player Movement and Example SceneApr 25, 2021
- Assignment 2 DevlogApr 16, 2021
Leave a comment
Log in with itch.io to leave a comment.