SlideShare a Scribd company logo
Gameplay and AI networking
in Assassin’s Creed Unity
Charles Lefebvre
AI programmer, Ubisoft Montreal
charles.lefebvre@ubisoft.com, @FrozenInMtl
Unity
Unity
Unity
Unity
Unity
glossary
Migration
Entity
Join in progress
Session Memento
NetObject
Master
Replica
Simulation bubble
PeerPeer to peer
Player
Multiplayer
Network keyDiscovery
Host
Components
Coop
NetObject
glossary
M
Peer 1 Visual component
AI component
Animation component
Network component
Network key
Entity
Network key (u64) = peer + type + ID
glossary
M R
Peer 1 Peer 2
Mementos
M
NetTokens
NetTokens: Layer for peer to peer conflict resolution
t=5
t=4
no
Peer1
yes
Peer2 Peer3
t=4
t=5
yes
yes
NetTokens
Can also be used to wait for all players
t=5
t=4
Peer1
Peer2 Peer3
t=4
t=5
t=6
t=6
remote procedure call
Remote procedure call (RPC): execute a function on a peer, this function
will be executed on other peers
network void PlayAnimation(const AnimationParams & params);
• Can be ordered or not
• Can be persisted for Join In Progress
• Can be executed later, or re-executed
Flow examples:
remote procedure call
Replica Replica Replica
Master
Replica Replica
Master
Replica Replica
Master
NetHandle
struct NetHandle
{
Handle<Entity> m_Entity;
NetKey m_NetKey;
bool IsValid();
Entity * GetEntity();
bool GetPosition(vec4& position);
bool GetSight(vec4& position);
}
NetHandle
?
NetHandle
(full entity)
??
?
Simulation
bubble
Undiscovered
entity
Spawning strategy
Spawning client
system
Spawning
request Spawning strategy
Spawning manager
Spawning strategy
Mementos
Peer 1 (spawner)
simulation bubble
M
replication
Net descriptor
Spawning
request
Spawning
requestR
replication
Peer 1
loading range
Peer 2
loading range
Spawning
request
Spawning
request
Token
M R
gameplay
• Replicate the crowd event generation in echo
• Replicate the victim/thief in engine
conclusions
(+) Almost no change in the spawning clients code
(+) Cheap in bandwidth
(+) Data is the same in single and multiplayer
(-) No network balancing
(-) A lot of edge cases to handle when a spawning request is cancelled
(-) Systemic gameplay is not easy to replicate
objectives
• Need a way to replicate the player’s movements with good accuracy
• Animation quality of replicas must be the same as masters
• Must support join in progress
• Shouldn’t take too much bandwidth
comparison tool
HSM
Animation
NetBehaviorAI
Replica
Replica Brain
flow
Controller
HSM
Animation
NetBehaviorAI
Master
Replication
Final decisions
final decisions
conclusions
(+) Good replication quality
(+) Can recover nicely from divergences
(-) Expensive in bandwidth
(-) 3 state machines (HSM / NetBehaviorAI / animation graph) to
maintained
• Replicate NPC behavior at a very low cost
objectives
• Not a perfect match: not a first person game
• Quality of realization: same for masters and replicas
• Existing behaviors easily updated to support multiplayer
flow
Logic
HSM
Animation
HSM
Animation
Intentions
Master
Intentions
Replica
Logic
Replication
replication
Animations Navigation Weapons LookAt
Idle IdleIdle Idle
Play animation
Push
Stumble
…
Go to position
Wander
Follow
…
Sheath
Unsheath
Fire
…
Look at
position
Look at
target
RPC
conclusions
(+) Cheap in bandwidth
(+) Seamless migrations
(-) Average replication quality
(-) Services (navigation, animation…) must also be synchronized to
prevent behavior branching
coordinators
• Spawn NPCs
• UI
• Interactions
coordinators
Sensors
Distance
Line of sight
UI
Coordinators in previous Assassin’s Creed games
…
Actions
coordinators
Net data
Sensors synthesis
Execution count
Local state
Released entities
For local player
Sensors
Distance
Line of sight
UI
…
Actions
R
M
M
coordinators
Replica
Net data
Sensors
synthesis
…
Sensors
Replica
Net data
Sensors
synthesis
…
Sensors
Master
Net data
Sensors
synthesis
…
RPC
Sensors
RPCRPC
MementoMemento
conclusions
(+) Good replication quality
(+) Cheap in bandwidth
(+) Code and data are the same in single and multiplayer
(-) Join in progress can be tricky
(-) Reaction times can become noticeable
stations
stations
How does it work in single player :
• Crowd Life Manager updates all stations
• Stations = data containers (not systemic)
• Stations loaded with cells
• NPCs spawned/released by stations
stations
• Amount of stations and NPCs to track
Challenges of replicating:
• Stations are not replicated
• NPCs in stations can be masters, replicas, or even non-
replicated entities
replication
replication
What to replicate ?
• NPCs
• Station state
Master = token winner
split mastering
Crowd Life
Manager
Stations
NPCs
Peer 1
NetObject
(master)
Peer 2
NetObject
(replica)
Peer 3
NetObject
(replica)
Peer 4
NetObject
(replica)
Crowd Life
Manager
Stations
NPCs
Peer 2
NetObject
(master)
Peer 1
NetObject
(replica)
Peer 3
NetObject
(replica)
Peer 4
NetObject
(replica)
Peer 1 Peer 2
Replication
s
Memento
Memento
conclusions
(+) Only 1 net object per peer = big gains on bandwidth/CPU
(+) Each peer can run their own logics
(+) Data is already available on discovery
(-) Data is broadcast on all peers even if they don’t need it
(-) Execution logic tends to be complicated
stats Current bps
stats
• Below TRC of 92 kbps per peer (around 30 kbps outside fight)
• Most expensive systems:
• Proxies: list of vectors
• Player, but high replication quality
• Crowd life: lots of stations, actually cheap per station
quality
conclusion
(+) Cheap in bandwidth, no additional CPU cost
(+) Good replication quality
(+) Multiplayer team = gameplay team
(-) Limited to a low number of players
(-) Hard to identify sources of divergences
conclusion
Existing code kept
and converted to
multiplayer
Gdc   gameplay replication in acu with videos

