Peghoul
Controls:
Aim: Mouse
Shoot: Left Mouse
Laser (Level07 only): Hold Space or Hold Fire
Teleport Ball: L
This game was designed and created according to an assignment specification in KIT109 Gaming Fundamentals at The University of Tasmania.
The aim of Peghoul is to use your cannon to destroy as many pegs as possible. Aim your cannon and fire with the mouse. Hit pegs to destroy them, and earn bonus points depending on which bucket the cannon ball ends up in. Some levels contain spooky ghosts to destroy for extra points.
Features list copied from assignment spec, minor modifications to remove number of marks. The game should tick all of the boxes in the original spec. Modifications from spec include some extra sounds, as well as slightly increased time of intro UI sequence to allow reading time, and the addition of Levels 09 and 10.
Features: Core Functionality (all levels)
Ball Shooting | When mouse button is pressed, ball shoots towards mouse. |
Ball aiming constraints | Shooter can only be aimed within the 120 degree range pointing toward the bottom of the screen. If the shooter is aimed outside of this range, it clamps to the edge of the range and shoots at the clamped angle. |
Ball movement | Ball follows a ballistic trajectory. |
Ball collisions | Balls collide with the buckets and the environment/side of the screen. |
Peg collision | Pegs disappear after a collision with a ball. |
Next turn | The next ball can be shot only once the previous ball has come to rest in a bucket. |
Ammo | The player will start each level with 5 balls. Each shot should reduce the ball count by one. |
Level completion / game over | The level ends in two ways: when the player has run out of balls (and some of the pegs remain), and when all the pegs have been destroyed. |
Scoring | The final score for a level is calculated and displayed correctly:
|
Extra Functionality (all levels)
Visual style and feel | Game is aesthetically pleasing, and levels play well. |
Trail | The ball has a trail. |
Improved Score Display | The score is updated as each peg is hit. As score increases, the number "animates" to the next number. A in-world popup of score is shown for each individual peg, and for when a ball rests in a bucket. |
Lindslay-Mode | Pressing L teleports the current ball to the current mouse position. Ball velocity is reset. |
Sound Effects | Audio when ball is shot. Audio when ball hits a peg. Audio when a ball collides with a bucket. Added audio for when ball hits environment/side of screen, when points pop up from pegs, when points pop up from cauldron. |
Music | Music plays throughout whole game. Music doesn't stop or restart when level is changed. |
User Interface (all levels)
Title screen with level select | Separate scene to levels. Has a title, a suitable background, and a way of jumping to all levels through the UI. |
In-game UI | The amount of balls remaining is visually shown with a number of UI sprites. |
Start of level text | Displays a message for 2 seconds: level number and title, brief description of that level's mechanics. Animated. This has been modified to 2.5 seconds due to the time it can take to read level name plus short description. |
End of level success text | Display a congratulations screen for 3 seconds after a level is completed. Message is from random set of messages. Shows a final level score. |
End of level failure text | Display a failure screen for 3 seconds after all ammo is used without destroying all pegs. Also shows a random message. |
Cumulative Score | Display the total running score across all levels. "Animated" like the per-level score display. |
Game mechanics locked | Can't aim or shoot 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 once hit. |
Level 3 – Button
Functionality | Level contains a button, which when hit by the ball opens up a not-so-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. Checkpoints can be passed through by the ball rather than a normal collision. If a checkpoint is hit out of sequence, the entire sequence must be restarted. |
Visual Feedback | Pegs visually show which number in the checkpoint sequence they are, and correctly show when the checkpoint has been activated. |
Level 5 – Moving Pegs
Functionality | Moving pegs follow a predetermined path and cause balls to bounce of them appropriately. |
Correctly resetting | Pegs only reset when level is reloaded, not after each shot. |
Level 6 – Homing Missiles
Spawns | Missiles spawn from the sides of the screen every second when there is an in-flight ball. Missiles only collide with the ball, and not the pegs. |
Functionality | Missiles seek the currently in-flight ball (and ignore the ball once it is in the bucket area) and destroy when they collide with it. |
Level 7 – Laser Bomb
Functionality | If the player presses spacebar while the ball is in flight, the ball shoots lasers in four directions. Lasers that hit any pegs should destroy the peg. Lasers can't penetrate pegs. |
Level 8 – Cinemachine
Level Introduction | Level is larger and camera initially shows the entire level for one second before focusing on the top of the level area. |
During Play | After ball is fired, camera follows it. 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. |
Level 9 – Ghostly Pegs
Functionality | Pegs wiggle and then teleport to another location. There will never be two pegs on the same location. Pegs cannot be shot when halfway through a teleport. |
Level 10 – Moving Cannon, Moving Cauldrons
Functionality | The cannon moves right and left at a constant speed, increasing the difficulty of aiming. The cauldrons also jump at set intervals to risk throwing the ball back out before it can come to a rest. |
References
Music
Trick or Treat by HitCtrl
https://opengameart.org/content/trick-or-treat
Skeleton Waltz Theme by Wolfgang_
https://opengameart.org/content/skeleton-waltz-theme
Sound Effects
Ball hitting cauldron - Bell Ding by PWL
https://opengameart.org/content/bell-dingschimes
Ball hitting environment/pegs - Thwack Sounds Created by Jordan Irwin (AntumDeluge)
https://opengameart.org/content/thwack-sounds
Cannon firing - Cannon Fire by Thimras
https://opengameart.org/content/cannon-fire
Peg score sound - Coins by StarNinjas
https://opengameart.org/content/12-coin-sound-effects
Cauldron score sound - Ding2 by mashedtatoes2
https://freesound.org/people/MashedTatoes2/sounds/515643/
Pumpkin Background Art
By Chupup Games
https://opengameart.org/content/halloween-pumpkin
Tutorials Used
Smoke effects concept based on YouTube tutorial by Aqsa Nadeem. PNG for smoke created by Josh Daniels.
https://www.youtube.com/watch?v=jQivfs34Wb0
Score tally effect used a modified version of code from YouTube tutorial by N3K EN. Removed a number of features from the code and altered to suit this project.
https://www.youtube.com/watch?v=1r_BXVRjXvI
Font
Mountains of Christmas - Tart Workshop
https://fonts.google.com/specimen/Mountains+of+Christmas?query=mountains+of+christmas
Programming
Parts of Missile Movement script modified from KIT102 tutorials.
End Level Comments
Jess Nunn & Josh Daniels
Generative AI was not used in the creation of this game.
All other work, art, and programming by Josh Daniels
Status | Released |
Platforms | HTML5 |
Author | Josh Daniels |
Genre | Puzzle |
Made with | Unity |
Leave a comment
Log in with itch.io to leave a comment.