Last week at the Game Developers conference three panels that involved the upcoming open world RPG The Witcher 3: Wild Hunt were hosted, and all of them included some quite amazing work-in-progress screenshots, and a lot of in-depth information on the game’s engine and development.
Here’s an overview of what was explained. You can click on the link of each panel to see the full presentation slides:
During the “Speed Up your Game Using Simplogon” panel we learned about the creation of LOD (level of detail) for the game, basically the rendering of lower quality models to be used when they’re displayed far away in the distance.
- The Witcher team is made of 200 developers split in two business units.
- The Core team is separate and includes 50 developers working on the REDengine and on tech for all the games of the studio.
- Simplygon has been integrated in the engine to create LOD in order to reduce work time by 99% keeping up the same quality.
The “Solving Visibility and Streaming Problems in The Witcher 3” panel explained the use of Umbra 3 Software to help with the streaming of the game’s large open world.
- The software allows to stream the world in independent blocks matched at the borders and do it quickly.
- Umbra also help with LOD and LOD Culling (rendering only what is seen by the player).
- In addition to Umbra 3 REDengine also uses other middleware: PhysX, APEX, SpeedTree, Wwise and Scaleform.
- Umbra 3 doesn’t cause any change in the development pipeline, helps with multithreading and allows the developer to plug in his own memory allocator,
- Umbra 3 supports detachable camera, streaming visualizations, memory statistics and geometry statistics.
Finally the “Landscape Creation and Rendering in REDengine 3” panel gave a closer look to the world-building work going on with the game.
- Vegetation is distributed in the world via on-the-fly distribution and and an offline vegetation generator.
- The objective is to support 16384^2 resolution maps, have less than 0.5 meters between vertices of the terrain, various landscape characteristics, holes in the terrain itself to include caves, and being able to do everything with a relatively small team. In addition to that, textures need to look good and not be deformed by slopes, terrain must cast shadows and extensive copy-pasting needs to be supported when needed for general landscape.
- The city of Novigrad is 46 by 46 tiles in size. The distance between vertices of the terrain is 0.37 cm.
- Tessellation gives the best results with maximum factors of 8 or 16, which is good especially for console GPUs. The triangle count is still very good.
- Terrain texturing is achieved with two different materials combined, a background one (for instance rock) and an overlay one (for instance snow).
- A “slope-based damp” feature allows to separate artificial materials that normally are displayed on flat surfaces and natural ones that are often displayed on sloped surfaces, having them behave differently for the best visual result.
- Blend sharpness can also be varied depending on whether the materials would blend in a blurry way (mud, ice, dirt) or in a sharp way (snow, sand, grass).
- Huge meshes (like mountains) can cast terrain shadows.
- Grass is normally distributed procedurally as instances take a lot of memory and painting it manually takes a lot of time. It also has to look diverse.
- The objective is to have grass blend well with the terrain instead of standing out.
- The vegetation generator can either populate the entire level or selected contiguous areas. It simulates water accumulation and sunlight distribution to decide where to place vegetation.
- In a whole region it allocates an array of “resource” values, then computes the slopes of each cell from and to its neighboring ones and modifies resources accordingly. It checks the trajectory of the sunlight and calculates the percentage of time the cell is in shadow. After that it compares the result with the necessary light assigned to each vegetation type and spawns the appropriate ones. It also scales vegetation accordingly.
- Grass is painted manually only in selected areas where there’s intensive action or cutscenes or where knowledge about relations between foliage types grants a more convincing result.
- In areas where grass and debris are painted manually, the automatic placement is masked out.
Below you can see all the relevant screenshots, but be warned that all of them are work-in-progress, so they don’t represent the final game. If you want better information on what each one represent, check out the slides linked above.
One thing is for sure: with how good The Witcher 3: Wild Hunt seems to be shaping up, 2015 can’t come soon enough.