More Related Content

What's hot

Rajat Monga at AI Frontiers: Deep Learning with TensorFlow
Rajat Monga at AI Frontiers: Deep Learning with TensorFlowRajat Monga at AI Frontiers: Deep Learning with TensorFlow
Rajat Monga at AI Frontiers: Deep Learning with TensorFlow
AI Frontiers
 
Tensorflow on Android
Tensorflow on AndroidTensorflow on Android
Tensorflow on Android
Koan-Sin Tan
 
Dark Silicon, Mobile Devices, and Possible Open-Source Solutions
Dark Silicon, Mobile Devices, and Possible Open-Source SolutionsDark Silicon, Mobile Devices, and Possible Open-Source Solutions
Dark Silicon, Mobile Devices, and Possible Open-Source SolutionsKoan-Sin Tan
 
Scope Stack Allocation
Scope Stack AllocationScope Stack Allocation
Scope Stack Allocation
Electronic Arts / DICE
 
Introduction to TensorFlow Lite
Introduction to TensorFlow Lite Introduction to TensorFlow Lite
Introduction to TensorFlow Lite
Koan-Sin Tan
 
TFLite NNAPI and GPU Delegates
TFLite NNAPI and GPU DelegatesTFLite NNAPI and GPU Delegates
TFLite NNAPI and GPU Delegates
Koan-Sin Tan
 
Practical guide to optimization in Unity
Practical guide to optimization in UnityPractical guide to optimization in Unity
Practical guide to optimization in Unity
DevGAMM Conference
 
【Unite 2017 Tokyo】スクリプタブル・レンダーパイプラインのカスタマイズと拡張
【Unite 2017 Tokyo】スクリプタブル・レンダーパイプラインのカスタマイズと拡張【Unite 2017 Tokyo】スクリプタブル・レンダーパイプラインのカスタマイズと拡張
【Unite 2017 Tokyo】スクリプタブル・レンダーパイプラインのカスタマイズと拡張
Unite2017Tokyo
 
Decima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero DawnDecima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero Dawn
Guerrilla
 
Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)
Johan Andersson
 
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...Johan Andersson
 
Teaching Recurrent Neural Networks using Tensorflow (May 2016)
Teaching Recurrent Neural Networks using Tensorflow (May 2016)Teaching Recurrent Neural Networks using Tensorflow (May 2016)
Teaching Recurrent Neural Networks using Tensorflow (May 2016)
Rajiv Shah
 
[UniteKorea2013] Memory profiling in Unity
[UniteKorea2013] Memory profiling in Unity[UniteKorea2013] Memory profiling in Unity
[UniteKorea2013] Memory profiling in Unity
William Hugo Yang
 
【Unite 2017 Tokyo】C#ジョブシステムによるモバイルゲームのパフォーマンス向上テクニック
【Unite 2017 Tokyo】C#ジョブシステムによるモバイルゲームのパフォーマンス向上テクニック【Unite 2017 Tokyo】C#ジョブシステムによるモバイルゲームのパフォーマンス向上テクニック
【Unite 2017 Tokyo】C#ジョブシステムによるモバイルゲームのパフォーマンス向上テクニック
Unity Technologies Japan K.K.
 
Application Profiling for Memory and Performance
Application Profiling for Memory and PerformanceApplication Profiling for Memory and Performance
Application Profiling for Memory and Performance
pradeepfn
 
Practical Guide for Optimizing Unity on Mobiles
Practical Guide for Optimizing Unity on MobilesPractical Guide for Optimizing Unity on Mobiles
Practical Guide for Optimizing Unity on Mobiles
Valentin Simonov
 
Rajat Monga, Engineering Director, TensorFlow, Google at MLconf 2016
Rajat Monga, Engineering Director, TensorFlow, Google at MLconf 2016Rajat Monga, Engineering Director, TensorFlow, Google at MLconf 2016
Rajat Monga, Engineering Director, TensorFlow, Google at MLconf 2016
MLconf
 
