Last time I explained a bit about the level loading process (if you missed it, you can read it here), but there is more to the world of Lumini, much more!
Many games today use procedural generation as a way to create vast worlds with a lot of content. We chose not to. We chose the long and painful road of designing and building the world of Lumini by hand. The reason behind our choice, is that we want to create a world that tells a story. Since we don’t use cut scenes, dialogue, voiceovers or any text at all (aside from the menu), we use the world to tell the Lumini’s story. Inspired by the environmental storytelling in games such as Brothers: A tale of two sons or Journey, we aim to breathe life into the world of Lumini. You can read more about narrative in one of our future blogs.
We use Unity’s LoadLevelAdditiveAsync to paste our scenes together at runtime. To make sure that things don’t get messy, we put all gameobjects in a scene into a ‘scene object’. It’s an empty gameobject which holds all objects in the scene. It is named after the scene it represents, for example sc_w1_1. This means world one, scene one. When destroying a scene that’s no longer needed, it’s very convenient to put everything into a single object. It’s the easiest way to know which object belongs to which scene.
We divide the objects in our scene into two overall categories: Player layer, and back/foreground layer. Our world is 3D, but the gameplay is 2D. The border with which the player collides are the player layer objects, everything else is obviously background or foreground.
We also divide the objects into building blocks and unique assets. Unique assets are used for specific, often narrative driven, locations. Building blocks are made to build the overall skeletal structure of the player layer and back/foreground layer.
When we start making a new scene, Steven, our level designer, first places the player layer borders from the level designs he made. For this he uses an editor tool that I, Niels, have made, the prop-placement tool. The prop-placement tool allows you to rapidly place and rotate objects.
It was originally developed for the purpose of placing assets such as plants and crystals on top of rocks. It is the same idea as the Unity terrain editor, where you paint plants and trees on top of a terrain. But a sudden spark of genius gave us the idea to use a tilted plane as the base for painting our player layer borders on.
After testing the level layouts, we move on to the next stage: The art pass. Olof, one of our artists, builds the entire world by hand. He uses references from our concept artist (previously Brenda, nowadays Dilay) to create interesting compositions. Creating a scene like this takes between one and two weeks’ time. This shows our love for the world we are making. We want the player to experience the world of Lumini as a real, living world.
The building blocks Olof uses are made to fit together. The world may look like it’s one piece, but each rock is actually an individual asset. Most of the building blocks don’t have a backside, because you will only see the world from a front view perspective.
Next time Olof will tell you more about the art of Lumini. Let us know if you are interested in a specific topic. We will try to tell you all about it in one of our future blogs!
- Niels Koopmans
(Follow Niels on Twitter @Niels_Koopmans)