If you’ve played any of the BioShock games you’ve probably noticed the really goofy tutorial messages that pop up at nonsensical times. Like, you’ll be in the final boss fight and you’ll be getting messages that let you know how to crouch. The game doesn’t seem to have any sense behind what help it offers or when it’s offered.
This is annoying and distracting at times, but maybe it’s better than the situation where a player might return to a game after taking a couple of weeks off and not realizing they’ve forgotten half the controls. It’s bad enough if you can’t remember which button throws a grenade, but it’s even worse if you forget about the grenades entirely and you hit a part of the game designed around the grenade mechanic.
So I think what BioShock is trying to do is kind of admirable, it’s just a bit heavy-handed and clueless about it. It sucks needing to replay the tutorial just to be reminded of the basic controls. This is especially true today when tutorials are integrated with the game and re-doing the tutorial means sitting through forty minutes of cutscenes, loading screens, exposition, and hand-holding, and so it’s nice if a game can ease you into things without stopping the fun.
I had a background in programming before I began complaining about videogames for a living, and I found it interesting how complex this problem is when you really sit down and think about how it should work.
Let’s assume your goal is to make a system that will dispense hints when the player needs them and avoid dispensing hints when they player doesn’t need them. For the purposes of this exercise, a confused player with no help is just as serious a failure as a player who is being shown information they already know. Our goal is to make a system to remind you of controls when you actually need a reminder but otherwise leave you alone and not spam your screen like a version of Clippy with a gun fetish.
Remember that as a programmer you can’t have the program “offer help when the player appears to be stuck” because the program has no idea what “being stuck” looks like. You have to figure out what “stuck” means, and you have to write the rules to figure out if its happening. The heart of the task is in figuring out when they need the help.
We need some kind of system for tracking player actions. We need to track when they sprint, jump, crouch, switch weapons, reload, climb ladders, use items, use special abilities, take cover, etc. We need to divide the mechanics into distinct concepts and track how often players demonstrate mastery of a subject. For the purposes of this system, we need to make a point of intentional player actions. If the player hits the change weapon key, we count it as a demonstration that they know how to use that system. If they auto-change weapons due to picking up a new one or running out of ammo on another one, this weapon switch shouldn’t count.
Popup hints should stick to input mechanics. Avoid mixing tactical help (ice monsters are vulnerable to fire spells) with mechanical help (press X to select spells) because they’re two different types of information and should be presented in different ways. The tactical help can be provided in-character because it’s part of the world. The input information is there to explain things that the player character should already know how to do. Duke Nukem already knows how to jump, we just need to make sure the player knows how to tell Duke to jump. Master Chief already knows how to reload a gun, the player just needs to know which button to use to make it happen.
The game should never give a hint that’s irrelevant to what the player needs to do right now. If the player sees a popup explaining how to crouch and crawl under obstacles, they will assume that this information is applicable in their immediate vicinity and begin looking for things to climb under. This means that level designers need to mark specific zones: The player needs to jump here. They crouch here. They get new weapons here. And so on.
We should not store the tutorial counters in the save file. We should allow for the fact that sometimes someone (the player’s little brother, for example) might jump into the game in the middle. Or perhaps the player hasn’t played a game in months and has forgotten everything. If I spawn at checkpoint #50 and I haven’t played the game in ages, the game might need to remind me of things. If I just died and I’m respawning at checkpoint #50 then the game shouldn’t reset all the tutorial info. So tutorial hints apply only to a game session, not to the overall game progress.
Tutorial hints shouldn’t be given under duress. The player might get killed trying to read help text in the middle of a fight. They player is also more likely to overlook or forget hints given when they’re busy with complex or stressful tasks. If they’re platforming, or avoiding traps, or shootin’ dudes, then it’s a bad time for help. The exception to this would be if the help is needed right now. For example: How to reload when the gun is empty, how to switch weapons if they’re out of bullets entirely, and how to sprint if they’re in a forced-retreat kinda fight. Detecting these special situations might be a bit fiddly, but if you neglect this then you’ll have a hint system that will stop helping you when you need it most.
Different mechanics should have different thresholds for determining if a player needs a reminder. If I’m not progressing because I’ve forgotten I can use the kick button to bash down doors, then it’s probably best to remind me sooner rather than later. So if the player hasn’t kicked anything yet this session, then maybe it’s best to offer the “kicking” suggestion when the player reaches a kick-able door. On the other hand, if the player is running around using only the assault rifle, maybe they know how to switch weapons but they’re choosing not to because they’re having a good time with this one. In this case, pestering them with switch weapon reminders would be really obnoxious. So there should be a long timer on some reminders and a short timer on others.
Show tutorial messages only when needed. If the player hasn’t demonstrated knowledge of a system yet this session, and if they are in an area where it applies, and if they aren’t in the middle of a fight, and if enough time has passed for this particular message, then we can finally conclude its safe to give them a hint.
This might sound like a lot of trouble, but given the millions of dollars we spend on making elaborate cutscenes and spectacle driven set-piece events, it seems like there ought to be room in the development budget for a couple of days to iron out these hints and smooth out the gameplay experience for the player.
Okay, truth time: In Arkham Asylum I spent half the game not throwing batarangs. I played all the way through Max Payne without realizing I could activate bullet time without needing to leap first.
What about you? Did you ever struggle in a game because you forgot the controls?
Shamus Young writes books, but he never reads the manual.