Today, the growing platform fragmentation has become one of a game developer's key concern.
Engines such as Unity have gained strong popularity as a viable assistance in addressing the issue.
However, they only solve part of the equation: regardless of the supported platforms, games often tend to live in silos, either per device or per platform. The reality shows that most of us have multiple devices on which we play the same games - and also that our friends don't necessarily own the same devices as we do. All the same, being able to play with them regardless of the device used, is crucial in making a game more fun through social means.
8. Evolution of the „Cloud“
You are on your
own!
Iron
Scale fast and
patch (fast)!
Scale fast and
convenient!
Relax!
Infrastructure
Platform
Backend
aaS
aaS
aaS
17. Connect > Matchmaking > Gameplay
• Connect closest Region
US, Europe, Asia (Singapore), Japan
• Authentication with facebook SDK,
Steam SDK, Parse SDK, PHP ...
• Session from
Facebook/Steam/Parse/PHP can be
verified by Photon Cloud
18. Connect > Matchmaking > Gameplay
Sample „facebook“ flow is:
1.
2.
3.
4.
5.
Establish facebook session (facebook SDK)
Inject session token into Photon GameClient
Choose a region (EU, US, JP, Asia, …)
Connect to Photon Cloud
Session token gets verified
19. Connect > Matchmaking > Gameplay
AccessToken from
Facebook SDK:
Inject into
Photon SDK:
20. Connect >
Matchmaking > Gameplay
• List-Lobby for list of games
• Multiple lobbies e.g. to separate games
by type
• Join a random room, with optional
filtering (e.g. Map=de_dust)
• Find friends
• SQL-Lobby for flexible queries
28. Webhook GameClose
• Called when last player disconnects from
game (important: disconnect != abandon)
• Game state is handed in as byte[] containing
– Player Properties
– Room Properties
– Cached events
• Restored when GameLoad is called
30. WebRPC
• HTTP/JSON callbacks for functions
– Input: Parameters
– Output: Return values
• Freedom to write a custom API
– GetGameList, GetPlayerSkill, LoadLevel, ...
• Translation from Binary to JSON and back is
done automagically
32. Azure Websites + Table + Blob
• Azure Websites perfect for
Webhooks
– WebAPI == RESTful APIs (HTTP + JSON)
– Global
– RAD with Visual Studio: Deploy, Debug
• Azure Table Storage
• Azure Blob Storage
33. Azure Websites (WAWS)
• Managed Service for your Web based
applications
• Develop locally and deploy from VS
• Options:
– Scale: free, shared, standard (w. auto scale)
– Staged deploy
– Backup
– Monitoring w. Alerts
– WebJobs
34. Table vs Blob Storage
• Where do we save?
– Game State: Azure Blob Storage
– Game List: Azure Table Storage
• One Partition per User
• One Row per Game
• Why Azure Storage?
– ‘cheap’ fast data store
– its save (High Available & Geo Redundant)
– … & it scales!
35. Azure Blob & Table Storage
• What is Azure Blob Storage?
– Like Amazon S3
– Rest API: Uploading blobs per HTTP
• What is Azure Table Storage?
– ‘Like’ Google BigTable or AmazonDynamo
– Data in Rows & Columns, but Schemaless
– ‘Better’ Key/Value store
– ONE INDEX only: PartitionKey + RowKey
– Rest API: CRUD using JSON per HTTP