Basic Controls and Goal
text

Implemented Features

Core Functionality (all levels)
Ball Shooting

When mouse button is pressed (1 mark), ball shoots towards mouse (2 marks).


Ball aiming constraints

Shooter can only be aimed within the 120 degree range pointing toward the bottom of the screen (2 marks).

If the shooter is aimed outside of this range, it clamps to the edge of the range and shoots at the clamped angle (1 mark).


Ball movement

Ball follows a ballistic trajectory, i.e. like a ball thrown through the air (1 mark).


Ball collisions Balls collide with the buckets and the environment/side of the screen (1 mark).


Peg collision

Pegs disappear after a collision with a ball (2 marks). 

Pegs that have collided with a ball only disappear once the ball has come to rest in a bucket (i.e. at the end of a "turn") (1.5 marks). Pegs that have collided with a ball visually show that they have been hit and can still be collided with, until the turn is over (1 mark), or if 3 seconds have elapsed since it has been hit (0.5 marks; to prevent the ball getting stuck in the level and never reaching the bucket).


Next turn

The next ball can be shot only once the previous ball has come to rest in a bucket (1 mark; +1 mark for detecting ball is at rest for a short period of time, and doesn't incorrectly trigger when at velocity is low at the "top"/peak of a bounce).

(Note: Removed the requirement in this item about "5 seconds")


Ammo

The player should start each level with 5 balls (1 mark). Each shot should reduce the ball count by one (1 mark).

   Level completion / game over The level ends in two ways: when the player has run out of balls (and some of the pegs remain) (1 mark), and when all the pegs have been destroyed (2 marks).

Scoring

The final score for a level is calculated and displayed correctly:

  • the sum of destroyed pegs (1 mark); plus
  • the sum of the value of the buckets each ball is resting in at the end of the level (2 marks); plus
  • any bonus awarded for a level.
Extra Functionality (all levels)

Visual style and feel Game is aesthetically pleasing, and levels play well.

Trail Ball has a trail (1 mark).

Improved Score Display Score is updated as each peg is hit (1 mark). As score increases, the number "animates" to the next number (1 mark). A in-world popup of score is shown for each individual peg (1 mark), and for when a ball rests in a bucket (1 mark).

Lindslay-Mode Pressing L teleports the current ball to the current mouse position (1 mark). Ball velocity is reset (1 mark).

Sound Effects

Audio when ball is shot (1 mark). Audio when ball hits a peg (1 mark). Audio when a ball collides with a bucket (1 mark).


Music

Music plays throughout whole game (1 mark). Music doesn't stop or restart when level is changed (1 mark).

User Interface (all levels)

Title screen with level select Can be same or separate scenes (note that if using separate scenes, SceneSwitcherKeys script will need to be modified -- see exam lecture). Should have title (1 mark), a suitable background (1 mark), and a way of jumping to all levels through the UI (3 marks).

In-game UI The amount of balls remaining is visually shown with either a number (1 mark) OR with a number of UI sprites (2 marks). 

Start of level text Display a message for 2 seconds: level number and title (1 mark), brief description of that level's mechanics (1 mark). Animated (1 mark).

End of level success text Display a congratulations screen for 3 seconds after a level is completed (1 mark). Message should be from a random set of messages of your choosing (2 marks). Shows a final level score (1 mark).  

End of level failure text Display a failure screen for 3 seconds after all ammo is used without destroying all pegs (1 mark).

Cumulative Score Display the total running score across all levels (1 mark). "Animated" like the per-level score display (1 mark).

Game mechanics locked Can't aim (1 mark) or shoot (1 mark) while the start or end level text is being shown.
Level 1 – Default

Functionality Simple level with no modifications.
Level 2 – Multi-Hit Peg

Functionality At least one peg in the level which requires more than one hit to be destroyed.

Visual style Uses an appropriate visual representation to show the state of the peg (e.g. different visuals with 2 hits remaining to 1 hit remaining etc.)
Level 3 – Button

Functionality Level contains a button, which when hit by the ball opens up a secret area that contains a bonus pickup.

Bonus Pickup Bonus pickup displays an onscreen bonus message including the bonus amount upon collision with the ball.
Level 4 – Checkpoint Bonus

Functionality Level contains at least 3 checkpoints, which when hit in order by the ball result in a bonus which appears on-screen after the final peg is destroyed (1 mark). Checkpoints can be passed through by the ball rather than a normal collision (1 mark). If a checkpoint is hit out of sequence, the entire sequence must be restarted (2 marks).

Visual Feedback Pegs visually show which number in the checkpoint sequence they are (i.e. have a number on them), and correctly show when the checkpoint has been activated.
Level 5 – Moving Pegs

Functionality Moving pegs follow a predetermined path (1 mark) and cause balls to bounce of them appropriately (1 mark).

Correctly resetting Pegs only reset when level is reloaded, not after each shot (1 mark). 
Level 6 – Homing Missiles

Spawns Missiles spawn from the sides of the screen every second when there is an in-flight ball (1 mark). Missiles only collide with the ball, and not the pegs (1 mark).

Functionality

Missiles seek the currently in-flight ball (and ignore the ball once it is in the bucket area) (1 mark) and destroy when they collide with it (1 mark).

Level 7 – Laser Bomb

Functionality If the player presses spacebar while the ball is in flight, the ball shoots lasers in four directions (i.e. in a + pattern) (2 mark). Lasers that hit any pegs should destroy the peg (1 mark). Lasers can't penetrate pegs (i.e. it only hits pegs which are within line-of-sight) (1 mark). 
Level 8 – Cinemachine

Level Introduction Level is larger and camera initially shows the entire level for one second (1 mark) before focusing on the top of the level area (1 mark).

During Play After ball is fired, camera follows it (1 mark). Continues to do so until ball comes to rest in a bucket and a new turn begins, and then smoothly transitions back to framing the top area of the level (1 mark).

Custom Levels were made for Level 9 and level 10


Sources

End of round messages generated by ChatGPT: https://chat.openai.com/share/60e17e20-8ee5-4c46-9156-24d1b5fa761f

"At Launch" Kevin MacLeod (incompetech.com)
Licensed under Creative Commons: By Attribution 4.0 License
http://creativecommons.org/licenses/by/4.0/



Brackeys. (2017a, May 31). Introduction to AUDIO in Unity [Video]. YouTube. https://www.youtube.com/watch?v=6OT43pvUyfY

GGBotNet. (2021, December 26). Public Pixel Font | GGBotNet | FontSpace. fontspace. https://www.fontspace.com/public-pixel-font-f72305

Imaginelabs. (2018, February 10). Breakout (brick breaker) tile set - free. OpenGameArt.org. https://opengameart.org/content/breakout-brick-breaker-tile-set-free

Kenney. (2020, February 11). Interface sounds · kenney. Home · Kenney. https://kenney.nl/assets/interface-sounds

Kyzerole. (2019, May 26). Target. OpenGameArt.org. https://opengameart.org/content/target

PauR. (2016, January 12). Sky background. OpenGameArt.org. https://opengameart.org/content/sky-background

Rounddroid. (2020, July 10). 2D pinball sprites. OpenGameArt.org. https://opengameart.org/content/2d-pinball-sprites