SlideShare a Scribd company logo
1 of 22
Hitman
From the box to the cloud
Christian Corsano
Lead Online Programmer
@ccorsano
Video
Hitman
• Sixth game of a nearly 20 years old
franchise
• Third person, stealth-action puzzle game
• Huge sandbox levels to explore
• Figure out the clockwork, take out the
target
• AAA title, shipping on PC, PS4 and XBoxOne
From Absolution to Hitman
• Hitman Absolution (2012)
• Modern, accessible
• New game engine (Glacier 2)
• Story driven
• Online, Contracts mode
• Less appealing to historical Hitman player
• Hitman
• Keep it accessible
• Bring back more freedom of approach
• Deliver it in a brand new way
Hitman as a Service
• Ever expanding, ever evolving
• Digital first
• Episodic
• Listen and react to the community
• Live content
Backend
• Extensibility
• Server delivered missions
• Server delivered menus
• Server driven game modes
• Authoritative server
• Scoring
• Progression
• Contracts creation
• Supporting services
• Analytics, authorization, configuration,
administration
Why Azure
• Platform as a Service leader
• Extensive toolbox of services
• Choosing the right tool for the right job !
• Familiar toolset for game developers
• Visual Studio
• C#
Services overview
WebApps
˃ Shared services & web tools
CloudServices
˃ Game logic and stateful user sessions
Search
˃ UGC discoverability
Storage
˃ Blob, Key value storage & Queues
SQL
˃ Relational storage
StreamAnalytics
˃ Analytic processing
DocumentDB
˃ Object storage
AppInsights
˃ Service monitoring & diagnostics
DataFactory
˃ Analytic pipeline orchestration
HDInsight
˃ On-demand big data processing
EventHub
˃ Metric events pipeline
Redis Cache
˃ Managed Redis
Event-based evaluation
• Progression, Scoring and more
• Examples: NPC Kill, Disguise, Trespassing,
Shots fired
• C# ”Scripts” evaluation as needed
• Bigger evaluation at the end of a session
Development process
• DevOps-like, Iterative development
• Built first services and started iterating
• Live internally in the first year
• Regular releases
• Been running live ever since
• Service Oriented Architecture
• Actor Model through Microsoft Orleans
Going deeper: Game services
Game Service Storage Account
Storage tables
Config blobs
(public)
Config blobs
(public)
Resource blobs
(private)
Resource blobs
(private)
Service blobs
(private)
Service blobs
(private)
Game Cloud Service
Service Web RolesService Web Roles Service Worker
Roles
Service Worker
Roles
Orleans
Game Service SQL DB
SQL Database
Hitman
Game Client
Azure Redis
Cache
Azure
Search
Orleans
• Actor model for .net
• Open source framework
• Isolated, persistent, light weight, single
threaded objects
• Dynamically instanciated
• Blocking concurrency at the actor level
• Each player is an actor
• Great way to scale: run more actors
• Isolate user sessions
• Automated lifecycle
• Handle concurrency with minimal contention
Service Fabric
• Same approach, but fully managed
• Actors running on a scalable cluster
• Better local emulation for development
Analytics
• Vital system
• Business indicators
• Gameplay feedback
• Issues investigation
• Custom assembly of Azure services
• Web collector
• EventHub
• Stream Analytic jobs
• Data Factory
• HDInsights (Hadoop)
Data pipeline
Collector Event
Hub
Stream
processing
Data
Orchestration
Aggregation Prepared
data store
Fine-grained
aggregations
Data factory video
Tutorial level
Looking back
• One year being live
Looking forward
• Long term plans ahead !

More Related Content

What's hot

BizBook365 : A microservice approach
BizBook365 : A microservice approachBizBook365 : A microservice approach
BizBook365 : A microservice approachFoyzul Karim
 
Serverless: The future of application delivery
Serverless: The future of application deliveryServerless: The future of application delivery
Serverless: The future of application deliveryDoug Vanderweide
 
Microservices: A developer's approach
Microservices: A developer's approachMicroservices: A developer's approach
Microservices: A developer's approachFoyzul Karim
 
Cooking Akka.net and Azure Service Fabric together
Cooking Akka.net and Azure Service Fabric togetherCooking Akka.net and Azure Service Fabric together
Cooking Akka.net and Azure Service Fabric togetherAlessandro Melchiori
 
