Another integral part of game development is as unglamorous as it is essential: Menu Systems.
When done right, the player is unlikely to even notice the craftsmanship as he or she breezes through menus effortlessly. When they aren’t, well… players are always willing to offer up vocal feedback. In GameSalad, your primary menu will be the one users first see when they load the game – giving them opportunities to “play”, “select a level”, “adjust volume”, and other game-related options. The design and layout of this menu is one of your first chances to make a great impression on your players, so it’s worth spending some time on. While we won’t get into the principles of good design here, it’s worth pointing out a few of the features GameSalad makes easy.
The easiest one to create is “Play”. This button typically will use the “change scene” behavior to move users to the first level in your game. Typically, your main menu will be your first GameSalad scene, so the first level in your game will typically be your second scene. We can set this up with a very easy rule:
Offering users the opportunity to jump straight to a specific level will require a bit more work, but the logic will remain virtually identical. Offer your users buttons labeled with each of your levels, and use the rule above with one simple change – select the appropriate scene from the drop-down menu. It’s also straightforward to create “locked” levels through the use of attributes.
Another type of “menu” is an in-scene or in-game menu. These are the options that might pop up if your user pauses the game. Typically, they include options like going to the main menu, restarting a level, or quitting the game.
One of the tools GameSalad offers to ease this process is the ability to create multiple layers in a scene, which allows you to have a static overlay that stays in place regardless of what else is happening in the scene by setting a particular layer to non-scrollable. This allows you to have ever-present user interface (UI) options such as a pause or menu button.
Both of these buttons would rely on the Pause Game behavior, which pauses all activity in the current scene, while bringing up another scene’s actors as an overlay – all without moving away from the current scene. Used in conjunction with this is the Unpause Game behavior, which removes the overlay and causes activity in the current scene to resume. Simply create a scene to be brought up with your in-game menu, and use the “change scene” and “reset scene” behaviors as needed to provide the appropriate functionality. Don’t forget that your main menu is most likely a scene, and can thus you can direct your players directly to it if necessary.
Don’t forget that when you use the “change scene” behavior, the only things that are maintained from the previous scene are the current value of all game attribute and the project running time (covered in a forthcoming tutorial). This is ideal for shifting between levels and the like.
At the same time, we understand users are often looking for more than pure functionality. Presentation and artistic direction are in the user’s control with behaviors like Animate and Change Image. These allow you to make actors that change their look when toggled; for example, a pause button that appears pressed in when activated. The more detail you put into your menu systems, the more polished your game will look.