I've mentioned before I think the Vertical Slice (VS) is one of the most abused industry practices. By definition, it ought to be a version of your software that is near final quality in a small subset of its domain that represents the overall product. If you're making Call of Duty 4 it might be "just one mission" complete with working AI controlled enemies, HUD art, polished control scheme, in-mission cinematics, and near final quality art assets. The problem is getting to this vertical slice actually requires completing a huge portion of the game. For example, the subset of character rigs and animations required for the level may be 80% of the animations needed for the entire game. The UI and HUD are an often underestimated amount of work yet having near final quality versions of them for "just one mission" is saying that entire subsystem needs to be nearly complete. The requirements may say 3 weapons out of the 15 that will be in game, but you'll be doing more than 1/5th of the code underneath to meet those requirements. If employed too early in development the VS can derail an entire project or worse put it on the fast track to nowhere.
So when is the appropriate time to build a Vertical Slice? I say after the few Horizontal Layer iterations are complete. What's a Horizontal Layer? Glad you asked. When we prototype at Uber, we prototype the entire game from beginning to end. This includes single player, multiplayer, main menus, option screens, cinematics, mission briefings, etc. When the entire experience is laid out in whitebox form, that is with temporary art assets and most likely temporary code, we call that a Horizontal Layer (HL). This gives us the best sense of the actual work required to complete the game, and the iteration on the HL creates a breeding ground of creativity as trying out new ideas is quick and inexpensive.
Now, you and I well know in the real world there are often constraints and external forces that result in a VS being embarked upon before the entire game has been covered with HLs. This can work though if properly planned and there has been at least a couple of HL iterations laid in the specific area the VS is targeting. In fact this is exactly what we recently did on our current project. We built an HL for just the core MP game experience, and after several iterations on that decided to go for a VS with a subset of the content. This allowed us to put together a really kick ass gameplay video that we showed off, in private, at GDC.
My diagram-fu is weakened when working on my laptop’s track-pad, but the diagram below still serves to illustrate a few key points.
First, components of the game (Single Player, Tutorial, etc) differ in the amount of work and are so represented by different width blocks. As each HL is complete quality goes up. The VS sits on top of the HL and therefore is elevated in quality by it. In this diagram two vertical slices are created for two different portions of the game; single player and multiplayer. You can see that the slices themselves are of different widths. This represents the amount of the component the VS is meant to demonstrate. For example the single player VS may only be showing off one portion of one campaign mission, whereas the multiplayer VS might be demonstrating nearly fully functional gameplay on a variety of maps. Also note that each slice was started during a different HL iteration. Had the VS for single player began on the 3rd HL iteration it would have achieved a higher quality level.
Our focus now is on laying Horizontal Layers for the rest of the game, which can be broken up into several distinct segments. After iterating upon these layers several time we’ll go vertical, possibly on multiple ones simultaneously.
To summarize, the Vertical Slice is a useful tool when employed in a controlled manner at the right time for the software, but can be disastrous if executed in contrary conditions. Here’s a rule of thumb: Iterate on an Horizontal Layer that covers the desired areas of the game at least 3 times before taking on the Vertical Slice.