Антон Бойко "Разделяй и властвуй — набор практик для построения масштабируемо...
Антон Бойко "Разделяй и властвуй — набор практик для построения масштабируемо...Антон Бойко "Разделяй и властвуй — набор практик для построения масштабируемо...
Антон Бойко "Разделяй и властвуй — набор практик для построения масштабируемо...Marina Peregud
 
From Local to Global
From Local to Global From Local to Global
From Local to Global AWS Germany
 
The Story of Automation
The Story of AutomationThe Story of Automation
The Story of Automation99X Technology
 

What's hot (11)

BizBook365 : A microservice approach
BizBook365 : A microservice approachBizBook365 : A microservice approach
BizBook365 : A microservice approach
 
Head in the clouds
Head in the cloudsHead in the clouds
Head in the clouds
 
Serverless: The future of application delivery
Serverless: The future of application deliveryServerless: The future of application delivery
Serverless: The future of application delivery
 
Microservices: A developer's approach
Microservices: A developer's approachMicroservices: A developer's approach
Microservices: A developer's approach
 
Cooking Akka.net and Azure Service Fabric together
Cooking Akka.net and Azure Service Fabric togetherCooking Akka.net and Azure Service Fabric together
Cooking Akka.net and Azure Service Fabric together
 
Антон Бойко "Разделяй и властвуй — набор практик для построения масштабируемо...
Антон Бойко "Разделяй и властвуй — набор практик для построения масштабируемо...Антон Бойко "Разделяй и властвуй — набор практик для построения масштабируемо...
Антон Бойко "Разделяй и властвуй — набор практик для построения масштабируемо...
 
From Local to Global
From Local to Global From Local to Global
From Local to Global
 
The Story of Automation
The Story of AutomationThe Story of Automation
The Story of Automation
 
RavenDB 3.5
RavenDB 3.5RavenDB 3.5
RavenDB 3.5
 
Planidoo & Zotonic
Planidoo & ZotonicPlanidoo & Zotonic
Planidoo & Zotonic
 
Heroku
HerokuHeroku
Heroku
 

Similar to Christian Corsano (Io-Interactive) - Hitman – the first episodic AAA game and Azure

Massively Social != Massively Multiplayer
Massively Social != Massively MultiplayerMassively Social != Massively Multiplayer
Massively Social != Massively MultiplayerPaul Furio
 
MMO Design Architecture by Andrew
MMO Design Architecture by AndrewMMO Design Architecture by Andrew
MMO Design Architecture by AndrewAgate Studio
 
Deep Dive: Amazon Lumberyard & Amazon GameLift
Deep Dive: Amazon Lumberyard & Amazon GameLiftDeep Dive: Amazon Lumberyard & Amazon GameLift
Deep Dive: Amazon Lumberyard & Amazon GameLiftAmazon Web Services
 
Maximize Your Production Effort (English)
Maximize Your Production Effort (English)Maximize Your Production Effort (English)
Maximize Your Production Effort (English)slantsixgames
 
AWS re:Invent 2016: Content and Data Platforms at Vevo: Rebuilding and Scalin...
AWS re:Invent 2016: Content and Data Platforms at Vevo: Rebuilding and Scalin...AWS re:Invent 2016: Content and Data Platforms at Vevo: Rebuilding and Scalin...
AWS re:Invent 2016: Content and Data Platforms at Vevo: Rebuilding and Scalin...AwsReinventSlides
 
A practical architecture design for mmo casual game
A practical architecture design for mmo casual gameA practical architecture design for mmo casual game
A practical architecture design for mmo casual gameSon Aris
 
A practical architecture design for MMO casual game
A practical architecture design for MMO casual gameA practical architecture design for MMO casual game
A practical architecture design for MMO casual gamewe20
 
DIY Live Events using Yammer and Microsoft Stream
DIY Live Events using Yammer and Microsoft StreamDIY Live Events using Yammer and Microsoft Stream
DIY Live Events using Yammer and Microsoft StreamJohn Moore
 
Supersize your production pipe enjmin 2013 v1.1 hd
Supersize your production pipe    enjmin 2013 v1.1 hdSupersize your production pipe    enjmin 2013 v1.1 hd
Supersize your production pipe enjmin 2013 v1.1 hdslantsixgames
 
