Open world games are some of the most expansive, complex, and immersive games. Some of the most popular games in recent years have been open world games; The Elder Scrolls series, The Fallout series, The Witcher series, The Grand Theft Auto series, The Far Cry series, etc. Not only are these games some of the most immersive games in existence, their creation also generates a range of very interesting and very challenging technical problems.
At a very basic level, the goal of an open world game is to simulate an entire living and breathing world. These worlds are often quite massive and contain a huge number of objects, many of which must obey the laws of physics. As a result, traditional solutions often aren't enough. However this article isn't really about those technical issues, what we will focus on is principles and techniques which can be used to create a more immersive open world game.
Developers often assume that people don't care for realism or difficult game play modes. This could not be further from the truth. Take for example Fallout 4, the game initially released without a Survival Mode which increases the difficulty and adds new gameplay mechanics such as thirst and hunger. These features were in Fallout: New Vegas and people were quite upset it wasn't in Fallout 4, causing Bethesda to very quickly release Survival Mode in a free update.
Todd Howard argued that the new scrapping and building system in Fallout 4 is great because it makes junk items found throughout the world useful. The exact same logic applies to food and drink, if your game has many different food items they shouldn't feel like a useless prop. This is especially true for games like Fallout 4 where it should be a challenge to survive in the harsh wastelands, but even for games like Skyrim, realistic needs mods are very popular.
When playing Fallout 4 in Survival Mode, food is no longer just an alternative to stimpacks, crops are now much more useful, and beds actually have a use. So other features in the game such as settlement building suddenly become much more useful and everything tends to come full circle. That is often what happens when realism and immersion are emphasized because the underlying logic promotes simple unified systems with nice emergent properties.
Generally, the more realistic a game is, the more immersive it's going to be. GTA V is so realistic it even has a system for slowly building up puddles when it rains. However some times game developers need a bit of artistic creativity, and some times we just don't care if something isn't completely realistic because we never pay much attention to it. It's important to realize when immersion matters, for open world games it tends to matter a lot.
This is one of the most overlooked aspects of an open world game, yet it's absolutely crucial to achieving high levels of immersion. Most open world games have a 1st person and 3rd person camera option, with the 1st person mode being the most realistic. However what most 1st person camera modes lack is an advanced form of free look which has the ability to turn your head and look in a direction which is independent from the direction you are moving.
In most games, you actually have to change the direction you are moving to change the direction you are looking. You may not think this is a huge issue, until you play a game such as Rust which has a free look system, then you'll realize just how useful and immersive it can be. While moving you simply hold down the alt key and move the mouse to look around without changing the direction your character is moving in the world, the head will move independently.
Another thing most 1st person camera modes lack is the ability to see your own character model when looking down. Quite a few modern games actually do have this feature, even older games such as Skyrim have mods which add this feature. One of the most popular 1st person mods actually removes the unrealistic 1st person hand model, and allows you to see the hands of the actual character as if looking through their eyes, proving to be much more immersive.
Screenshot taken using The Joy of Perspective mod for Skyrim.
Not only do the fake 1st person hands look too stiff most of the time, they follow the camera no matter which direction you face, so you look down at the ground and you don't see your body, the arms just follow you and it can look very fake, especially if the character model is visible at the same time because the hands can point in a direction that makes no sense or even clip into the body, completely breaking the sense of immersion.
A real 1st person character model doesn't have any of these problems but it still allows you to see your arms when weapons are drawn, looking more like how you see your own arms in real life, and looking less static and rigid than the fake 1st person arms. When you look to the side with a free look system and a real 1st person body, your shoulder is visible just like in real life. The lesson: don't create a whole separate 1st person view just because that's what most games do.
Also, don't overlook the power of simple ideas and the impact they can have when implemented correctly. Mods which improve the 1st person camera for Skyrim are very popular, showing that people care quite a lot about immersion. Another feature some of these camera mods have is the ability for the camera to follow the exact movement of your characters head. For example, if you're walking the camera will bob up and down.
This feature is well known to cause nausea for many people, however for people who don't have those problems, a little bit of head bobbing adds to the immersion levels quite a bit because it no longer feels like you're just floating along the ground when you move. So it's a good feature to have, but a slider to control the amount of head bobbing is absolutely necessary if this feature is to be implemented in your game.
Another advantage of tying the camera to the characters head is that when you die, you can see exactly what it looks like from the perspective of your character. Again, this may not seem like a big deal, until you play Skyrim with a mod which adds this feature, and get hit with a death blow which sends your character rolling along the ground, and when you come to a stop you can see the legs of your enemy walking towards your body.
Many games implement one or two of these 1st person camera techniques, but there doesn't seem to be a single game which implements most or all of them. When you combine a lot of small yet powerful ideas together, the end result can be very impressive. Developers spend a lot of time looking for innovative ways to create next-gen games, but they often overlook the fundamental aspects of a game which can drastically improve immersion.
One thing you generally want to avoid in a high quality open world game is immersion breaking glitches. Things such as buggy shadows and flickering can totally ruin the experience if the glitch is distracting enough. Shadows have been a problem for a long time with rasterization engines, but things are improving, and ray traced shadow methods which run at real-time speeds and don't suffer the same inherent problems are becoming more popular.
Modern game engines tend to have very advanced rendering pipelines but it's important to understand how they work if you want to avoid graphical issues and make your game look as good as possible. Try not to use lighting hacks which will lead to annoyances down the road, do it properly the first time. Not only will this make your life easier in the future and make your game look better, it will often have other unexpected benefits that emerge. Here's an example from the Rust dev blog:
We've been using a sort of hacky mesh decal method to get shadows on semi-transparent surfaces, which is something Unity doesn't support out-of-the-box. The problem is we could only make it work efficiently for direct light shadows – like sun/moon – and Vince wanted to be able to use decals on dark underground tunnels, where mostly only spot (flashlight) and point (torch) lights are visible. Decals are very important for detail. They allow us to add those small details that make environments truly unique. So I went ahead and implemented a simple deferred mesh decal system, where decals are rendered just like any other opaque deferred surface, therefore becoming fully integrated with Unity’s deferred pipeline, correctly receiving light, shadows and post-processing. Not only do we get shadows now, we also get occlusion and other effects used to add depth and realism to our scenes. They’re faster too, so we can use more of them. Here are some examples showing how they finally feel connected to the environment:
It may sound like a challenge to apply this approach to your game but you will save a lot of time which would have been spent having to tweak all your hacks to work in various different situations. For example after physically based lighting algorithms were introduced to video games the process of lighting a scene became much more automated and altering the properties of a surface was boiled down to some simple settings such as gloss and reflectivity.
Fake lights are another immersion breaking thing we often see in open world games. A surface should not be lit up for no apparent reason and bloom shouldn't be applied to things which don't actually emit a lot of light because it just doesn't look realistic. When bloom is used on a non-luminous surface it tends to ruin the fidelity of the texture by washing it out and blurring it. The effect looks very bad unless the object should actually seem to be glowing.
Screenshots taken using Dynamically Disable Eye Adaptation and Bloom mod for Skyrim.
That's not to say a bit of artistic freedom isn't always unwarranted, but if the goal is realism then some places will be quite dark. Ambient lighting and brightness levels can always be tweaked if necessary, and the player character usually has some sort of torch for dark areas. Fake lighting usually just ruins immersion levels and makes real lights less apparent, so try to use it sparingly and prefer physically based lighting models which conserve energy.
Screenshots taken using Interiors Enhanced mod for Fallout 4.
Flickering, bad shadows, bad bloom effects, fake lights, any one of these things can have a large impact on immersion levels because it just stands out and your brain is unable to ignore it. When these issues don't exist the result is a game which draws the player in without constantly breaking their immersion, it's the same reason we like consistent frame rates. Even something as simple as jagged edges can degrade the experience substantially, so some decent AA options are a necessity.
The same concept applies to the physics in a game, you don't want glitches that are going to blatantly expose the fact the game world is a cheap copy of the real thing. Objects shouldn't be able to get into a state of perpetual motion and dead bodies shouldn't flip around like they were still alive because they are intersecting with another object. Again this comes back to the idea of using realistic models to create robust adaptable solutions.
In the same way that our lighting algorithms have evolved towards physically based models which conserve light energy, our physics algorithms should head towards physically based models which conserve kinetic energy. Not only will it make the physics less buggy, it will produce emergent phenomena that isn't possible with unrealistic algorithms. However this is a problem for developers of physics libraries, not a problem for game developers.
Obviously it will depend on the physics engine, but there are probably some things game developers can do to improve the physics system, particularly when it comes to object collision. One thing most collision systems seem to get wrong is they don't properly apply forces of friction and don't conserve energy properly, resulting in a range of perpetual motion bugs. However there is a way to not only reduce these types of bugs, but also increase performance.
This is done by creating a list of stationary and non-stationary objects. This is not the same thing as static and dynamic objects. Only dynamic objects are subject to the forces of physics, so we only include dynamic objects in our list of stationary and non-stationary objects. The non-stationary list is essentially a list of objects which are in motion, or in other words, a list of objects which have some kinetic energy.
A dynamic object can be placed into the stationary list when it loses all kinetic energy and we treat them as "pseudo-static" objects, meaning we know they wont move until acted upon by something which does have kinetic energy. If that does happen then we move the object back into the non-stationary list because it now has the capacity to impart energy to other dynamic objects in the scene via collisions.
What this means is, when we do our collision detection, we don't need to check stationary objects against static objects and we never need to check two stationary objects against each other because we know they shouldn't move until some other object or force acts upon them. However, this approach would seemingly only work for rigid bodies and there are a few gotcha situations which must be correctly handled to avoid bugs.
For example imagine an object rising into the air perfectly vertically, there is a moment when it reaches the highest point of its trajectory where it has no motion at all, which could cause the object to be placed into the stationary list, meaning it wouldn't fall back down. In a similar situation, an object could pivot to a point where it manages to stop moving while balanced on one or two vertices, then never fall over.
We know that things balanced on a single point or a thin edge are very likely to fall over in the real world, due to things like vibrations in the ground and the wind, so we must be able to simulate this. We can avoid objects stopping in thin air and stop objects balancing themselves in weird ways using a single method. What we do is say an object cannot be considered as stationary unless it has at least 3 intersecting vertices far enough apart.
Another issue which may arise is objects not falling to the ground when the other objects holding them up are suddenly removed, or something similar. This can be solved by checking what objects are intersecting with the object about to be deleted, then moving those objects to the non-stationary list if they aren't already. It may be a good idea to keep a list of what the stationary objects are intersecting with since it wont change while an object is stationary.
You can make an open world game, but if the world is static and not very interactive then it's not going to feel very alive. Things like light switches should work, objects should be destroyable, chairs should allow the player to sit in them, etc. These sorts of features may seem pointless but they do make a difference. It's not hugely important to have these small interaction options, but their immersive power shouldn't be underestimated.
What is more important in terms of interactivity, is the ability to pick up objects in the game world. Many open world games have this feature so it's not at all uncommon. What is a bit less common is the ability to throw any object you are holding. Again it's one of those things which may seem dumb but there's a lot of potential in it, for example a puzzle may require throwing objects to solve it, enemies can be distracted by throwing things, etc.
Something else which isn't common in open world games is the ability to open windows and crawl through them. Many games don't even have an animation for opening containers, you simply get to see what is inside the container without really opening it. Instead of having a separate system for windows, doors, containers, etc, a single system could be used which provides the ability to open things gradually instead of just having an open and shut option.
For example, you wouldn't have to fully open a door or window, you could just open it a little bit if you want to peak through. This approach isn't really necessary for containers but if you do have animations for opening containers then it could be a sort of mini-game where you have to open the container by hitting a key or moving the mouse. For example you might gradually slide open a draw to see what's in it, which would actually be quite immersive.
As mentioned earlier, a simple way to make the world feel less static is to make objects in the game useful, especially if those objects are easy to come across. Another good example of this is the weapon repair system in Fallout: New Vegas. Instead of leaving all the weapons on the corpses of your enemies because you don't have enough carry space, they could instead be used to repair guns which contain similar parts.
Another simple way to improve the interactivity of an open world game and make it feel more alive is to add a good range of NPC's to the world. It's important that the world doesn't feel too empty, even apocalyptic games like those in the Fallout series benefit from having travelers, scavengers, raiders, soldiers, merchants, and other NPC's moving about the world. Mods which add more NPC's to the world are often very popular.
In particular, mods which add moving NPC's are very popular because it usually feels like all the NPC's are staying in the same place and you're the only person moving from place to place. This is a very important point when it comes to immersion, we can even take it a step further and allow critical NPC's to travel around the world. Why should you always have to find them in the same place, maybe some times it should be a challenge to find them?
Another important requirement for open world games is that they have enough variety. Obviously it's not going to look very good if every building and every tree looks the same. It's also not going to be a fun game if there is only a dozen objects which can be found around the world. If your game has food items, you typically don't want just one type of food, you want at least half a dozen different types of food at a minimum.
This is clearly a huge challenge and that's why there aren't as many open world games as we might expect. This is why we need to think more about how we can incorporate procedural generation techniques into our open world games. No Mans Sky may not have been very well received, but the small development team still deserves credit for what they were able to achieve because they are pioneers in the field of procedurally generated worlds.
Many games in the future will learn from the model variation techniques used by No Mans Sky. Elaborate and large structures can be created by combining a bunch of basic building components. Even creatures/animals can be generated in a procedural fashion by applying the same sort of modular character creation systems we use for human characters. If you want to learn more about procedural world generation see this article: A Guide to Procedural World Generation