Sleepy Frog is a 3D platformer created as part of my college course and as a display of my ability to create a 3D game in an engine of my choice (Godot) from start to finish. The main premise of the game is that you, the player, are a frog who has just woken up and is late for an interview on the other side of the city you live in. Your character starts with 100% energy and 120 seconds to get from where they spawn to the other side of the map where the interview will be conducted. Any movement, such as walking, jumping, or wall climbing, will take away energy from the player. Coffee cups are placed around the map to let the player regain energy, which then lets them move more. If the player runs out of time or energy or is hit by any obstacles, the game resets fully.
This project was my first to ever go on my Itch.io page and is also my first fully documented project thanks to a little bit of encouragement from college and my own desire to have the entire development process online for everyone to see.
Sleepy Frog can be downloaded from its Itch.io page. It has binaries for both Windows and Linux.
As mentioned before, one of the main mechanics of Sleepy Frog is its energy management system. It was originally inspired by a game idea I decided not to pursue, where the player would maneuver around a space station with limited RCS fuel. I essentially took that mechanic and turned it into a more whimsical and fun format while also dramatically reducing the scope of the game to more realistic expectations given my time limit and ability at the time.
Movement in Sleepy Frog is fairly straight-forward, it includes the following:
Walking - Naturally, the player is able to walk forwards/backwards and left/right using WASD, the arrow keys, or the left thumbstick of a controller.
Jumping - The player can jump using spacebar or bottom button of a controller.
Wall Jumping - Uses the same input as jumping. If the player is interacting with a wall they are able to jump up that wall. If they hit a ceiling (or try to jump up a wall with a "no wall jumping" Area3D node overlapping it), they will activate a cooldown which deactivates when the player hits the floor or leaves the no wall jumping area.
Additionally, the player is able to regenerate energy by collecting coffee cups (merely floating cylinders with particle effects in-game as only my level design and programming skills were being assessed in this project). They are intentionally placed so that the player will have enough energy to complete the game even if they waste a fair amount of it on walking and jumping needlessly.
To make the game more challenging, obstacles are placed between the start and end points. These include rivers and cars. The rivers are fairly simply implemented; the player jumps over them or collides with its hitbox and resets. Cars were more difficult to implement. I was not very familiar with 3D movement in Godot at the time, so simply used a StaticMesh and had it move from left to right, resetting its position after a set amount of time (set to a random variable as to prevent all cars from syncing up and looking unnaturally coordinated. The biggest issue with this is that a StaticMesh has collision, so the cars collided with the game's border walls. To avoid such an issue in the future, it would be much better (and more simple) to just use an Area2D instead, as they allow for overlap between hitboxes while also still detecting when overlap happens. The player still has to jump over cars, but their kill hitbox is only found at the front so the player isn't punished for grazing the back of a car.
The game finishes when the player hits the end checkpoint, which triggers a game over screen and ends the game.
Videos of Sleepy Frog can be found at my game development YouTube Channel.
For my first ever full games project after starting my college course, Sleepy Frog isn't too bad. It looks terrible, lacking any models or textures (outside the walls, which were hastily made in Blender then even more hastily textured in Godot with a simple base colour). However as previously stated I was not graded on my ability to create models and textures, simply my ability to plan and implement mechanics and features into a well-designed game level. In that regard, I think I did well. The game has a clear objective and a challenge both difficult enough to warrant a few attempts while also not being too difficult as to be impossible to beat.
My biggest improvement for the future should be to:
Find 3D modellers and texture artists to work with
Add instructions / tutorials (overt or diegetic) to teach the player how to use different mechanics
Have friends play test my games (or strangers! It's always good to have an outsider's perspective on a project)
Ensure that all obvious bugs are flattened out before release