Write retrogames in the web and add something more with Azure
Write retrogames in the web and add something more with AzureWrite retrogames in the web and add something more with Azure
Write retrogames in the web and add something more with AzureMarco Parenzan
 
Writing a Fullstack Application with Javascript - Remote media player
Writing a Fullstack Application with Javascript - Remote media playerWriting a Fullstack Application with Javascript - Remote media player
Writing a Fullstack Application with Javascript - Remote media playerTikal Knowledge
 
Game Programming - Cloud Development
Game Programming - Cloud DevelopmentGame Programming - Cloud Development
Game Programming - Cloud DevelopmentNick Pruehs
 
Twitch-ready 3D-Games with Amazon Lumberyard and GameLift
Twitch-ready 3D-Games with Amazon Lumberyard and GameLiftTwitch-ready 3D-Games with Amazon Lumberyard and GameLift
Twitch-ready 3D-Games with Amazon Lumberyard and GameLiftAmazon Web Services
 
Visug: Say Hello to my little friend: a session on Kinect
Visug: Say Hello to my little friend: a session on KinectVisug: Say Hello to my little friend: a session on Kinect
Visug: Say Hello to my little friend: a session on KinectVisug
 
Game On! Exploring Microservices with a Text-Based Adventure Game
Game On! Exploring Microservices with a Text-Based Adventure GameGame On! Exploring Microservices with a Text-Based Adventure Game
Game On! Exploring Microservices with a Text-Based Adventure GameErin Schnabel
 
Reactive Development: Commands, Actors and Events. Oh My!!
Reactive Development: Commands, Actors and Events.  Oh My!!Reactive Development: Commands, Actors and Events.  Oh My!!
Reactive Development: Commands, Actors and Events. Oh My!!David Hoerster
 
Live mesh & live framework
Live mesh & live frameworkLive mesh & live framework
Live mesh & live frameworkbartlannoeye
 

Similar to Christian Corsano (Io-Interactive) - Hitman – the first episodic AAA game and Azure (20)

Christian Corsano, Io Interactive
Christian Corsano, Io InteractiveChristian Corsano, Io Interactive
Christian Corsano, Io Interactive
 
Massively Social != Massively Multiplayer
Massively Social != Massively MultiplayerMassively Social != Massively Multiplayer
Massively Social != Massively Multiplayer
 
MMO Design Architecture by Andrew
MMO Design Architecture by AndrewMMO Design Architecture by Andrew
MMO Design Architecture by Andrew
 
Deep Dive: Amazon Lumberyard & Amazon GameLift
Deep Dive: Amazon Lumberyard & Amazon GameLiftDeep Dive: Amazon Lumberyard & Amazon GameLift
Deep Dive: Amazon Lumberyard & Amazon GameLift
 
Maximize Your Production Effort (English)
Maximize Your Production Effort (English)Maximize Your Production Effort (English)
Maximize Your Production Effort (English)
 
AWS re:Invent 2016: Content and Data Platforms at Vevo: Rebuilding and Scalin...
AWS re:Invent 2016: Content and Data Platforms at Vevo: Rebuilding and Scalin...AWS re:Invent 2016: Content and Data Platforms at Vevo: Rebuilding and Scalin...
AWS re:Invent 2016: Content and Data Platforms at Vevo: Rebuilding and Scalin...
 
A practical architecture design for mmo casual game
A practical architecture design for mmo casual gameA practical architecture design for mmo casual game
A practical architecture design for mmo casual game
 
A practical architecture design for MMO casual game
A practical architecture design for MMO casual gameA practical architecture design for MMO casual game
A practical architecture design for MMO casual game
 
SCORCH: Tying it All Together
SCORCH: Tying it All TogetherSCORCH: Tying it All Together
SCORCH: Tying it All Together
 
DIY Live Events using Yammer and Microsoft Stream
DIY Live Events using Yammer and Microsoft StreamDIY Live Events using Yammer and Microsoft Stream
DIY Live Events using Yammer and Microsoft Stream
 
PlayFab ugc gdc
PlayFab ugc gdcPlayFab ugc gdc
PlayFab ugc gdc
 
Supersize your production pipe enjmin 2013 v1.1 hd
Supersize your production pipe    enjmin 2013 v1.1 hdSupersize your production pipe    enjmin 2013 v1.1 hd
Supersize your production pipe enjmin 2013 v1.1 hd
 
