Microsoft Game Dev Blog
How to transfer large files in a distributed environment
A common topic that came up during the pandemic is the "Modern Game Studio" - a studio that enables everyone to work from wherever they are. Whether you are at home, or a Studio location. Whether you are using a capable workstation with a beefy GPU or just have a "regular" laptop at your disposal. Game production in the cloud is already here.
We have talked to many partners who were challenged not only with many studio locations, but folks working from home temporarily or some of them have moved to other countries or continents altogether and are not planning to return to an office.
Among the challenges this new way of working poses to studios is the need to transfer - and sync - large files all over a country, continent or the world. These could be, for example:
- Debug builds to be
- distributed to testers
- distributed to contractors, publishers etc
- stored for long-term retention
- Full crash dumps for developers to look into
- Large asset storage
Take, for example, a large game studio which has multiple physical locations around the globe, with one central studio hosting all their services locally.
The internet connection of the office locations - and particularly the primary location which hosts the services - needs to scale with the demand. Also the local services hosted on-prem need to be up to the task.
Pre-pandemic, this might have been set up specifically and might have been enough. But adding a lot of home office clients, and then opening new studio locations, creates a huge challenge and usually makes the main office internet connection a choke point, specifically when distributing builds or large, full crash dumps.
With large file shares, these are the common issues faced with a primary on-site location and multiple other studio locations, and added home office clients:
- Main office bandwidth exceeded
- High latency when requesting and uploading files
- Potentially increased internet egress cost
- Non-trivial disaster recovery scenario
A solution we have come up with to make this a better experience for a distributed studio is to use Azure as the central authority for all file shares.
With Azure Files and File Sync, you have a central file share repository, which can be synced to on-premise locations. At these locations, a Windows File Server with the Azure File Sync service installed, can act as a local cache.
While it is possible for Workstations in the cloud or other users to be directly accessing the Storage Account, this is discouraged, because there is no built-in functionality to signal file changes.
Local Cache & Tiered files
While all files of the shares are available to clients, they are tiered: this means, they will only reside in the cloud unless used. To clients however, they appear as available to them. All file operations hit this local File Server replica, and will be synced to the Azure File Share, using the Azure File Service, which in turn persists it in the Storage Account.
Improving Studio locations uplink to Azure
When you transfer files from and to Azure, these will normally be routed via public internet. This will incur additional latency and will be subject to local link degradations and generate data egress cost into the public internet. To improve this quality, security and potentially save on egress cost from Azure, you can set up Azure Express Route. ExpressRoute can directly connect you with the Microsoft Azure Network and create a private network between your and the Azure network.
- Automatic, consistent replication
- Improved data recovery & business continuity by having a backup in the cloud
- Cost savings on data egress by
- using tiered sync to on-prem locations
- Creating builds in the cloud
- Crash dumps created in the cloud by automated test runners or workstations in the cloud
- With ExpressRoute
- Save on data egress using unlimited data plan on ExpressRoute
- Increase quality of connection
- Enhance security
We have looked ar the challenge and how to potentially solve the distribution of large files over very disparate locations.
Make sure to check out the following services to learn more about them:
- Azure Files
- File Sync
- Azure Express Route
Please do not hesitate to contact me - I'd love to see your approach to game production in the cloud - or perhaps my team and I can help you build the Modern Game Studio in the Cloud! Check out the official Microsoft Game Developer Blog for more game development tips and tricks from Microsoft.
From the Microsoft Game Dev blog
Creating for everyone: How to make more accessible games
Sarah Bond shares at the Microsoft Ability Summit why accessibility in gaming is so critical
Forza Horizon 5 crosses the finish line, fueled by AKS
FH5 relies on autoscaling Azure Kubernetes Service (AKS) clusters to meet the most challenging performance demands.
Lana Lux: Twitch Live-Coder and Creator of Strain
Meet Lana Lux, a game developer, designer, Twitch streamer and invested in an accessible, supportive community