Lightfield is a parkour-style racing game. Players can utilise every aspect of their surroundings to find new racing lines. It is a mix of free flying and classical racing, combined with parkour elements and tricks. Exploration is a very important thing in Lightfield. We built not only race tracks, but all our tracks are embedded in small worlds players want to explore. In all tracks there are so many different ways one can go and we always try to encourage the players to try different lines.
The goals when designing the tracks and the environment were:
provide many different routes
traversing the track should not be a challenge. There should be no tiny holes, etc…
Improving your lap times should be less about executing the perfect line (as in racing sims), but more about finding good lines
All tracks should be embedded in an environment. There should be no hard track boundaries.
These environments should also be playable and fun to explore: There are game modes besides racing (collecting stars and treasures), that encourage the player to explore the environments.
and of course they should be aesthetically appealing
As you can see in the trailer, Lightfield is quite a bit different from your standard racing game. Players can pretty much go anywhere, and the gameplay is truly omnidirectional. We could only take parts of existing design approaches, and had to come up with a completely new level design vocabulary that fitted the game.
In our level design, we had to overcome a few challenges:
One of the hardest tasks when developing Lightfield was to offer the players a lot of freedom in choosing their ways through the levels without getting lost. One of the key challenges was to always let the player know where the track moves along. We tried to achieve this on many different levels:
Geometry and Textures
First of all geometry, texture and lighting should always guide the player in the right direction. We tried to build the tracks so that there’s always something in the field of view of the player that tells them where to go. We tried to visually block ways players shouldn't go without completely limiting them and we tried to emphasis the correct ones. We did this by modeling rails and edge flows in the directions where players should go, especially in passages where they tend to get lost. Glowing textures are also a very important element. They are never off the track and always guide the player in the direction of the track.
Not all parts of the tracks are completely open. We alternate narrower and more open track parts a lot to give the tracks a good pacing. Finding your way through the level is quite stressful, so it’s very important to have easier track parts like tunnels or open planes, before getting again on a track part with a lot of different options. Apart from that it’s important to bring the players closer together from time to time, so that they can see each other and get a better sense of the race.
Apart from these world elements we experimented a lot with additional elements and signs like arrows and special pickup particles. But we quickly noticed that this is not enough. These elements helped to assure the players that they are on the right way, but it didn't guide them in the correct direction.
What helped most was the implementation of guide trails: You always see the trails of about 50 other players in transparent white and animated lines. It looks like wind blowing through the level. A very interesting side effect of these trails was that they mark the location of the track when looking at it from far away. This also gives the players a better understanding of where they are in the world and how they are integrated into the environments.
The most obvious guiding element are the colorful trails of the other players. Every ship that moves through the level leaves a bright trail behind it and we made sure that there are always other ghost players on the track. So when you are flying a track for the first time you can always follow the trails of other players.
Whenever we noticed that players had problems at certain level parts during play tests, we tried to make them more clear, sometimes by reducing the complexity of the level part, sometimes by adding geometry or textures that helped guiding the players.
Of course sometimes it still happens that a player gets lost. But that’s not a big problem. We implemented a very quick reset to the track by just pressing a button.
In Lightfield every level should feel a bit different. The idea was to appeal different types of players or different moods. Every level focuses on a different part of our mechanics.
In the first three tracks we introduce the basic control mechanics of Lightfield step by step. With every track we introduce a new aspect of the gameplay:
The first track is a quite conventional race track. We know that it doesn't perfectly represent the unique gameplay of Lightfield as it’s not really omnidirectional, but it was necessary to build a track like this as an introduction to the controls, otherwise the players would be completely lost. Our second goal with this race track was to offer a track for playing local multiplayer with people that don’t know the game. So there should be one obvious route on the floor and a lot of different routes using the walls, you didn't recognize when first playing the track. So the beginners can stay on the floor while the more advanced players can try to do tricks, jump from wall to wall and still compete to be faster than their friends.
While the first track is very two dimensional on a horizontal level with only two vertical turns, the second track has only vertical turns. It’s very important that the player learns to look out for turns up and down as well!
In the third track we introduce a section with only scattered surfaces (the cave with the red bubbles). Players have to really make use of the free flying and snapping mechanic. They have to release from one surface, fly to a new one and reconnect to it. You can do this in all the tracks before but in this section you have to do it for the first time. This is a very important mechanic in Lightfield but we decided not to introduce it earlier than in the third track for not confusing the players too much.
After playing these three tracks the players should be used to the controls. All the following tracks focus on different aspects of Lightfield: Like “Hydro Inject”, which is a linear but very fast track, or “Verticon 742“, a really confusing track with a lot of turns in all directions and therefore very hard to memorize.
In all the tracks we aimed for roughly one minute per lap experiencing that this was about the amount of track parts players manage to remember. We decided that there should be some shorter and some longer ones, depending on how confusing they are, but by average one lap should take about one minute.
The first step in our level design was to define characteristics for each track. There should be one track that feels very fast, one with a lot of vertical turns and another one that’s very winding and confusing and so on. After assigning these characteristics to the tracks, we decided what each level part should feel like. We described each part just like you would retell what your experience was flying it. By the end of this phase we had written definitions of each track like you can see in the foto. Up to this stage we only stayed on paper.
The next step was to decide which track was located on which planet. By that time Raimund (our creative director) already did concept drawings for various planets which not all made it into the game. He started with scribbles of the planets structures and forms. I tried to find forms and shapes in these scribbles where it would be fun to fly along.
And that’s what our walls looked like during this production phase:
Inspired by these drawings I started working on the blockouts. We built all the levels from mostly boxes and some other very basic shapes. In the beginning I tried to build a pool of geometries with specific characteristics, like a long straight section, a section with lots of narrow bends or the distance between objects that feels good for jumping without losing the feeling of being fast. With this set of building blocks I translated the characteristics we defined in the previous step to geometry. We did a lot of play testing with these blockouts and kept on working on them until playing them really felt the way we planned.
To distinguish different level parts we colored different sectors of the level. This coloring was also a guideline for modeling the worlds in a later step. The coloring defined the different districts of the race tracks. When the modeling was finished the player should still feel these different sections. It’s a very important element in helping the player to memorize the tracks more easily. We tried to build level parts players would recognize. The subdividing into districts was one part to achieve this, building landmarks another one. The position and basic shapes of these landmarks were also already defined in the blockouts.
From Blockout to the final Levels
When all blockouts where finished and tested, we replaced the grey shaded blocks with the final geometry. It was a very hard task for Raimund to come up with ideas, what all these blocks and spheres finally would represent in our little solar system. I think he did a great job. You could ask him about every element in Lightfield and he comes up with a perfect explanation for it.
We paid close attention to not lose the feeling of the tracks. Unlike in other racing games in Lightfield there aren’t any elements just for decoration. You can really attach to every surface in the world. This was a lot of work for us because we had to make sure every surface is modeled in a way you can fly on. We had to rework a lot of edges and ledges and experiment a lot with the amount of geometry detail that works best with the ship controller. But maybe that’s a story for another post.
Part 1 covering game design aspects can be found here: http://www.gamasutra.com/blogs/SimonWallner/20180727/323089/From_Consoles_to_Steam_Lessons_Learned_and_Questions_Raised_from_LIGHTFIELD.php