Write retrogames in the web and add something more with Azure
Write retrogames in the web and add something more with AzureWrite retrogames in the web and add something more with Azure
Write retrogames in the web and add something more with Azure
 
Writing a Fullstack Application with Javascript - Remote media player
Writing a Fullstack Application with Javascript - Remote media playerWriting a Fullstack Application with Javascript - Remote media player
Writing a Fullstack Application with Javascript - Remote media player
 
Game Programming - Cloud Development
Game Programming - Cloud DevelopmentGame Programming - Cloud Development
Game Programming - Cloud Development
 
Twitch-ready 3D-Games with Amazon Lumberyard and GameLift
Twitch-ready 3D-Games with Amazon Lumberyard and GameLiftTwitch-ready 3D-Games with Amazon Lumberyard and GameLift
Twitch-ready 3D-Games with Amazon Lumberyard and GameLift
 
Visug: Say Hello to my little friend: a session on Kinect
Visug: Say Hello to my little friend: a session on KinectVisug: Say Hello to my little friend: a session on Kinect
Visug: Say Hello to my little friend: a session on Kinect
 
Game On! Exploring Microservices with a Text-Based Adventure Game
Game On! Exploring Microservices with a Text-Based Adventure GameGame On! Exploring Microservices with a Text-Based Adventure Game
Game On! Exploring Microservices with a Text-Based Adventure Game
 
Reactive Development: Commands, Actors and Events. Oh My!!
Reactive Development: Commands, Actors and Events.  Oh My!!Reactive Development: Commands, Actors and Events.  Oh My!!
Reactive Development: Commands, Actors and Events. Oh My!!
 
Live mesh & live framework
Live mesh & live frameworkLive mesh & live framework
Live mesh & live framework
 

More from DevGAMM Conference

The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...DevGAMM Conference
 
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...DevGAMM Conference
 
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...DevGAMM Conference
 
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...DevGAMM Conference
 
AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)DevGAMM Conference
 
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...DevGAMM Conference
 
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...DevGAMM Conference
 
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...DevGAMM Conference
 
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...DevGAMM Conference
 
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)DevGAMM Conference
 
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)DevGAMM Conference
 
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...DevGAMM Conference
 
How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...DevGAMM Conference
 
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)DevGAMM Conference
 
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...DevGAMM Conference
 
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...DevGAMM Conference
 
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...DevGAMM Conference
 
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...DevGAMM Conference
 
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...DevGAMM Conference
 
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...DevGAMM Conference
 

More from DevGAMM Conference (20)

The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...The art of small steps, or how to make sound for games in conditions of war /...
The art of small steps, or how to make sound for games in conditions of war /...
 
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
 
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
 
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
 
AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)AI / ML for Indies / Tyler Coleman (Retora Games)
AI / ML for Indies / Tyler Coleman (Retora Games)
 
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
 
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
 
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
 
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
 
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
 
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
 
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
 
How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...How to increase wishlists & game sales from China? Growth marketing tactics &...
How to increase wishlists & game sales from China? Growth marketing tactics &...
 
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
 
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
 
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
 
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
 
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
 
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
 
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
 

Recently uploaded

Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 

Recently uploaded (20)

Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 

