28
LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Embed Size (px)

Citation preview

Page 1: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

LOGO Emil PerssonHead of Research

Joel de VahlEngine Programmer

Page 2: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Populating a Massive Game World

Page 3: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Introduction• Avalanche makes big games!

o Just Cause 1 - 32km x 32kmo Just Cause 2 - 32km x 32km

• Same size, but JC2 >> JC1o More content

World well populated Focus on areas outside of key missions Designed for replayability

o More "life"

Page 4: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Retrospect• Just Cause 2 was great• ... but

o Our tools suckedo Our pipeline had grown organicallyo Lots of down-time and horrible turnaround times

• Fortunately:o We have come a long way since then

Page 5: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Bringing it to life• World simulation• Diverse game and climate zones

• Jungle, arctic, desert, sky zone etc.

• Unlimited draw distance• Landmarks• Distant lights• Verticality

Page 6: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

World Simulation• There is always something going on

o Civilianso Vehicleso Animals

• Also important to gameplay• Dynamic weather system• Day-night cycle

o Variable time speed

Page 7: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Time of day cycle

Page 8: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Vegetation Rendering• Four systems for rendering

1. Full models with LOD

2. Impostors

3. Forest carpet

4. Forest fins

Page 9: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Vegetation Rendering

Page 10: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Vegetation Rendering

Page 11: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Landmarks• Large draw distance

• All of the world visible from anywhere

• Only near locations streamed in• Replace whole location with one model• Important to show far landmarks

Page 12: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Landmarks

Page 13: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Lighting• Just Cause 2 used Tiled light indexing

• Described in detail in GPU Pro

• Later switched to Deferred Lighting• Currently Clustered Deferred Lighting

• Refer to Advances in Real-Time Rendering course

• Far lights visualized with point sprites

Page 14: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Distant lights

Page 15: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Verticality

Page 16: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Content Modularization• Reusable modules• Multiple instances• Updated module -> updated instance• Procedural placement

Page 17: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Landscape Authoring• 512x512m patches (Stream Patch)• All data required for patch• Stored separately• Edited using in house editor• Mesh procedurally generated

Page 18: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Vegetation Authoring• Procedural with artist control• Artist sets up properties• System places vegetation• Allows for placing single trees

Page 19: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Vegetation Authoring

Page 20: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Vegetation Authoring

Page 21: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Content build problems• Organically grown build system• No clear dependencies• Frequently broken builds• World export from editor• Bad hot reload support• Long turnaround times

Page 22: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Content build fixes• Build system• Compiler framework• Dependency walker• Compiler optimizations• Better logging/messages• In game bug display

Page 23: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Content build times• Before

o 45 minutes datao 45 minutes nav mesheso 40 hours world export (4 x 10 hours)

• Aftero 12 minutes datao 8 minutes nav mesheso 15 minutes location compile

Page 24: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Build distribution• Batch files to get latest• Switched to Slug• Copy essentials• Stream the rest

Page 25: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Conclusions• More meaningful content

• World perceived as larger

• Reduce build times• Faster iterations, better content

• Trust the build• Fail as early as possible

• Requires good error messages

Page 27: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Bonus slides

Page 28: LOGO Emil Persson Head of Research Joel de Vahl Engine Programmer

Code build• Primarily C++• Long compile and link times• Custom batching build step• Used to use VS build system and Incredibuild• Transitioned to JAM/WAF and build servers• Used to be one monolithic code base• Core split up into separate libs