An Introduction to TensorFlow architecture
An Introduction to TensorFlow architectureAn Introduction to TensorFlow architecture
An Introduction to TensorFlow architecture
Mani Goswami
 

What's hot (20)

Rajat Monga at AI Frontiers: Deep Learning with TensorFlow
Rajat Monga at AI Frontiers: Deep Learning with TensorFlowRajat Monga at AI Frontiers: Deep Learning with TensorFlow
Rajat Monga at AI Frontiers: Deep Learning with TensorFlow
 
Tensorflow on Android
Tensorflow on AndroidTensorflow on Android
Tensorflow on Android
 
Dark Silicon, Mobile Devices, and Possible Open-Source Solutions
Dark Silicon, Mobile Devices, and Possible Open-Source SolutionsDark Silicon, Mobile Devices, and Possible Open-Source Solutions
Dark Silicon, Mobile Devices, and Possible Open-Source Solutions
 
Scope Stack Allocation
Scope Stack AllocationScope Stack Allocation
Scope Stack Allocation
 
Introduction to TensorFlow Lite
Introduction to TensorFlow Lite Introduction to TensorFlow Lite
Introduction to TensorFlow Lite
 
TFLite NNAPI and GPU Delegates
TFLite NNAPI and GPU DelegatesTFLite NNAPI and GPU Delegates
TFLite NNAPI and GPU Delegates
 
Practical guide to optimization in Unity
Practical guide to optimization in UnityPractical guide to optimization in Unity
Practical guide to optimization in Unity
 
Soc research
Soc researchSoc research
Soc research
 
【Unite 2017 Tokyo】スクリプタブル・レンダーパイプラインのカスタマイズと拡張
【Unite 2017 Tokyo】スクリプタブル・レンダーパイプラインのカスタマイズと拡張【Unite 2017 Tokyo】スクリプタブル・レンダーパイプラインのカスタマイズと拡張
【Unite 2017 Tokyo】スクリプタブル・レンダーパイプラインのカスタマイズと拡張
 
Lecture1
Lecture1Lecture1
Lecture1
 
Decima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero DawnDecima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero Dawn
 
Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)
 
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
 
Teaching Recurrent Neural Networks using Tensorflow (May 2016)
Teaching Recurrent Neural Networks using Tensorflow (May 2016)Teaching Recurrent Neural Networks using Tensorflow (May 2016)
Teaching Recurrent Neural Networks using Tensorflow (May 2016)
 
[UniteKorea2013] Memory profiling in Unity
[UniteKorea2013] Memory profiling in Unity[UniteKorea2013] Memory profiling in Unity
[UniteKorea2013] Memory profiling in Unity
 
【Unite 2017 Tokyo】C#ジョブシステムによるモバイルゲームのパフォーマンス向上テクニック
【Unite 2017 Tokyo】C#ジョブシステムによるモバイルゲームのパフォーマンス向上テクニック【Unite 2017 Tokyo】C#ジョブシステムによるモバイルゲームのパフォーマンス向上テクニック
【Unite 2017 Tokyo】C#ジョブシステムによるモバイルゲームのパフォーマンス向上テクニック
 
Application Profiling for Memory and Performance
Application Profiling for Memory and PerformanceApplication Profiling for Memory and Performance
Application Profiling for Memory and Performance
 
Practical Guide for Optimizing Unity on Mobiles
Practical Guide for Optimizing Unity on MobilesPractical Guide for Optimizing Unity on Mobiles
Practical Guide for Optimizing Unity on Mobiles
 
Rajat Monga, Engineering Director, TensorFlow, Google at MLconf 2016
Rajat Monga, Engineering Director, TensorFlow, Google at MLconf 2016Rajat Monga, Engineering Director, TensorFlow, Google at MLconf 2016
Rajat Monga, Engineering Director, TensorFlow, Google at MLconf 2016
 
An Introduction to TensorFlow architecture
An Introduction to TensorFlow architectureAn Introduction to TensorFlow architecture
An Introduction to TensorFlow architecture
 

Viewers also liked

The evolution of a gamer
The evolution of a gamerThe evolution of a gamer
The evolution of a gamer
Laura Lorek
 
Accelerate Your Game Development on Android*
Accelerate Your Game Development on Android*Accelerate Your Game Development on Android*
Accelerate Your Game Development on Android*
Intel® Software
 
Gameplay design patterns presentation at dragon's lair, stockholm, sweden 201...
Gameplay design patterns presentation at dragon's lair, stockholm, sweden 201...Gameplay design patterns presentation at dragon's lair, stockholm, sweden 201...
Gameplay design patterns presentation at dragon's lair, stockholm, sweden 201...Staffan Björk
 
Building Gameplay
Building GameplayBuilding Gameplay
Building Gameplay
Ben Garney
 
Game Development Using HTML 5
Game Development Using HTML 5Game Development Using HTML 5
Game Development Using HTML 5
osa_ora
 
Randy_Smith_Landing_on_Mars-Our_Rocky_Path_to_Innovative_Gameplay
Randy_Smith_Landing_on_Mars-Our_Rocky_Path_to_Innovative_GameplayRandy_Smith_Landing_on_Mars-Our_Rocky_Path_to_Innovative_Gameplay
Randy_Smith_Landing_on_Mars-Our_Rocky_Path_to_Innovative_Gameplay
Mary Chan
 
