Javier Pintor from CD Projekt RED talked about some techniques, which help to optimise huge open world game worlds.
Hi, my name is Javier Pintor and I work as an Environment Artist at CD PROJEKT RED. I’m from Spain and I previously worked as a Photographer, Cameraman and Video Editor for various newspapers, magazines and news agencies in Spain. Right after that I freelanced in Architectural Visualization for a few years until I realized video games are what I am leaning towards, artistically speaking, and seemed like the next step for me with my background. Not to mention it was my dream to work in this industry ever since I got my first computer back in 1996, and even more so during the advent of 3D games. So I applied to CD PROJEKT RED and they welcomed me on board, and The Witcher 3 was my first adventure in game development.
Witcher 3 is a huge accomplishment in terms of environment design. What do you think were the biggest challenges in the creation of this amazing project?
I think the most difficult and, at the same time, most important challenge we had to face when making the open world of The Witcher 3 was balance. What I mean by that is trying to keep the player engaged and immersed in the world — create interesting places that feel alive and breathe history and culture. Creating places that are believable and consistent throughout, while at the same time interesting gameplay-wise and fun to traverse and explore. It’s easy to overlook some of these aspects when making a massive game and that’s why it’s important to keep the process iterative and nonlinear.
Could you discuss the way you are optimizing the scenes for the game? What were the main performance factors?
When working on environment optimization, there are many different types of tasks, some more complex than others. The most common ones usually come in the form of issues that have already been documented by the QA department, which we then proceed to debug and fix accordingly. The bigger and more complex tasks require a more thought out approach, as they usually involve multiple assets or entire sets to be reviewed. In terms of environment assets, a few things you need to keep in mind are vertex count, amount of materials that are being used, texture resolution, levels of detail and collisions, or number of instances in the world.
At the end of the day, optimization is a production-wide effort and involves every department. Sometimes there isn’t an easy or clear way of how to approach certain issues. That’s why teamwork, communication and proper organization are essential to manage some of the bigger optimization tasks. Everyone on the team should be on the same page and equipped with the documented workflow for the most common optimization cases on the project.
How do you manage to not overflow the scene with extra assets and elements?
There are various methods for doing this depending on what element of the environment you’re working on. It will look different when you’re working on decorations, and different when you’re doing architecture or terrain structures. One way are decoration sets — entities built using a variety of assets arranged in different ways, which we then instance around the world, adding additional details on top of each instance to create a unique look. This way, a single change inside one of these entities will be automatically applied across all of its copies in the level, keeping the environment’s consistency in check.
It’s rare for a location to be worked on all the way through by a single artist, so communication and feedback are key to keep your scenes from overflowing. And because being exposed to the same location or asset for a long time can make you overlook some details, getting feedback from team members and your supervisors is also very important in the process.
What are the main things to consider when building such big varied environments, which feature a lot of different elements in them?
There are definitely many things to take into account when building huge environments. For the Witcher 3, I think one of the challenges was to capture the feeling and atmosphere of the story, which lies at the core of the experience. And given the massive size of the world, keeping the locations consistently interesting with beautiful vistas and making them fun to explore was also at top of our list.
The things we need to consider change and evolve as we continue to reach new milestones and works on the environment progress. For starters, we try to keep things simple. Playability and figuring out the scale and distribution of the main areas and points of interest are essential. Things like modularity and reusability are important in terms of set dressing. And, of course, as I mentioned before, because no environment is the work of a single person, communication, teamwork and organization are what make the magic happen.
Could you discuss some of the ways you are working with the assets in the environments? How do you work with the hero assets? How do you optimize these elements?
When I start working on an asset, regardless of what it is, I always try to keep in mind the optimization plan. I don’t want to hold back my creativity, so I try not to be too strict at the beginning. The same applies when I’m working on a location, though I always try to think ahead and figure out which parts are more important and which can be taken out if necessary, what textures or materials can be cut out or shared with other assets. Basically always trying to ensure the best quality possible, but keeping a backup plan for when time for optimization comes.
More often than not, hero assets don’t require as much optimization, as they are unique and aren’t going to be replicated throughout the world. But the general workflow is pretty much the same — triangle count, collisions, levels of detail, autohide distance, etc.
Are there some tricks which you can share, that allow to trick the player and capture his interest?
In my opinion, the best way of driving player interest are keeping a balance and playing with contrast in composition. A well-balanced scene will contain less saturated areas, where the eyes can rest and take in other, more detailed parts of the level. The same rule applies whether it is an interior of a house, a dark cave, or a ruined castle. Don’t get trapped or obsessed with details. All of the elements have their place within a scene and work together to convey whatever it is you are trying to tell the player — to either guide them through a pre-defined path, call their attention towards a specific element, or convey a certain feeling.
In the environment team everyone has their own tricks for these kinds of situations and it is our combined effort that makes the look and feel unique.
Could you give some advice as to how you can approach the search for these questionable elements of the world?
In general, just about everything requires a certain amount of optimization. Most of it isn’t even related to visual quality. Rather simple tweaks that will be invisible to the player, but have a big impact on performance. Areas that require particular attention are those more densely populated by NPCs, or sections with important cinematic sequences and gameplay interactions, where the changes we make can affect the work of other departments.
There are dozens of different methods we use for finding cases where optimization is needed. We have access to a variety of debugging tools created by the Engine and Technical Art teams, that make searching and sorting areas that need optimization much easier and faster. This helps us decide where to tweak assets, textures, locations, lights, foliage, terrain and many other elements that can potentially help boost performance, increase the quality, sometimes both if possible. Not to mention we have the support of our QA team, who are constantly working on playtesting the game and debugging problematic areas.