15 Jul Building Levels in Unity – Part 3 of 3
Hi!
It’s me again, Matthias of Paladin Studios. This is part 3 in a series about building levels of The Fork Of Truth. The first two parts are here:
- Part 1 – A look at how the terrain in Unity works
- Part 2 – The logistics of managing a vast library of environmental objects
In this final post of the series, I’ll go into all the smaller and ancillary tricks that make the entire level come together.
Point of View
The view of the game has to be carefully considered, and a slight variation influences the way we see the game. Make the camera “over the shoulder”, and it feels like a 3rd-person brawler. Keep it high in the air and static, and it becomes a real-time strategy game. If you have it hovering above the player, moving with her, suddenly it feels like an Action RPG.
(The near and far positions of the Fork of Truth camera – note the angle difference)
We tweaked the camera settings for a long time. Ultimately we decided on variation of the Action RPG camera, angled to look down on the player in a fixed orientation. The pitch of the camera changes slightly, depending on the zoom level: When the camera is closer to the ground, it will tilt towards the horizon. If it’s up in the air, it will lean towards looking down vertically.
Choke points
The level shape changes from small corridors to open areas. By adding “choke points”, players are forced into the funnel of the level, which prevents them from wandering and getting lost in open space. The path is ultimately linear, but there is enough room to go off and explore for a while. Natural bottlenecks lead players back onto the path again.
(The level for the Fork of Truth demo, with red arrows pointing at the choke points)
The level gives the player the possibility to explore and find goodies, but also a clear path towards the end goal.
Details
Wherever feasible we try to add fun details into the environment which tell their own story and give “life” to the world.
Fishing-equipment near docks:
Trampled fences, the aftermath of a goblin-raid:
Signposts to show you’re on the right track:
Fake cows, because we didn’t have time to model actual ones 😛
It’s these little details that tell the story of the environment: Who lives here? What has happened? Is it dangerous? What can we expect next?
Lighting
We use a simple directional light with realtime shadows. A little tip for lighting: The sunlight color should typically be a little bit yellow, and the shadows should be a little bit blue-ish. This simulates a clear blue sky (blue coming from all directions) with a “yellow” sun (the directional light).
Fog
At a certain distance from the player fog is generated. This obscures far away objects, saves rendering-power, and adds to the atmosphere. The level can be also made more “spooky” by increasing its density.
A subtle fog (as seen above) can enhance the atmosphere of the scene – but don’t overdo it.
Changing the atmospherics
When the heroes enter the forest, the atmospheric theme switches subtly. The lighting gets darker, and the fog creeps closer. Objects placed beyond that point are more dilapidated and have more muted colors. Here you can see the new settings. Note the differences to the other screenshots:
Sounds
Several sound sources are placed throughout the scene. Adding subtle sound effects can have a huge impact on the level. Hearing birds chirp and water rush help you to fully immerse yourself into the game, as it it were a real place.
Reactive Environment
The environment does not have to be static. Even though we did not have the budget to add NPCs, we still wanted to add some interaction with the environment other than just bashing enemies. When the gang enters the village, each time they walk near a house the villagers close the shutters, saying things like “Hide yo kids! Hide yo wife!”. This makes the world feel populated, even though there aren’t any actual characters around.
There are many ways to achieve these kinds of effects, just think of things that the environment could “do” to respond to your actions or presence. Ducks could fly away, a deer could chase off in the distance, a child may come up to play with you. The possibilities are endless.
Treasure Chests
Who doesn’t love goodies? Whether it’s treasure chests or simple hidden loot drops, it’s a great thing to discover something edible/sharp/pretty/valuable. The beauty of a chest is that it’s always a little surprise what they might yield. They spring open, uncovering the treasure – yummy, apples!
Texturing on the ground
As mentioned in part 1 of this series, you can paint on the terrain in the scene. What is also possible are gradients between several textures, and the creation of mash-ups between those two.
We use this to put dirt on cobblestoned roads:
And leaves on the ground in forests:
Asset Store
Unity comes with its build-in Asset-Store, where you can get all kinds of stuff for your game.
Our time was very limited, so we decided on concentrating on the characters first.
Sadly this meant we wouldn’t be able to give the same amount of care to environmental objects. The compromise to solve this situation was to use external assets for a few selected high-intensity items, which are used throughout the entire environment.
Houses were a good choice, as those are usually expensive in terms of time to invest. We found a nice pack of medieval building-elements. From those we assembled the buildings. We then re-did the textures, so they would fit our art style and aesthetics better.
Be careful with what you use – some assets need a unique, custom-built approach, while others are more generic and can be bought. Always try to keep the game consistent – this goes for sound, visuals, animations and any other assets you purchase and/or create.
Backstory
If at all possible, start with a little backstory on the environment. Who lives here? What kind of people are they? How do they make a living? Where do they walk? Are there any enemies? What are they up to? Where do they come from?
We actually wrote a backstory for the village and its surrounding environment, even though you can’t see it. This hidden lore is the basis of everything in the region, and adds to the believability of the place.
Conclusion
- Fine-tune the camera angle, and adjust the environment to make it fit
- Use “open” areas and choke points to balance exploration and progression
- Lighting and atmospherics do not have to be static – change them to change the mood
- Add ambient sounds to increase believability
- Can you let the environment react to the player?
- Where are the goodies? Treasure chests? Little easter eggs?
- Use the Unity Asset Store to quickly fill the level with content (but use it wisely!)
- Write a backstory so it’s easier to fill in the details of the level
There are many, many ways to build a level. I hope this gave you some new insights into creating levels in Unity, and maybe help you with your own!
Thanks,
Building Levels in Unity – Part 2 of 3 » Paladin Studios
Posted at 17:52h, 15 July[…] Part 3 – Smaller and ancillary tricks that make the entire level come together. […]
Building Levels in Unity - Part 1 of 3 » Paladin Studios
Posted at 18:13h, 31 October[…] Part 3 – smaller and ancillary tricks that make the entire level come together. […]
jorgebautista87
Posted at 18:54h, 29 DecemberIt was nice to read, thank you very much
“Building Levels in Unity”- a three-part tutorial by Paladin Studio’s Matthias Zarzecki | Skillpoint School
Posted at 06:23h, 04 February[…] Part 3: Tying the World Together […]
Syon
Posted at 21:09h, 08 AprilVery nice read – any tips on getting the cool floating combat text you guys created? or some more details on your camera angles/positions?
Thanks for everything either way!
Calum
Posted at 18:37h, 12 April@Syon if you are using unity you can use GUI.Label, or any other UI interfaces to do this.
Lachee
Posted at 03:57h, 12 JuneAs Calum stated, use unity’s GUI.Label and GUI.DrawTexture. as for position, you can use camera.WorldToScreen or something along the lines of that. Just invert the y position though (Screen.height – world2Screen.y = guiY)