3 - 2 [NOTES] - Gamer Types
3 - 2 [NOTES] - Gamer Types3 - 2 [NOTES] - Gamer Types
3 - 2 [NOTES] - Gamer TypesGreg Wondra
 

Viewers also liked (7)

The evolution of a gamer
The evolution of a gamerThe evolution of a gamer
The evolution of a gamer
 
Accelerate Your Game Development on Android*
Accelerate Your Game Development on Android*Accelerate Your Game Development on Android*
Accelerate Your Game Development on Android*
 
Gameplay design patterns presentation at dragon's lair, stockholm, sweden 201...
Gameplay design patterns presentation at dragon's lair, stockholm, sweden 201...Gameplay design patterns presentation at dragon's lair, stockholm, sweden 201...
Gameplay design patterns presentation at dragon's lair, stockholm, sweden 201...
 
Building Gameplay
Building GameplayBuilding Gameplay
Building Gameplay
 
Game Development Using HTML 5
Game Development Using HTML 5Game Development Using HTML 5
Game Development Using HTML 5
 
Randy_Smith_Landing_on_Mars-Our_Rocky_Path_to_Innovative_Gameplay
Randy_Smith_Landing_on_Mars-Our_Rocky_Path_to_Innovative_GameplayRandy_Smith_Landing_on_Mars-Our_Rocky_Path_to_Innovative_Gameplay
Randy_Smith_Landing_on_Mars-Our_Rocky_Path_to_Innovative_Gameplay
 
3 - 2 [NOTES] - Gamer Types
3 - 2 [NOTES] - Gamer Types3 - 2 [NOTES] - Gamer Types
3 - 2 [NOTES] - Gamer Types
 

Similar to Gdc gameplay replication in acu with videos

BSidesDelhi 2018: Headshot - Game Hacking on macOS
BSidesDelhi 2018: Headshot - Game Hacking on macOSBSidesDelhi 2018: Headshot - Game Hacking on macOS
BSidesDelhi 2018: Headshot - Game Hacking on macOS
BSides Delhi
 
Distributed computing and hyper-parameter tuning with Ray
Distributed computing and hyper-parameter tuning with RayDistributed computing and hyper-parameter tuning with Ray
Distributed computing and hyper-parameter tuning with Ray
Jan Margeta
 
The Next Mainstream Programming Language: A Game Developer's Perspective
The Next Mainstream Programming Language: A Game Developer's PerspectiveThe Next Mainstream Programming Language: A Game Developer's Perspective
The Next Mainstream Programming Language: A Game Developer's Perspective
kfrdbs
 
Connect (4|n)
Connect (4|n)Connect (4|n)
Connect (4|n)
Alessandro Manfredi
 
4Developers 2015: Gamedev-grade debugging - Leszek Godlewski
4Developers 2015: Gamedev-grade debugging - Leszek Godlewski4Developers 2015: Gamedev-grade debugging - Leszek Godlewski
4Developers 2015: Gamedev-grade debugging - Leszek Godlewski
PROIDEA
 
Distributed computing with Ray. Find your hyper-parameters, speed up your Pan...
Distributed computing with Ray. Find your hyper-parameters, speed up your Pan...Distributed computing with Ray. Find your hyper-parameters, speed up your Pan...
Distributed computing with Ray. Find your hyper-parameters, speed up your Pan...
Jan Margeta
 
Lecture 02: Layered Architecture of Game Engine | GAMES104 - Modern Game Engi...
Lecture 02: Layered Architecture of Game Engine | GAMES104 - Modern Game Engi...Lecture 02: Layered Architecture of Game Engine | GAMES104 - Modern Game Engi...
Lecture 02: Layered Architecture of Game Engine | GAMES104 - Modern Game Engi...
Piccolo Engine
 
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
Terrance Cohen
 
Gamedev-grade debugging
Gamedev-grade debuggingGamedev-grade debugging
Gamedev-grade debugging
Leszek Godlewski
 
XPDDS17: uniprof: Transparent Unikernel Performance Profiling and Debugging -...
XPDDS17: uniprof: Transparent Unikernel Performance Profiling and Debugging -...XPDDS17: uniprof: Transparent Unikernel Performance Profiling and Debugging -...
XPDDS17: uniprof: Transparent Unikernel Performance Profiling and Debugging -...
The Linux Foundation
 
Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT Talks
Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT TalksMykhailo Zarai "Be careful when dealing with C++" at Rivne IT Talks
Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT Talks
Vadym Muliavka
 
How shit works: the CPU
How shit works: the CPUHow shit works: the CPU
How shit works: the CPU
Tomer Gabel
 
ARISE
ARISEARISE
ARISE
kaptoxic
 
Making a game with Molehill: Zombie Tycoon
Making a game with Molehill: Zombie TycoonMaking a game with Molehill: Zombie Tycoon
Making a game with Molehill: Zombie TycoonJean-Philippe Doiron
 
