MYLES COLEMAN - PROGRAMMING FMP
Timeline
Outdated (Under developed)


This version of my timeline is underdeveloped and contains minor errors to do with the dates mentioned.
Current (In Depth)












Project Breakdown
-
Movement (https://youtu.be/Uv5tfMSKlnU)(https://youtu.be/LEUhxe9vUOM)​
-
Left and right​
-
Allow for the player to walk left and right on a basic temporary platform, just to ensure it works. The speed should be a public variable, therefore changeable within the inspector window. It should be able to be altered with certain items in the future, so accommodations will be made to cater for this. ​
-
-
Jump
-
Allow for the player to jump, ensuring they can only jump once before hitting the ground. This will be achieved with a grounded check, checking whether the player is in collision (BoxCollider2D)with something tagged "Ground". The height of their jump should be a public variable so it can be changed easily, as well as being made to be changed with items in the future. ​
-
-
-
​Create a Basic Test Room​ (https://docs.unity3d.com/Manual/scenes-working-with.html)(Buttons)
-
​Working collision with walls
-
This will be achieved with a BoxCollider2D, allowing the player to interact with them. The floor should have the tag "Ground" to ensure that it works with the grounded check (for the single jump).​
-
-
Spawnpoint
-
This should be where the player is teleported to at the start of the game, as well as upon entering each new room. The code for this will be placed within the "void Start()" method, this ensures that the player is teleported here at the start of each frame. ​
-
-
Door teleport to random room​​
-
This will use an array to store all of the different rooms. Each room will be its own scene. This has many benefits, for example it allows rooms to repeat in the state before they were previously entered (alive enemies for example). Also it makes transitioning room to room much easier.
-
-
-
Health Points
-
Functionality​
-
I will get the health working with a simple counter, held within the void Update(). This allows it to be updated in the midst of gameplay. As in when the player takes damage or they gain health. ​
-
-
UI
-
I will get the currently working health system to display on the UI. ​This will be possible thanks to the void Update() function. I will quickly create a heart icon for this using Adobe Illustrator.
-
-
Death
-
After the player's health reaches 0 they will be dead. This will be accomplished for now, by loading a currently empty scene. This will be the death screen in the future. ​
-
-
-
Spikes
-
Damage​
-
This should instantly kill the player upon contact. To achieve this, making contact with the spikes will multiply the player's health by 0. Thus making the player's health 0 and killing them. As both the player and spikes will have a BoxCollider2D collision can easily be detected. ​
-
-
-
Room's Visited Counter
-
UI
-
A counter will be created within void Update() allowing it to change in the middle of running. Each time the player makes a collision with the door this counter will go up. Effectively increasing each time they enter a new room. This will then be displayed on the UI, "​Rooms Visited: "0"".
-
-
Death Screen
-
This will also display on the death screen, "Rooms Cleared:" As the death screen won't be created yet preparations will be made to ensure that it is just ready for this. This should be the case as it was able to display on the UI. ​
-
-
-
Snake Enemy
-
Movement​
-
The snake will move left to right on a platform. I will attempt to achieve this with a BoxCollider2D placed just in front of the snake. This will detect where the floor tagged with "Ground" is. If the two aren't colliding it will turn the snake in the other direction. Thus cycling. If this doesn't work each snake will be manually configured to go a certain distance back and forth, with a loop. ​
-
-
Damage
-
The snake should do one hitpoint of damage when collided with. This will be done by using both their BoxCollider2D's and detecting when they collide. Simply decreasing the healthpoints by one when this happens. ​
-
-
Knockback
-
This will use the snake's facing direction and move the player along a curved line until the player reaches ground. If this proves too challenging to accomplish it will be scrapped. Possibly replaced with invincibility frames nearing the end. ​
-
-
-
Create More Rooms​ (https://docs.unity3d.com/Manual/scenes-working-with.html)
-
More rooms will be created using the new hazards. Creating rooms now ensures the new hazards are used to the best of their ability in conjunction with each other. This also helps to break up the load, creating fewer rooms more often rather than many at once. Allowing me not to get overwhelmed. ​
-
-
Camera System
-
Tracking​
-
The camera will need to find the centre of the room to ensure it is positioned correctly. This will be achieved with creating a frame of the room. The coordinates of the top right point will be gathered, and then halved. This will find the middle of the room. The camera will then be aligned to that point.​ Due to recent discoveries this highlighted section is no longer necessary as a much easier solution has been discovered.
-
-
Scaling
-
Due to recent discoveries this highlighted section is no longer necessary as a much easier solution has been discovered. ​
-
-
The camera will now be aligned manually with the creation of the room. This is much simpler than having to write code to achieve the same thing. This also saves time allowing me to work on different tasks.
-
-
Dart Trap
-
Detection​
-
The dart trap will detect the player by using an invisible object going horizontally from the dart trap. Using a BoxCollider2D when the player collides with this a dart will be shot. ​
-
-
Attack
-
I will make the speed of the dart a public variable that ensures that it can be configured easily within the inspector window. ​This will only shoot when the player is detected.
-
-
Damage
-
When the player tagged with "Player" collides with the dart one will be subtracted from the player's health. Thus dealing one damage to the player. ​
-
-
Knockback
-
The player will take a slight amount of knockback once they're hit with the dart trap. This will be done by using the direction of the dart trap and thus transforming the player in that direction by a fixed slight amount. The values and means will be determined through trial and error whilst actually coding for the project. ​
-
-
-
Bat Enemy
-
Detection​
-
There will be a spherical invisible sphere around the bat, using its BoxCollider2D and the "Player" tag. When a collision is detected the bat will move towards the player.​
-
-
Movement​
-
The bat uses the Vector3.MoveTowards() function. This will make it very simple yet effective. ​The speed can also be configured with maxDistanceDelta,
-
-
Damage
-
When the 2 collide (triggered thanks to their BoxCollider2Ds) one will be subtracted from the player's health points. This effectively deals damage to the player. ​
-
-
Knockback
-
Once the player gets hit, knockback will be dealt to the player. This will be done in the same way knockback is done for all other enemies. Taking the bats facing direction and then transforming the player by a certain amount. ​
-
-
-
Create More Rooms (https://docs.unity3d.com/Manual/scenes-working-with.html)
-
I will create more rooms using the newly created hazards. This will be yet another one of my room creating sessions used to help split up the workload. This will also allow me to focus on creating rooms that pair well with these individual rooms, allowing me to use them to the best of their capabilities. As well as creating rooms that use all created hazards together to ensure variety. ​
-
-
Death Screen (https://docs.unity3d.com/Manual/scenes-working-with.html)(https://youtu.be/zc8ac_qUXQY)
-
Function​
-
The death screen will be loaded once the player's health reaches 0. This will be through just loading a scene. A very easy and effective method of achieving this. ​​​
-
-
Retry
-
This button will be part of the UI, it will load the base start room scene. Effectively resetting the game right back to the start. ​
-
-
Quit
-
This button will be part of the UI as well, using the Application.quit function to close the game. ​
-
-
Score
-
The highscore will be saved using an if statement "if (highscore < score) { highscore = score; }". This code ensures the highscore is always the highest score achieved by the player. The highscore will be set to 0 at the start of the game. And the next and all highscores will be saved to PlayerPrefs. Ensuring they are there between runs and start ups. ​Both the score and the highscore will be displayed on the deathscreen using text elements. ​​
-
-
-
Items
-
Pickup​
-
This will work by the items having BoxCollider2Ds, when the player and the item collide the item will take effect, and be added to the player. ​
-
-
Function
-
Upon pickup the items will increase or decrease some stats by a fixed amount. This will be possible thanks to making the stat variables public. ​An if statement could also be used where if the player has an item the stats increase or decrease.
-
-
-
Combat
-
Enemy Health​
-
Using the enemies BoxCollider2D, when the bullet entity tagged with "Bullet" collides with the enemy. The enemy will be destroyed using the Destroy(Game Object) function, this will effectively kill the enemy. ​
-
-
Attack
-
Items
-
Items were mentioned previously, changing stats when a player collides with them (picking them up). Items will be made that change combat based stats, such as damage, speed and ammo. ​
-
-
-
Bugfix
-
Evaluate​
-
I will analyse what I've done well throughout the project, and what I've done bad (needs improving). Thus gathering useful information for bugfixing. ​
-
-
Peer Review
-
I will get my peers to test my project giving me honest feedback. Gathering information on what needs improving and what doesn't. ​
-
-
Implement
-
With the above sub-tasks completed I can now implement the bug fixes using the knowledge gained. Thus improving my project. ​
-
-