Rube Goldberg Game
A Project for the Nanodegree. Aim was to create a Rube Goldberg game -- get the ball to the goal after sending it off from the start platform. The player should be able to pre-create the playing field for the ball, so that it will gather all the collectables and hit the goal without hitting the ground at any point.
No write-up was required for this project, but I'll try to include a playthrough video for this project as well at some point.
Design sketches
Restarting level
Providing reset button for the user -- a good way to restart the level if something went wrong.
Goal
The user should be able to throw the ball and if the ball touches a target, the target disappears. If the ball hits the end area and all targets on the scene have been collected, load the next scene.
Objects
- Teleporter a la portal
- A bouncer, trampoline
- Cube or desk to create bulk and serve as supports
- Robot arm, fan, something that gives physical push to the passing ball
- fan with such high efficiency it keeps the ball from hitting the ground?
Scope reduction: ended up with a box, a guide plank with "rails", a fan and a trampoline, as there were ready assets for these in the example scene.
Anti-cheat mechanism
One requirement is to build an anti-cheat mechanism to the game. After the ball leaves the start area, the player should not be able to affect the ball, at least not directly.
Disable teleportation
If the player moves outside the starting area (detected using raycasting or trigger collider), the cheat is indicated immediately.
Cons: player might still be able to indirectly affect the field by, e.g., throwing things to the field
Detect environment changes
If the ball is outside the starting area, detect any manipulations and object creations made by the player.
Glass box
Enable an invisible cage around the player so that the player will not be able to move or throw anything outside of the starting area.
Cons: player may have difficulty seeing what happens outside of the start box
Actual implementation
If the player leaves the starting platform after sending off the ball, the ball will deactivate and all collectibles will be reset. The ball activates again after it is returned to the platform.