Combining the strength of erlang and Ruby
Combining the strength of erlang and RubyCombining the strength of erlang and Ruby
Combining the strength of erlang and Ruby
Martin Rehfeld
 
Combining the Strengths or Erlang and Ruby
Combining the Strengths or Erlang and RubyCombining the Strengths or Erlang and Ruby
Combining the Strengths or Erlang and Ruby
Wooga
 
Thoughts on consistency models
Thoughts on consistency modelsThoughts on consistency models
Thoughts on consistency models
rogerbodamer
 
Separating Hype from Reality in Deep Learning with Sameer Farooqui
 Separating Hype from Reality in Deep Learning with Sameer Farooqui Separating Hype from Reality in Deep Learning with Sameer Farooqui
Separating Hype from Reality in Deep Learning with Sameer Farooqui
Databricks
 
Startup.Ml: Using neon for NLP and Localization Applications
Startup.Ml: Using neon for NLP and Localization Applications Startup.Ml: Using neon for NLP and Localization Applications
Startup.Ml: Using neon for NLP and Localization Applications
Intel Nervana
 
FGS 2011: Making A Game With Molehill: Zombie Tycoon
FGS 2011: Making A Game With Molehill: Zombie TycoonFGS 2011: Making A Game With Molehill: Zombie Tycoon
FGS 2011: Making A Game With Molehill: Zombie Tycoon
mochimedia
 

Similar to Gdc gameplay replication in acu with videos (20)

BSidesDelhi 2018: Headshot - Game Hacking on macOS
BSidesDelhi 2018: Headshot - Game Hacking on macOSBSidesDelhi 2018: Headshot - Game Hacking on macOS
BSidesDelhi 2018: Headshot - Game Hacking on macOS
 
Distributed computing and hyper-parameter tuning with Ray
Distributed computing and hyper-parameter tuning with RayDistributed computing and hyper-parameter tuning with Ray
Distributed computing and hyper-parameter tuning with Ray
 
The Next Mainstream Programming Language: A Game Developer's Perspective
The Next Mainstream Programming Language: A Game Developer's PerspectiveThe Next Mainstream Programming Language: A Game Developer's Perspective
The Next Mainstream Programming Language: A Game Developer's Perspective
 
Connect (4|n)
Connect (4|n)Connect (4|n)
Connect (4|n)
 
4Developers 2015: Gamedev-grade debugging - Leszek Godlewski
4Developers 2015: Gamedev-grade debugging - Leszek Godlewski4Developers 2015: Gamedev-grade debugging - Leszek Godlewski
4Developers 2015: Gamedev-grade debugging - Leszek Godlewski
 
Distributed computing with Ray. Find your hyper-parameters, speed up your Pan...
Distributed computing with Ray. Find your hyper-parameters, speed up your Pan...Distributed computing with Ray. Find your hyper-parameters, speed up your Pan...
Distributed computing with Ray. Find your hyper-parameters, speed up your Pan...
 
Lecture 02: Layered Architecture of Game Engine | GAMES104 - Modern Game Engi...
Lecture 02: Layered Architecture of Game Engine | GAMES104 - Modern Game Engi...Lecture 02: Layered Architecture of Game Engine | GAMES104 - Modern Game Engi...
Lecture 02: Layered Architecture of Game Engine | GAMES104 - Modern Game Engi...
 
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
 
Gamedev-grade debugging
Gamedev-grade debuggingGamedev-grade debugging
Gamedev-grade debugging
 
XPDDS17: uniprof: Transparent Unikernel Performance Profiling and Debugging -...
XPDDS17: uniprof: Transparent Unikernel Performance Profiling and Debugging -...XPDDS17: uniprof: Transparent Unikernel Performance Profiling and Debugging -...
XPDDS17: uniprof: Transparent Unikernel Performance Profiling and Debugging -...
 
Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT Talks
Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT TalksMykhailo Zarai "Be careful when dealing with C++" at Rivne IT Talks
Mykhailo Zarai "Be careful when dealing with C++" at Rivne IT Talks
 
How shit works: the CPU
How shit works: the CPUHow shit works: the CPU
How shit works: the CPU
 
ARISE
ARISEARISE
ARISE
 
Making a game with Molehill: Zombie Tycoon
Making a game with Molehill: Zombie TycoonMaking a game with Molehill: Zombie Tycoon
Making a game with Molehill: Zombie Tycoon
 
Combining the strength of erlang and Ruby
Combining the strength of erlang and RubyCombining the strength of erlang and Ruby
Combining the strength of erlang and Ruby
 
Combining the Strengths or Erlang and Ruby
Combining the Strengths or Erlang and RubyCombining the Strengths or Erlang and Ruby
Combining the Strengths or Erlang and Ruby
 
Thoughts on consistency models
Thoughts on consistency modelsThoughts on consistency models
Thoughts on consistency models
 
Separating Hype from Reality in Deep Learning with Sameer Farooqui
 Separating Hype from Reality in Deep Learning with Sameer Farooqui Separating Hype from Reality in Deep Learning with Sameer Farooqui
Separating Hype from Reality in Deep Learning with Sameer Farooqui
 
