Menus, Settings, and Time Trials


This build introduces several menus, including a main screen, level select screen, and settings menu. It also introduces a consistently used font, a new play mode known as "Time Trial", and introduces an additional level. This level is likely to be the final level for this stage of development, as this game was developed for a university project.

Menus

Main Menu

The main menu screen that appears when the player first begins

The menu is fairly simplistic, and the font introduced is "Almendra", which may be found here, and its license here.

For the backgrounds, I decided to use simple tilesets of fake scenes in the same style as the game, with varying levels of zoom to fit each menu.

The Start button takes the player straight to the first level, with default settings, on the Normal difficulty. If these settings are first changed in the Settings menu, they remain through use of a singleton object that is persistent throughout all scenes of the game, including menus and levels, unlike GameManager, which only exists in the game levels. This was a minor problem when introducing non-game levels, but the fix was simply to check for an instance of the Player in the onSceneLoaded event exposed by the SceneManager. 

Because the game may be started before the player goes to the first level via "Start", the settings manager is instantiated as soon as the player opens the game.

Level Select

The level select menu

The Level Select menu was made through trial and error, with a few variations being tried before this one was settled on. Level Select screens can be quite varied in games, and while level previews would be nice, I'm definitely not an artist, and strongly prefer the programming side of development, and I would have spent far too long on finding assets that fit a theme I liked for menus. However, by using doors here, I think the menu is nice enough for my purposes.

This menu shows the first mention of the Time Trial mode, which is discussed below.

Settings

The settings screen, with a fake player character there for flavour

The settings screen exposes 3 settings, and one button to change between presets. The options available for Respawn Amount are None, Low, Default, and High. 

The difficulty button allows the player to choose a difficulty level without customising each setting individually. When settings are chosen this way, the difficulty chosen is shown in the upper right corner in game. If they're customised such that they don't match any difficulty, the word "Custom" replaces this spot in game.

The difficulty presets are as follows:

  • Easy:
    • Respawn Amount: High
    • Stunning: Off
    • High Speed Death: Off
  • Normal:
    • Respawn Amount: Default
    • Stunning: On
    • High Speed Death: Off
  • Hard:
    • Respawn Amount: Low
    • Stunning: On
    • High Speed Death: On

Note that the respawn amount "None" never appears here; it may only be selected by the player manually. This setting is also utilised for the Time Trial mode.

Time Trial

Time trial is a mode that attempts to encourage speed runs of individual levels. When selected via the Level Select menu, the player is taken to a specific level, and they may attempt the level under specific conditions, outlined below. 

Timer

For the purposes of Time Trials, a timer was implemented that appears in the upper left of the player's screen. However, this timer is not limited to the Time Trial mode; it also appears in Play mode (the default), but does not freeze when the level is completed, instead resetting for the next level.

This timer is freezable via a public singleton boolean, and it's current time is editable externally the same way. External accesses of the timer are as follows:

  • When the player dies, the timer freezes until the player respawns. This is to prevent the player feeling punished for dying beyond the time delay of being sent back in the level, as it felt harsh to keep timing when the player has no control over what's happening.
  • The timer also freezes when dialog appears and locks the player's movement. Not all dialog does this, but when it does, it feels unfair to keep timing for the reasons stated above.
  • The timer is reset if the player dies, and they have not yet achieved any checkpoints. This is to avoid the player feeling like the need to reload the entire level, being punished for dying even though they're starting at the same place as the start of the level. This only occurs on the first checkpoint; beyond that, it simply freezes until they respawn, when it restarts from the same time.

Gameplay

When in Time Trial mode, settings are overridden; the game is locked to Hard, but instead of showing Hard in the upper right corner, "Time Trial" is shown instead. In addition to the Hard settings, checkpoints are entirely disabled (set to None). This means a speed run must be from start to finish without any errors.

When the player reaches the end of the stage, instead of moving to the next level, an end message will appear to allow the player to see their time for that level, before pressing Escape to return to the main menu.

Additionally, all dialog triggers are disabled while in Time Trial mode. While the timer does freeze during dialog, it would not be conducive to speed running to be interrupted.


The player after completing a speed run of stage 4. 

For anyone who likes a challenge; here are my personal best times for all 5 levels. Send me a screenshot if you beat any! I'd love to see how fast they can be done.

Level 1) 33.01 seconds
Level 2) 20.79 seconds
Level 3) 37.17 seconds
Level 4) 17.15 seconds
Level 5) 47.23 seconds

Feedback

There was very little feedback this week due to a busy schedule.

Level 5 is the bane of my existence rn but i'm loving it

This is exactly what I hoped the game would become; challenging, but fun the whole way through. I wasn't sure about level 5 as the start can be a bit tricky if you're not sure what you're doing, but this confirms that it's still fun.

Get Magic Is Hard

Leave a comment

Log in with itch.io to leave a comment.