Have you ever wondered how a small company like Vector Unit builds such huge, diverse levels with just a handful of people? Here's a basic workflow guide of how we do it.
Everything starts with an idea.
Ideas come from a variety of inspirational materials we have all collected and stored in the back of our brains.
For us at Vector Unit, we love and specialize in all things that go fast, so we know we want to continue making racing games. Once we settle on a basic concept we agree on, like a gritty futuristic world of underground hydrojet racers, we begin brainstorming about the general environment and what purpose it serves in the context of the game and world. Coming up with something like a backstory, or at least a general set of rules and general themes, helps keep world-building consistent and palatable. It's always easier to make something look real, to make something look more believable, if it has a purpose for being there and not just because it "looks cool". Looking cool is always a bonus, though.
Reference is collected and used heavily -- we look for inspiring games, movies, color scripts, textures, personalities, anything we can. Some favorite inspiration material for Riptide GP: Renegade were; Dubai and its modern architecture, brutalist buildings, crazy looking concept cars and boats, urban exploring, and sustainable cities like the "Venus Project".
Of course we also look to classic favorite games like Jet Moto and Wave Race for design and nostalgia, Hydro Thunder for ridiculous interactive levels, and Tony Hawk for its parkour friendly environment. We knew we wanted our levels to feel kind of like a theme park ride, with large eye catching areas, animated events, and brighter colors, but it was important that we kept it feeling like a Riptide title. It was also crucial that our environment ideas fit together well so we could reuse a variety of textures and objects from level to level to fit our goal of having a variety of very detailed locations.
We constantly bounce ideas back and forth on a daily basis, even when we are not in a brainstorming meeting, which is a really beneficial part of working in such a small studio. Someone's subpar idea can lead to a great idea with some massaging-- none are worth leaving behind. Write them down, keep a log. Some ideas that are thought to be impossible with our limitations, like a burning forest fire that was started by lightning striking and falling a tree, can be proven out later to be doable with some thinking and iteration.
Once the game is actually thought out enough to begin building, we start the level blockout process. Some super rough layout is sketched on graph paper, generally with some kind of broad idea what the environment or theme would be, like a buzzing future city boardwalk transitioning into a dirty drainpipe. Sprinkle in some ideas for special set pieces, like being able to stunt off of a giant casino billboard, and it is approved or altered. The quicker we can we dive into building in Maya and in the Vector Editor, the better.
At this point, the main focus is always on drivability: the trackside width, turns and jumps, blocking out custom trackside geometry like shortcuts, and just basically trying to make it fun to drive. We start to think about placing "key moments", fun animations, and stuff like custom set pieces that are tall and help guide you around a corner, without getting too specific or hung up on one idea.
Once we have an idea of the kinds of environments we want in our game, we can start building tiles. Tile sets are chunks of premade environment geometry that we have authored in Maya and imported into our own in-house engine. They snap together seamlessly on a grid so it's pretty easy to quickly throw together what you envision the final rough layout of a level to be, and to edit it after deciding something isn't working quite like you had hoped.
Tiles are templated, so they can be instantly updated when new geometry is available. Usually our levels are built from a combination of reusable tiles and custom one-off geometry. For areas in which we need custom trackside geometry, tiles are often used as a base, then edited and built on top. Tiles can be stitched together, stacked, deformed and tweaked in Maya to create a unique feeling space separate from the tile set with minimal effort, so we can focus our energy on creating things that are more fun and impactful to the games experience.
Once we have something we find acceptable in terms of layout for a level, we discuss the environment more specifically. Which colors do we want to use? Where do we want to use these colors? We start blocking out some basic lighting to guide your eye, and try to hammer out things to make the level flow and navigate easily. What reusable props could we possibly make that can bleed into other levels? How many actual unique set pieces do we want to shoot for? What if we built a giant casino around this corner to draw your eye over here? Do we actually have time to watch this complex helicopter crashing animation in this area as you’re flying past in a hydrojet going 200 mph? It is important to answer these questions early so we can go through as many iterations as needed for everything to be just right for the final product.
As we layer in ideas to the level, we continue to gather reference, and when necessary create original concept. Generally we do very little 2D concepting; most of what we do are things like silhouettes, rough sketches, and paintovers, or a hybrid of 3D and 2D. Whatever the quickest most efficient way to get a proof of concept out. 3D silhouette concepts are a favorite so we can import the rough geometry chunk into the game as fast as we can to see if it works in context.
Lighting and atmosphere are very impactful to the feel of a game. They set the mood, help with navigation, and many times will make or break the entire level. Things like rain, foggy cloud effects, or fireworks really help nail that final look you were going for the whole time. Some elements don't get implemented until the level is more-or-less done, like Intro cameras, used to show off all of our hard work, and watermaps, images that indicate where the foam or algae on the water surface is drawn. Scalable box shaped Graphic Effects objects are placed in areas where we want lighting to be more contrasted or blown out. It always feels good to throw in these details and really solidify everything.
Because we are a small company, having the ability to communicate efficiently with other team members is really important. We constantly bounce ideas back and forth in our small office, mentioning things over our shoulders as we work at our desks. We playtest in-progress levels daily, and apply that day's feedback on tomorrow's playtest. Rinse and repeat. Feedback and critique is given every step of the way: from concepting, to importing super rough models in game and seeing them in the level, basic material and color pass, making or polishing textures, to the final pass, and even tweaking after you thought you were long finished with it, if necessary. Efficiency is about making smart assets, analyzing things early on and frequently after, and solid communication.