Startup.Ml: Using neon for NLP and Localization Applications
Startup.Ml: Using neon for NLP and Localization Applications Startup.Ml: Using neon for NLP and Localization Applications
Startup.Ml: Using neon for NLP and Localization Applications
 
FGS 2011: Making A Game With Molehill: Zombie Tycoon
FGS 2011: Making A Game With Molehill: Zombie TycoonFGS 2011: Making A Game With Molehill: Zombie Tycoon
FGS 2011: Making A Game With Molehill: Zombie Tycoon
 

Recently uploaded

Suzanne Lagerweij - Influence Without Power - Why Empathy is Your Best Friend...
Suzanne Lagerweij - Influence Without Power - Why Empathy is Your Best Friend...Suzanne Lagerweij - Influence Without Power - Why Empathy is Your Best Friend...
Suzanne Lagerweij - Influence Without Power - Why Empathy is Your Best Friend...
Suzanne Lagerweij
 
International Workshop on Artificial Intelligence in Software Testing
International Workshop on Artificial Intelligence in Software TestingInternational Workshop on Artificial Intelligence in Software Testing
International Workshop on Artificial Intelligence in Software Testing
Sebastiano Panichella
 
María Carolina Martínez - eCommerce Day Colombia 2024
María Carolina Martínez - eCommerce Day Colombia 2024María Carolina Martínez - eCommerce Day Colombia 2024
María Carolina Martínez - eCommerce Day Colombia 2024
eCommerce Institute
 
Announcement of 18th IEEE International Conference on Software Testing, Verif...
Announcement of 18th IEEE International Conference on Software Testing, Verif...Announcement of 18th IEEE International Conference on Software Testing, Verif...
Announcement of 18th IEEE International Conference on Software Testing, Verif...
Sebastiano Panichella
 
Gregory Harris' Civics Presentation.pptx
Gregory Harris' Civics Presentation.pptxGregory Harris' Civics Presentation.pptx
Gregory Harris' Civics Presentation.pptx
gharris9
 
Supercharge your AI - SSP Industry Breakout Session 2024-v2_1.pdf
Supercharge your AI - SSP Industry Breakout Session 2024-v2_1.pdfSupercharge your AI - SSP Industry Breakout Session 2024-v2_1.pdf
Supercharge your AI - SSP Industry Breakout Session 2024-v2_1.pdf
Access Innovations, Inc.
 
Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...
Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...
Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...
SkillCertProExams
 
Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024
Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024
Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024
Dutch Power
 
2024-05-30_meetup_devops_aix-marseille.pdf
2024-05-30_meetup_devops_aix-marseille.pdf2024-05-30_meetup_devops_aix-marseille.pdf
2024-05-30_meetup_devops_aix-marseille.pdf
Frederic Leger
 
AWANG ANIQKMALBIN AWANG TAJUDIN B22080004 ASSIGNMENT 2 MPU3193 PHILOSOPHY AND...
AWANG ANIQKMALBIN AWANG TAJUDIN B22080004 ASSIGNMENT 2 MPU3193 PHILOSOPHY AND...AWANG ANIQKMALBIN AWANG TAJUDIN B22080004 ASSIGNMENT 2 MPU3193 PHILOSOPHY AND...
AWANG ANIQKMALBIN AWANG TAJUDIN B22080004 ASSIGNMENT 2 MPU3193 PHILOSOPHY AND...
AwangAniqkmals
 
Gregory Harris - Cycle 2 - Civics Presentation
Gregory Harris - Cycle 2 - Civics PresentationGregory Harris - Cycle 2 - Civics Presentation
Gregory Harris - Cycle 2 - Civics Presentation
gharris9
 
Media as a Mind Controlling Strategy In Old and Modern Era
Media as a Mind Controlling Strategy In Old and Modern EraMedia as a Mind Controlling Strategy In Old and Modern Era
Media as a Mind Controlling Strategy In Old and Modern Era
faizulhassanfaiz1670
 
ASONAM2023_presection_slide_track-recommendation.pdf
ASONAM2023_presection_slide_track-recommendation.pdfASONAM2023_presection_slide_track-recommendation.pdf
ASONAM2023_presection_slide_track-recommendation.pdf
ToshihiroIto4
 
Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024
Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024
Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024
Dutch Power
 
Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Doctoral Symposium at the 17th IEEE International Conference on Software Test...Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Sebastiano Panichella
 
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdfBonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
khadija278284
 
Burning Issue Presentation By Kenmaryon.pdf
Burning Issue Presentation By Kenmaryon.pdfBurning Issue Presentation By Kenmaryon.pdf
Burning Issue Presentation By Kenmaryon.pdf
kkirkland2
 
Tom tresser burning issue.pptx My Burning issue
Tom tresser burning issue.pptx My Burning issueTom tresser burning issue.pptx My Burning issue
Tom tresser burning issue.pptx My Burning issue
amekonnen
 
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie Wells
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie WellsCollapsing Narratives: Exploring Non-Linearity • a micro report by Rosie Wells
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie Wells
Rosie Wells
 

Recently uploaded (19)

