Setting up a splash screen

Overview
All games start with a splash screen. Like any piece of art, it is your lead in. Designed to bring your audience into the game and to set them up for the world they will be living in. So where do you start? Should you invest a lot of upfront time designing the lead in, or should you just create a placeholder and then go back and fill in the details once you have a better handle on the game?

I like to think of the whole process as a series of progressive refinements. So I’m going to start with a really rough splash screen and then once I have a pass through the whole game, then I’ll go back and clean up the details and art.

But even with the idea that I am going to start rough and then fill in the details, there is still an element of planning that has to happen.

  • What is the goal of the splash screen?
  • What level of user interaction is necessary?
  • What assets are required?
    • Geometric and textural
    • Scripts

I always like to start with a quick sketch. This allows me to get an idea of what the flow of my project will be and also can serve as standin assets until I can build something better.

In this case I’m breaking my splash screen into two screens. An initial opening screen that displays a basic logo.

SplashScreen-1

Then 5 seconds later it’ll be followed the main menu screen.

SplashScreen-2

The main menu screen starts with just the game title but then 5 seconds later the enter button appears.

Already, this simple level of design has lead to a question. How do I structure these two screens? Are they contained as a single level within the game and I have some game controller transition between these two elements? Or are they separate game levels? I am going to treat them as separate game levels. This is because the primary splash screen should be as simple as possible and load as quickly and possible, and because the main menu will be accessed from many places within the game and as such is separate from the splash screen.

Making it interactive

In order to make the screens interactive, we need to do dive into coding. We will have to write two basic scripts. The first, will be loaded as part of the splash screen, and it’s responsible for loading the menu screen. The second will create the gui for the menu.

In order for a script to run, it must be attached to an object. My convention is that I create an empty game asset named “LevelInitObject” and attach a script to to this object. I use a similar approach when creating gui objects. Except I call it GuiObject.

So my basic scene hierarchy looks something like this:

Scene 0:

level0-example

Scene 0 contains only 3 objects; Main Camera, lot-watermark, and LevelInitObject.

lot-watermark is a GUITexture and is my standin splash screen.

LevelInitObject is the empty game asset that contains only one component. A script called SplashScreenScript. This script contains the basic functionality needed to load the menu level.

Scene 1:

level1-example

Scene 1 contains 4 objects: Main Camera, Enter text, The Workshop, and Gui Object.

Most of the objects are self but the slightly unique one is the GuiObject. Much like the LevelInitObject, this is an “Empty Game Asset” with 1 component. A script that sets up basic GUI interface. For details on how you can script gui interfaces see the Unity Gui Scripting guide.

Setting up the LevelInitObject
  1. select Game Object->Create Empty

    CreateEmptyMenu

  2. Rename the newly created game object.
  3. In the inspector panel click the “Add Component button”.
    1. If you already have a splash screen script setup, then you can select it from the “scripts” sub menu
    2. If you don’t simply select the “New script” option

So, what does the SplashScreenScript look like?

For now, this will work as my basic splash screen. Later, I’ll come back and work on design elements, ui, and any additional main menu functionality that might be required from the game.

LevelsOfThinking