massive crowd on acu -...

55

Upload: others

Post on 26-Dec-2019

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and
Page 2: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Massive crowd on ACU:AI Recycling

Talk by François Cournoyer and Antoine Fortier

Page 3: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and
Page 4: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

The goal

Goal since AC1

Social stealth ingredient

City full of life

Page 5: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

CPU limit of 100 NPCs

Limit of 20 civilians

The legacy constraints

Around 4 around the player

No systemic crowds

Page 6: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Rats, crabs and birds

Far away armies

Phase 1

No interaction possible

Lead to AI LOD

Page 7: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Bulk system overview

Member is called a bulk

Thousands of cheap meshes

AI LOD based on distance

Three states for the bulk

Pool of full NPC

Page 8: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Around 2000 Polygons

11 animation bones

Low res bulk

Basic reaction system

> 40m

No entity

Page 9: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

All components are ON

Entity

Autonomous bulk

Max of 40

< 12m

Costly

Page 10: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Real NPC visual mesh

Entity

Puppet bulk

Low res behavior

Most components are OFF

12 to 40 m

Page 11: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Low Res Bulk Bulk Puppet Bulk Autonomous

Page 12: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and
Page 13: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

CPU Costs per bulks:

Performance metrics

Low Res Puppet Autonomous

~25 us ~150us ~500 us to ~5 ms

Factor ~ 100:1

Hardware instancing

Page 14: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Low res vs real

Low Res BulkAutonomous Bulk

Infinite Permutations

29 different meshes

Up to 20000 polygons

Up to 1700 polygons

No polygon Limit300000 polygons limit

300 animation bones

11 animation bones

Page 15: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and
Page 16: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and
Page 17: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Scaling of regular animations

Animations

Stiff hands

Custom fast animation system

Custom animation blender

Page 18: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and
Page 19: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Collision system

No Havok

Slides when colliding

Uses a 2D partition map for queries

Always clamped on navmesh

Page 20: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and
Page 21: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Legacy AI

Too complex

Supports all reactions

All event based

Very slow

Page 22: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Bulk AI

Small modular scripts

No complex reactions

Tries to follow legacy behavior

Page 23: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and
Page 24: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Holds bulks

Shepherds

Contains all AI data

Computes bulk logic

Keeps track of bulk state

Page 25: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Shepherds

Unique ID for bulk

Memory allocated once

Typically around 30 mb

Placed by LDs

Page 26: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Level design

Can select bulk count and density

Auto-generated positions

Scripting tools for shepherd

Can edit specific positions

Page 27: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and
Page 28: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and
Page 29: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Wandering crowd

All of Paris

Randomly generated closed paths

Deterministic

Unique shepherd

Models based on region

Page 30: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and
Page 31: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

The pool

Statistically based on the region composition

Match low res visual densities

The pool is constantly adjusting

Tag to match real NPC mesh

Less models means better matching

Page 32: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and
Page 33: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and
Page 34: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Bulk puppet

All components are turned off

Behaves as a low res bulk

High quality visual

Page 35: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Swapping

Teleport to low res position

Match the hats and props

Remapping of the torso bones

Find the best matching entity

Reapply color

Page 36: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and
Page 37: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and
Page 38: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Matching colors

Difference in shaders

Color matching tool

Matched by character modelers

Page 39: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Hats

Creates variety

All hats spawned on real

Select correct hat on transition

Can’t respawn entities

Page 40: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Bulk autonomous

Low res logic is turned off

All components are turned on

Full Havok physics

Still part of the shepherd

Page 41: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Autonomous conversion

Reset all modified variables

Must transition in the correct AI state

Must be fast

Page 42: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and
Page 43: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Interaction with autonomous

Interaction entity always changing

Fallback : Swap with new real NPC

Smart pointers with bulk IDs

Page 44: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and
Page 45: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Deterministic positions

Pregenerated paths

Replicated reactions

Convert to real NPC

Networking

Page 46: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Performance overview

49%51%

Huge Crowd CPU Usage

10000 NPCs

Total CPU time for bulks

Total CPU Time for other Systems

20%

80%

Typical Crowd CPU Usage

2000 NPCs

Total CPU time for bulks

Total CPU Time for other Systems

Page 47: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Performance overview

55%28%

17%

Huge Crowd CPU

Distribution : 10000 NPCs

Shepherds Other Autonomous

13%

18%

69%

Typical Crowd CPU

Distribution : 2000 NPCs

Shepherds Other Autonomous

Page 48: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Memory usage

Mostly fixed cost

230 MB for 2000 bulks

20 MB increase for 12000

Pool is fixed

160 spawned, 90 active

Page 49: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Memory overview

70%

15%

13%

2%

Memory Distribution

230 MB

Gfx System AI Animation

5%

95%

Bulk System Memory

230MB vs 4.2GB

Bulk Engine

Page 50: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Multithreading

Lockless coding

Remove all CPU idle

Good profiling tool

Good task scheduling

Limit lock times

Page 51: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Dynamic Map 2d

No remove

Lockless insertion

1.5 us for a query of 1.5m radius

Spatially repeating

Keep two maps, double buffered

Page 52: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Code snippets

Fast query tight loop Add element

Page 53: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Unify reaction systems

Better low res reactions

Deterministic reactions

Armies ?

Future work

Dithering

Page 54: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and
Page 55: Massive crowd on ACU - twvideo01.ubm-us.nettwvideo01.ubm-us.net/.../Cournoyer_Francois_Massive_Crowd_On_ACU.pdf · Massive crowd on ACU: AI Recycling Talk by François Cournoyer and

Questions ?

Special thanks

Marcal Argudo Grau, Anthony Biancardi, Oliver Bodwell, Félix Duchesneau,Richard Dumas, Paul Ivorra, Amit Karim, Dominique Lachance, Aleissia

Laidacker, Charles Lefebvre, Maxime Mercier, Cyril Meynier, Jeff Preshing,Tiago Rodrigues, Jose-Manuel Salgado, Ian Morai, Yoan St-Amant, Jean-François St-Amour, Frederic St-Onge, James Therien