Suzanne Lagerweij - Influence Without Power - Why Empathy is Your Best Friend...
Suzanne Lagerweij - Influence Without Power - Why Empathy is Your Best Friend...Suzanne Lagerweij - Influence Without Power - Why Empathy is Your Best Friend...
Suzanne Lagerweij - Influence Without Power - Why Empathy is Your Best Friend...
 
International Workshop on Artificial Intelligence in Software Testing
International Workshop on Artificial Intelligence in Software TestingInternational Workshop on Artificial Intelligence in Software Testing
International Workshop on Artificial Intelligence in Software Testing
 
María Carolina Martínez - eCommerce Day Colombia 2024
María Carolina Martínez - eCommerce Day Colombia 2024María Carolina Martínez - eCommerce Day Colombia 2024
María Carolina Martínez - eCommerce Day Colombia 2024
 
Announcement of 18th IEEE International Conference on Software Testing, Verif...
Announcement of 18th IEEE International Conference on Software Testing, Verif...Announcement of 18th IEEE International Conference on Software Testing, Verif...
Announcement of 18th IEEE International Conference on Software Testing, Verif...
 
Gregory Harris' Civics Presentation.pptx
Gregory Harris' Civics Presentation.pptxGregory Harris' Civics Presentation.pptx
Gregory Harris' Civics Presentation.pptx
 
Supercharge your AI - SSP Industry Breakout Session 2024-v2_1.pdf
Supercharge your AI - SSP Industry Breakout Session 2024-v2_1.pdfSupercharge your AI - SSP Industry Breakout Session 2024-v2_1.pdf
Supercharge your AI - SSP Industry Breakout Session 2024-v2_1.pdf
 
Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...
Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...
Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...
 
Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024
Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024
Presentatie 4. Jochen Cremer - TU Delft 28 mei 2024
 
2024-05-30_meetup_devops_aix-marseille.pdf
2024-05-30_meetup_devops_aix-marseille.pdf2024-05-30_meetup_devops_aix-marseille.pdf
2024-05-30_meetup_devops_aix-marseille.pdf
 
AWANG ANIQKMALBIN AWANG TAJUDIN B22080004 ASSIGNMENT 2 MPU3193 PHILOSOPHY AND...
AWANG ANIQKMALBIN AWANG TAJUDIN B22080004 ASSIGNMENT 2 MPU3193 PHILOSOPHY AND...AWANG ANIQKMALBIN AWANG TAJUDIN B22080004 ASSIGNMENT 2 MPU3193 PHILOSOPHY AND...
AWANG ANIQKMALBIN AWANG TAJUDIN B22080004 ASSIGNMENT 2 MPU3193 PHILOSOPHY AND...
 
Gregory Harris - Cycle 2 - Civics Presentation
Gregory Harris - Cycle 2 - Civics PresentationGregory Harris - Cycle 2 - Civics Presentation
Gregory Harris - Cycle 2 - Civics Presentation
 
Media as a Mind Controlling Strategy In Old and Modern Era
Media as a Mind Controlling Strategy In Old and Modern EraMedia as a Mind Controlling Strategy In Old and Modern Era
Media as a Mind Controlling Strategy In Old and Modern Era
 
ASONAM2023_presection_slide_track-recommendation.pdf
ASONAM2023_presection_slide_track-recommendation.pdfASONAM2023_presection_slide_track-recommendation.pdf
ASONAM2023_presection_slide_track-recommendation.pdf
 
Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024
Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024
Presentatie 8. Joost van der Linde & Daniel Anderton - Eliq 28 mei 2024
 
Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Doctoral Symposium at the 17th IEEE International Conference on Software Test...Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Doctoral Symposium at the 17th IEEE International Conference on Software Test...
 
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdfBonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
 
Burning Issue Presentation By Kenmaryon.pdf
Burning Issue Presentation By Kenmaryon.pdfBurning Issue Presentation By Kenmaryon.pdf
Burning Issue Presentation By Kenmaryon.pdf
 
Tom tresser burning issue.pptx My Burning issue
Tom tresser burning issue.pptx My Burning issueTom tresser burning issue.pptx My Burning issue
Tom tresser burning issue.pptx My Burning issue
 
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie Wells
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie WellsCollapsing Narratives: Exploring Non-Linearity • a micro report by Rosie Wells
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie Wells
 

Gdc gameplay replication in acu with videos