Christian Corsano (Io-Interactive) - Hitman – the first episodic AAA game and Azure

  • 1. Hitman From the box to the cloud Christian Corsano Lead Online Programmer @ccorsano
  • 3. Hitman • Sixth game of a nearly 20 years old franchise • Third person, stealth-action puzzle game • Huge sandbox levels to explore • Figure out the clockwork, take out the target • AAA title, shipping on PC, PS4 and XBoxOne
  • 4. From Absolution to Hitman • Hitman Absolution (2012) • Modern, accessible • New game engine (Glacier 2) • Story driven • Online, Contracts mode • Less appealing to historical Hitman player • Hitman • Keep it accessible • Bring back more freedom of approach • Deliver it in a brand new way
  • 5. Hitman as a Service • Ever expanding, ever evolving • Digital first • Episodic • Listen and react to the community • Live content
  • 6. Backend • Extensibility • Server delivered missions • Server delivered menus • Server driven game modes • Authoritative server • Scoring • Progression • Contracts creation • Supporting services • Analytics, authorization, configuration, administration
  • 7. Why Azure • Platform as a Service leader • Extensive toolbox of services • Choosing the right tool for the right job ! • Familiar toolset for game developers • Visual Studio • C#
  • 8. Services overview WebApps ˃ Shared services & web tools CloudServices ˃ Game logic and stateful user sessions Search ˃ UGC discoverability Storage ˃ Blob, Key value storage & Queues SQL ˃ Relational storage StreamAnalytics ˃ Analytic processing DocumentDB ˃ Object storage AppInsights ˃ Service monitoring & diagnostics DataFactory ˃ Analytic pipeline orchestration HDInsight ˃ On-demand big data processing EventHub ˃ Metric events pipeline Redis Cache ˃ Managed Redis
  • 9. Event-based evaluation • Progression, Scoring and more • Examples: NPC Kill, Disguise, Trespassing, Shots fired • C# ”Scripts” evaluation as needed • Bigger evaluation at the end of a session
  • 10. Development process • DevOps-like, Iterative development • Built first services and started iterating • Live internally in the first year • Regular releases • Been running live ever since • Service Oriented Architecture • Actor Model through Microsoft Orleans
  • 11. Going deeper: Game services Game Service Storage Account Storage tables Config blobs (public) Config blobs (public) Resource blobs (private) Resource blobs (private) Service blobs (private) Service blobs (private) Game Cloud Service Service Web RolesService Web Roles Service Worker Roles Service Worker Roles Orleans Game Service SQL DB SQL Database Hitman Game Client Azure Redis Cache Azure Search
  • 12. Orleans • Actor model for .net • Open source framework • Isolated, persistent, light weight, single threaded objects • Dynamically instanciated • Blocking concurrency at the actor level • Each player is an actor • Great way to scale: run more actors • Isolate user sessions • Automated lifecycle • Handle concurrency with minimal contention
  • 13. Service Fabric • Same approach, but fully managed • Actors running on a scalable cluster • Better local emulation for development
  • 14. Analytics • Vital system • Business indicators • Gameplay feedback • Issues investigation • Custom assembly of Azure services • Web collector • EventHub • Stream Analytic jobs • Data Factory • HDInsights (Hadoop)
  • 18.
  • 19.
  • 20.
  • 21. Looking back • One year being live
  • 22. Looking forward • Long term plans ahead !

