Sunday, December 26, 2010

More than you should need to know about splash screens

I’ve started listening to podcasts in my car while I drive to and from work. It’s mainly because I’m sick of Austin’s 101.X only playing ads for the same four strip clubs interspersed with Kings of Leon, and really wanted something else to listen to.

Easily one of the best in the queue is done by the guys at Giant Bomb. If you haven’t been listening to it, I 100% recommend adding it to your podcasting device of choice.

Anyway, in the last episode, someone wrote in and asked why splash screens exist. The response back was basically “Uh, I dunno, maybe it’s a holdover from arcades, or because developers love seeing the name of their games or something”.

My designer sense shed a single tear. The splash screen is actually a pretty important functional piece of the backend guts of how most games work, but if everything goes right nobody ever finds out why! So, in an effort to get my blog writing chops back up, I decided to brain dump more than you should possibly ever want to know about splash screens.


Quick History Lesson

It's kind of a long and twisty story, since it's evolved from nothing into something that's semi-critical, back into something that you could potentially eliminate if you're smart about your UI design and have a lot of coder time.

Originally, the whole concept of a splash screen originated from the arcades. It's first purpose was to advertise the game in conjunction with a gameplay demo in what's called the "attract loop".

Up until as recently as the Xbox 1 and the PlayStation 2, having an attract loop was a certification requirement - in other words, if you didn't have an attract loop, your game would not be allowed to ship. First parties would even dictate the maximum time you could spend on the splash screen before moving to your attract footage (For the curious, it was 30 seconds on the PS2, 90 seconds on the Xbox 1). With the current generation of consoles, those certification requirements have been retired.

However, games today still have splash screens. Why is this? Well, there are a couple of reasons why:

Determining the “Active Player”, or the “Player of Interest”.

Starting with the original Xbox, some consoles have required that games figure out who the “active player” is.

The active player is a concept that’s used in single player (or, more specifically, single profile) games a lot to determine whose profile and which set of save data to use. From a design perspective, it’s pretty safe to assume that the person who’s pressing Start on the splash screen is the person who wants to play the game.

The splash screen is important because it allows us to figure out who the connected profile is before we move to a more functional screen. Knowing the active player before the main menu means that we can load their save and figure out if we need to show a “Continue Game” button instead of just a “New Game” button, figure out if they’re online-enabled so that we can show online game modes and messages of the day, load any special control settings that would be helpful on the main menu, and generally just let us get a session in order.

Now, you could argue that you could do any of this from any of the menu items on the main menu, but...

The time between the Splash Screen and the Main Menu is the safest place to set up a game session.

...because it’s a chokepoint.

The short story is that it makes things less fragile to know the active controller and the save data that’s being used as early as possible. It means you only have to test one spot (pressing start) instead of the half-dozen or so places on the main menu, each of which might have different reasons for failing.

In the age of motion control, reducing the number of entry methods for enrolling is even more important. Kinect games are a great example, as they require an “enrollment” phase to show that a particular person wants to play and isn’t just standing around or sitting on the couch.

It was awesome to watch fellow Aussie ex-pat Dean Tate wrestle with solving this issue on Dance Central without the benefit of any other games to reference. Mainly, it’s because I find Dean’s tears hilarious. Yes, I’m a terrible person.

(Dean Tate, in his natural non-dancing habitat)

Dean’s solution was to require players to do a single unique gesture to signal their intent to play (in this case, Dance Central’s swipe) before any other options were available, since it was way safer and more accurate than having multiple sets of main menu buttons or gestures that can be accidentally accessed by someone walking into the sensor’s view. In this case, the splash screen was critical in making sure the right person was playing.

Designers are lazy, part #1: join-in-progress is hard.

Having said all of that, there are some cases where the concept of a single active profile doesn’t really apply

#1a) Multiplayer games that support multiple profiles, but no join-in-progress
On most multiplayer games, designers treat the matchmaking screen as their single chokepoint for handling all of the per-player things that they’d usually handle between splash and main.

It’s really handy, since you now have one location that you have to worry about identifying the profile coming into the game, load their save data, make sure it’s valid, make sure that the profile is allowed to play in this session type, and a bunch of other fun stuff. It’s essentially the functional equivalent of a splash screen for multiplayer in terms of identifying the “active profiles”.

It’s also handy for cutting down on edge cases further on in the game, because from that point on in the flow you can assume that all the players are in, and the absolute worst case thing that’ll happen is some of them will disappear.

But, at its core, you’re still choking player identification on one screen.

#1b) Join-in-progress

True join-in-progress is a completely different beast.

I say “true”, because a lot of developers do join-in-progress play with only one “active profile”. It basically means that only one person gets progress, and everyone else is just along for the ride. It’s cheap and it’s relatively easy to communicate to players (“hey, you’re playing on X’s save file!”), but it’s super lame if you want to progress your progress alongside someone else.

True join-in-progress means that you have to be prepared to do all of the things that you’d usually do between the splash screen and the main menu on any screen. You then also have to figure out how you’re going to let the player respond to things going wrong, like joining in a middle of a game with a player that has a corrupted save game - you have to give the player a way to resolve the situation, but in a way that works on any screen.

It’s hard work doing this for multiple reasons. Dealing with the flow ramifications of saving and loading happening anywhere is usually enough for most multiplayer games to skip it, but expanding that to all of the flow on cases like resolving game progress across different people who’ve played for different times, or communicating four different player’s progression at once, well, it’s usually not worth the effort for most people.

I could write a whole separate blog post about this. I really wanted to get true join-in-progress into Rock Band 3, since I wanted players to be able to progress their instrument career regardless of whether they were playing alone or with someone else. While I think we kicked arse with things like the Overshell and making it possible to progress independently, we stumbled on communicating how that works, and how it differs from the “this is x’s save” model that Dance Central and RB2 used.

But, that’s another blog post for another time. Back on track, there’s one other excuse for a splash screen...

Designers are lazy, part #2: the “palette cleanser” excuse.

Of course, all of this is just the mechanical reasons for why the splash screen exists. Because it has existed for so long, it’s pretty easy to claim that it falls into the standard muscle memory of a title. Removing it and just showing a number of options first could make people feel uncomfortable! It also serves as the “opening” of your present of a game you’ve just purchased, which is also a pretty satisfying response.

There’s also great arguments against all of this. Grand Theft Auto 4 pre-DLC went straight into gameplay, and it worked perfectly. They also had a pretty ingenious way of identifying the active controller and loading the save without any real interaction, even if it did require getting waivers from various first parties.


There. You now know more than you ever probably want to know about why splash screens exist, at least from one guy’s perspective.


bees said...

Dance Central was an interesting beast. I fought really hard to keep a dumb and awkward "raise your hand to play!" out of the game.

The DC save file model is actually even more restrictive than RB2's (other profiles can't even earn scores). I think it kinda sucks, even though it was my design. I haven't been able to figure out a full solution that would have been a good alternative, yet. I'm just hoping for some other Kinect game to figure it out for me.

Tufty McTavish said...

But please for the love of God allow me to press (A) to move on past the splash screen and Not Just >Start!!! My thumb is already over (A) ready to go, I press it instead of Start... and occasionally with some games nothing happens.

I find it to be surprisingly infuriating when games restrict me to pressing a specific button on the splash panel when many/most are perfectly fine with a press of (A) as an alternative.

s said...

What about Tom Hanks?