Editor's Notes

  1. In the previous Assassin’s Creed, the multiplayer game was a different executable. It was running in a different map, not in an open world. Also it was using a server.
  2. Open world game Coop peer to peer, 1 to 4 players Huge existing code base Simulation bubble around each player: 80 meters Loading grid: blocks of 32 meters (around 40 blocks loaded)
  3. Peer = Player NPC is an entity 1st entity spawned = master
  4. Peer = Player NPC is an entity 1st entity spawned = master Join in progress Mementos Leave in progress Migration
  5. NetTokens are time based: the first one that has requested the token is the winner. The time used is the network time. The time is in each message, so each peer get the same comparison result. In case of equality the peer with the lower peer ID wins.
  6. A RPC is converted into a reliable message. A RPC can be persisted for Join In Progress: these functions returns a cookie than you can persist. As long as it is persisted, this function will be executed on all peers that create a new replica of this object. You can execute or reexecute a RPC through the cookie. If you receive a RPC PlayAnimation( Animation * anim ), but your entity is not ready to play this animation, you can keep the cookie, and execute the RPC when your entity is ready. You can even call PlayAnimation each frame until it is successful. If RPC1 is ordered, RPC2 is not, and RPC1 transport packet is lost, then RPC2 can be executed.
  7. Example 1: the master executes a RPC, it is then broadcast and executed on all replicas. Example 2: a replica executes a RPC, it is then unicast to the master that executes it, and the master broadcast it to all the replicas except the initial sender.
  8. If player 2 has created a transient replicated entity, and it sends to player 1 a NetHandle to this entity, then player 1 can get the position and the sight of this entity. It can also find out if this entity still exists for player 2.
  9. Asynchronous process: pool of spawning requests. The spawning manager execute each frame the most urgent spawning requests. Different strategies: Spawning: generate a new entity. Acquisition: reuse an entity released by another spawning client. Around 500 spawned NPCs, but less than 60 are individually replicated. The entities not individually replicated are managed by the massive crowd system that handles replication at a higher level.
  10. In Echo, master is spawned, replicas are automatically created This is for systems with unpredictable spawning request, ex: crowd members, players Only the NPC type and a seed are broadcast.
  11. In engine, a gameplay system decides to spawn an entity. This gameplay coordinator can be active on multiple peers, and we don’t want to have as many entities than peers. A spawning request is added on all peers. It asks for a token, and the spawning request that manage to acquire the token will spawn the master. The token is also used to set the netkey of the entity. The other peers will spawn a replica. The generation seed is generated with the ID of the spawning client, so nothing is broadcast as the NPC type is known by all peers
  12. This is a tool to debug player replication: a player replica is created locally, and receives all messages with a fixed latency.
  13. Controller = hardware HSM = code Animation = data We could replicate the controller input, but the game is not deterministic. We could replicate the animation, but that would be very expensive. We are replicated the animation logic (called the HSM for Human State Machine). Replication state machine allows to cope with network realities such as loss packets, latency variations. Not too intrusive on HSM code. Virtually no environment checks on replicas, all done by the master = low CPU cost
  14. 3 state machines: HSM -> enter in all states + send final decisions Animation graph: extra transitions for the replica
  15. Cannot reuse the player behavior replication: Too expensive in bandwidth. Doesn’t handle migration: the local player is always a master Ideally NPCs should be replicated at the character logic. Since there is a huge existing code base, we have actually added a new layer of replication between the character logic and the animation logic Intentions: layer of replication between the character logic, and the animation logic
  16. The intention framework is a state machine. There are 4 concurrent states: Animations, navigation, weapons and lookat. All these states can be active at the same time, as we can have a NPC walking, while playing an upper body animation, with his sword unsheathed, looking at his target. Under all these concurrent states, we have some exclusive states. First, there is always an Idle state, when the concurrent state is not active. Then we have some states for all the possible actions Transitions to an active state are triggered by RPCs, and are a persisted for join in progress. Once an action is completed, there is a transition to the Idle state; the RPC is unpersisted.
  17. A gameplay coordinator manages the behavior of a list of NPCs, and handle their interactions with the player. Once the NPC is spawned, the gameplay coordinator pushes a character logic on its AI component. Examples of gameplay coordinators: tail, defend, patrol guards… Around 40 different coordinators in ACU. Examples of character logic: navigate, fight, search, play animation…
  18. Examples: Kill, tail, protect, chase…
  19. Actions are not applied on replicas Sensors and UI is for local player Net data is shared between all instances Actions are applied on masters A replica coordinator sends data to the master through RPCs. The master does the synthesis of these information, and broadcast it to the replicas through a memento. Since masters and replicas share the same data, they take the same decisions. In case of migration, or disconnection, everything is already shared. Example for shared data: for an interaction coordinator, each peer will notify the master whereas the local player is ready to trigger the interaction. All players will be aware of the state of the other players, and will allow the interaction accordingly.
  20. Crowd stations: NPCs that are not walkers e.g. merchant stands, artisans, groups of people talking, etc. They are not essential for gameplay.
  21. Around 900 stations loaded, and up to 600 spawned NPCs non-replicated entities: bulk crowd members.
  22. State: active, started, aborted, completed, nb NPC spawned, released, lost Master = token winner (token requested by the cell)
  23. How do we replicate: Split Mastering Each manager creates it's own NetObject NetObjects discovered are linked to the crowd life manager Stations: Check who will manage each station using NetTokens Winner of token is the Master of that station. NPCs: Check if the entity is a master or a replica. For all “Local Masters”, write the state changes in the master NetObject For all “Remote Replicas”, listen for the memento callback of remote peers and change state to follow master. This split mastering pattern is also used for the proxies, and for the players data (inventory, customization)
  24. Proxies are a saving for other systems
  25. Hard to evaluate, similar to playing this game.
  26. Need a lot of logs and a good logging tool to debug
  27. Need a lot of logs and a good logging tool to debug