Editor's Notes

  1. Good afternoon, and thanks for coming to this session. I am Christian Corsano, and serve as Lead Online Programmer at Io-Interactive, and I am here to talk about how we took Hitman from a traditional game to a running online experience, and how Microsoft Azure helped us to do that. But first, let’s introduce the game with a small video.
  2. Hitman is nearly 20 years old now, and the our new release is the sixth game in the franchise. It can be best described as a third person stealth action puzzle game, where you explore massive sandbox levels, and through extensive replay, figure out their intricate clockwork, and use it at your advantage to take out your targets. It is a major title, targetting PC PS4 and XBoxOne. So, taking one step back.
  3. Before Hitman was Hitman Absolution, released in 2012, just before I joined Absolution was a great game, and a big evolution from previous Hitman games It was made more accessible, shipped on the two major consoles of the time, and was powered by the all new iteration of our internal game engine. The game itself was more story driven, and as such a lot more linear than previous installments. For the first time the game had online features, with leaderboards and more importantly Contracts mode, which let the players create their own assassination contracts to challenge the community. But it ended up being less appealing to core Hitman fans, mostly because the reduced freedom of approach. After Absolution came out, we started working on what would become simply Hitman We had the opportunity to build with the learnings from Absolution with its modern, accessible gameplay, and from previous titles such as Blood Money, with its unmatched freedom of approach. More importantly, we have great ambition for this game, and we wanted to deliver it in a suitable and innovative way.
  4. We called our approach ”Hitman as a Service” Hitman is the first digital-first, episodic AAA game. Our huge sandbox levels are made to be explored over and over again, discovering the many layers of content hidden deep inside them, delivering them in episodes to let the players discover them. It is also an opportunity to constantly listen to the community and deliver custom tailored content based on their feedback. We also constantly released weekly content for the past year, including Elusive Targets where you get a limited time to take out a hidden target in a modified location. You have one shot, if you miss it you will not be able to restart the mission, if you finish it you will not be able to improve your score.
  5. This means that Hitman had to move from a very traditional boxed release to something extremely flexible and reactive. Having this constant stream of releases and competitive modes called for a brand new online backend. Of course Hitman is not a MMO, the data is installed on the player’s hard drive, but within these levels the objectives definitions are delivered from the server, allowing us to build and deliver more very easily. The game menus which presents the content are also assembled from server data, allowing us to tweak them live if needed. Game modes such as Elusive Targets need very tight time constraints and fair evaluation, which is provided by the backend as well. These are all requirements very specific to our game and the model we chose, but more generally any modern game requires analytics, and might use some more common online services.
  6. All these requirements made us consider how we could best support the game, with a reasonably sized Online team. We chose to target Azure very early on. Azure started strongly as a Platform as a Service provider, meaning that while the other cloud providers were mostly focusing on selling VM hours, they were offering fully managed services. We are game developers, we want to keep the operational overhead to a minimum and focus on building our solutions: PaaS is the best way to go for us. Azure is providing a very complete set of services, and is always expanding. This allow us to explore their offering and choose the right tool for the right job, like picking the right data storage based on our projected access pattern. Another big advantage for game developers like us are the development tools. We are building our game in Visual Studio, primarilly in C++, but our engine tooling is mainly C#. Azure is very nicely integrated within Visual Studio, and C# SDK is one of the primary languages. This makes it very easy for anybody from the team to jump in and start working on our solutions.
  7. Here is a summary of the services we use within our current solution. Some of them are core to the solution, such as CloudServices, Azure Storage, SQL, Redis, some other actually drove the development of complete features, such as Azure Search which is powering the discoverability of huge number of user created contracts in a fun and meaningful way. As we grew smarter in using them, we were able to tweak our usage, refine our implementation to gain performance and reduce cost. We also sometime discover a new service or pricing tier in preview and jump on it, such as recently with a new Azure SQL offering more suited to run part of our Analytics pipeline.
  8. So, in more practical terms, what exactly makes Hitman an online game ? I mentioned some of our core meta-game systems were online, such as Progression (which is mostly based on Challenges, an achievement-like system), or Scoring. These are powered by a stream of rich gameplay events triggered by the players and sent to the backend. These events range from the obvious - and very detailed - ”Kill” event when a NPC is eliminated in the game, to taking one of our many disguises or trespassing in a forbidden area. Each event is evaluated against a set of rules expressed in C#, and stored in memory for the duration of the session. A chain of evaluation is triggered against the full session when the player exits, or fails, to compute and award XP, challenges (achievements) and of course score and rank on global leaderboards.
  9. The way we approached this product in the online team was fairly new, we got a first iteration of the events system and the ”contract” services running quickly, and kept iterating ever since. Within the first year, we released a first internal build of the game, hosted on internal servers, then we migrated to Azure and made that available to the whole Square Enix group through Steam. The goal there was to practice regular releases and learning how to run a live product over extended period of time. Our online services are direct descendants of these initial baby steps, there were no throwaway prototypes, just continuous development and refactoring. Our approach was service oriented from day one, and we early on tried to have per-player service semantics to cope with scale and concurrency. To do this, we developed our own little .Net framework to declare our services and their operations, and their execution context. We had an early try on integrating a then private Microsoft research endeavour, code named Orleans. We ended up using it as our core distribution model, and I’ll go into more details about that part in a bit.
  10. This is a bird-view description of our game services, we have one of these for each of the 3 platforms we support : PC, PS4 and XBoxOne. Our game is communicating with the server through standard HTTPS, and the connection is established with what is called in Azure Cloud Services terms a Web Role, which is basically a managed node running a specific web application on an IIS server. This Web Role scales as needed depending on average CPU load, based on rules we defined, and is in charge of deserializing payloads and forwarding calls to our service framework. That service framework is powered by Microsoft Orleans, of which I will speak more in a bit, and actual service logic sits within a Worker Role, which can be described as a managed, distributed Windows Service. One nice thing about this is that each role is dealing with very different jobs, and are configured to run and scale independently. The webrole is stateless, doing a lot of serialization and deserialization work on top of dealing with HTTPS termination through IIS, while the service worker role is stateful, much more memory and CPU intensive. As a consequence, the web role is running on less core and memory, and scale very frequently, while the worker role is running on a bigger setup and scale less often. For storage we are following the general principle of using the right tool for the right job, and depending on access pattern we are saving our state to different services: Azure Redis for real time leaderboards Azure SQL for player inventory and contracts Azure Table Storage for high volume player data Azure Blob Storage for static configuration
  11. Our approach was service oriented from day one, and we early on tried to have per-player service semantics to cope with scale and concurrency. To do this, we developed our own little .Net framework to declare and execute service operations, and after testing different implementations, landed with Microsoft Orleans, which . Orleans is an Actor model framework for .net. Those of you knowing Erlang (or Elixir) probably know what this is about. An actor is an isolated, light weight single threaded ”program” running on a distributed system. On Orleans, actors are dynamically instanciated and the framework ensure that no concurrent calls can reach a given actor at any time. It means for Hitman that each of our players has his own actor as soon as he connects to the system, and will keep that running context for the duration as long as he stays active. This allows us to keep an in-memory state for each player, to reduce storage access to our various solutions. In case the cluster needs to scale up or down, actors will be migrated by the framework and we will only have to ensure the state is writted to persistent storage and restored on the new node. One of the nicest guarantee Orleans gives us is no concurrent calls on a stateful actor: this means we have (almost) no shared state to worry about on our system.
  12. One thing to note is that around the time we implemented our system with Orleans on top of Cloud Services (which are quite old-school now), Microsoft came up with a managed version of it, which is now the preferred way of running massively distributed code on Azure. It is called Service Fabric, and is doing the same thing more natively, with better tooling, and more efficiently. As we have our service running we have not started migrating yet, but if you are going to do anything with Azure you should definitely start there.
  13. Another aspect of our backend I would like to talk about is Analytics. Metrics are obviously a key part of game development, and serves multiple purpose. Of course there are some base KPI that you would like to have for any game, in order to follow things like acquisition and retention, but there is a world of other opportunities when gathering metrics more specific to your own product. We are sending telemetry to a separate data pipeline solely dedicated to analytics, and we use this collect data that helps us evaluate how our players play our game, and also keep an eye on error indicators, such as disconnection to the servers. This pipeline is built using some of the extensive Azure analytics offering. You can see the list here, but let’s take a closer look.
  14. The game sends telemetry to a collector webapp, which allow us to route the events to different endpoints when needed. This web app then writes the metrics to an Azure EventHub, which is a managed service similar to Apache Kafka in the non Azure world. This event hub has several Azure stream analytics jobs doing near-realtime aggregation. Some of these aggregations are directly written to Table storage and are used for monitoring and also reinjected into the game service, for things such as contracts trending. Another stream outputs the raw data into hourly raw files, to be consumed by pig scripts running on a on-demand Hadoop cluster every night. Then the aggregated files are pumped into SQL stored procedure to be exposed and used in reports. All of it is orchestrated by Data Factory, which keeps track of what tranform has been run for what time slice.
  15. This is what that setup looks like The box on the left is the raw output from the event stream, big flat files of JSON records stored in Azure Blob Storage. Then we have a fairly big PIG script running on an on-demand HDInsight (Hadoop) cluster, and spitting out a large number of data aggregated to tables. This is still put in blob storage, and is then passed on to dozen of activities reading these files and sending them to SQL stored procedures to insert into tables.
  16. Now having data is nice, but what did we do with it ? Beside all traditional reporting and the occasional investigation, we also are looking at ways to improve our game and level design. For instance, all Hitman players starts in the tutorial level you can see above, and we took a look at how they played on
  17. This is a map of where players get spotted when infiltrating the boat on the first tutorial mission. I only got static images in that presentation, but this is taken from an interactive report where we can filter points for the first minute of playtime for instance.
  18. Usually what happen when players get spotted is fairly straightforward: this is the map of where players get killed in the first 5 minutes of the playthrough. You can see they get killed a lot, and some in places that we considered very safe.
  19. And here we can see where they equip different disguises. All this data helped us to understand what could be improved when guiding first timers in our game, which is notoriously difficult, and very different from traditionnal stealth action games.
  20. Continuous release More than one release per month Automation of live tools (release, community, configuration) Game improvements Client resilience to network issues Contract mode improvements Contract search Player profiles Pro1 difficulty mode Live mindset The game is running out there