How Electronic Arts Standardized their C++ Builds Across Windows and Linux using Visual Studio Build Tools
Find out how Electronic Arts has used Visual Studio’s cross-platform support for several years to ensure their builds stay consistent.

Electronic Arts (EA) has been using Visual Studio’s cross-platform support for several years now. They have chosen Visual Studio as their team’s official development environment due to its rich features such as IntelliSense, Copilot integrations, Build Insights, and overall debugging experience for all their use cases, including cross-platform development and Linux targeting from Windows.
Developers at EA utilize Visual Studio’s Build Tools to ensure consistent builds on the same version of the toolchain. This ensures that they are enabled to update to the latest version of Visual Studio 2022 since Visual Studio is not tied to one specific MSVC toolset.
The VS Build Tools SKU enables C++ developers to use the same build tools in Visual Studio, from CLI, and in CI scenarios. Due to their cross-platform needs, they require these build tools from Visual Studio to be installed on Linux systems to streamline their cross-platform builds to be in sync. To enable this, we partnered with EA to optimize the Linux experience in CLI scenarios by adding the Linux workload to the VS Build Tools SKU.
The following blog post has been written by Jordan Blanchet, a senior software engineer at EA, as a continuation to the previous blog post written by Ben May, a director of engineering at EA. They work on the Frostbite game engine at Electronic Arts. Thank you Jordan and Ben for your continued partnership to help improve our remote development scenarios in Visual Studio!
Background
The Frostbite Engineering Workflows team owns the code build for the Frostbite game engine and thus for all games across Electronic Arts that use Frostbite. The engine consists of a C# editor, a large C++ data pipeline and, for every target platform, a C++ runtime solution. Every game that uses Frostbite expects to build upon these solutions while every developer who uses it expects a productive and consistent work flow. In this article, we’ll outline a number of ways we utilize Microsoft’s tools to suit our unique needs, including our use of Visual Studio, how we ensure consistency across teams, the addition of Linux tools to our workflows and more.
Developing at scale
Because games are built on top of the Frostbite engine, developers use in-house software to generate their Visual Studio solutions for their game. Solutions are expected to be regenerated any time their build environment has changed; for example, pulling from source control, changing build scripts or updating packages. Given the complexity of our development environment and the thousands of developers using it, it’s important to eliminate as many unique setups as possible. One way that we do this is by locking our source control streams at specific versions of the toolchains that we use for building. This way we know that every developer and build machine are using the exact same toolchain to build the code. When challenges arise, this immediately removes uncertainty around compilers, linkers and other toolchain files so that we can focus on the issue at hand.

Visual Studio
Visual Studio is used by developers across Electronic Arts. Intellisense, Copilot integration, Build Insights and the overall debugging experience make it an easy choice for that role. Our close ties with the Visual Studio team at Microsoft and their responsiveness to our questions and requests help to ensure that the IDE stays in sync with our developers’ needs.
Consistency across machines
Frostbite requires a specific version of Visual Studio, but we do our best to allow users to choose the minor/patch versions as they see fit, so they can update Visual Studio as often or as little as they'd like. Each new version of Visual Studio contains a unique version of MSVC’s tool chain within its install. Given that developers can go months without updating their Visual Studio installation, this would mean that over time, we would get both developers and CI machines using an array of different Visual Studio versions, each with a different version of the MSVC tool chain. To mitigate these issues, Frostbite needed to isolate the MSVC tool chain from the Visual Studio installation into our own redistributable packages. These packages are submitted to source control alongside the engine.
The tools are initially extracted from the Visual Studio installation directories (this includes the Android and Linux tool chains for building on Windows.) We then package the tools into our own packaging format for distribution via source control. The package contains meta data identifying locations within the package to find any necessary files. As mentioned, the first step in any of our code builds is generating a new Visual Studio solution and the associated project files. During this generation step, the meta data for the build tools package is injected into the generated project files so that Visual Studio knows where to find the tool chain it should use.
Using this approach, we can now ensure that the same version of MSVC will be used for all developers and CI systems. It has the added benefit of simplifying our CI machine setup by not requiring a Visual Studio installation. When a CI machine syncs the latest Frostbite code, this will now include our packaged MSVC version, which it will use to perform its build.
Cross-platform Linux builds
Nearly all developers and build machines building Frostbite run Windows. Microsoft helped our cross-platform Linux builds by adding the Linux C++ tools to their installation options in the Visual Studio installer. This allowed us to easily isolate the Linux C++ tools and include those within our existing build tools package. Without this change, our Linux builds suffered from out of sync tool chains and needing Visual Studio installs on the farm.

Continual collaboration
Our teams are always pushing the boundaries of what’s possible. While in constant communication with one another, we help Microsoft improve their products as they support us in our initiatives. Some recent examples include:
- When our custom Visual Studio extension needed more control over launching and monitoring builds, Microsoft developers had extra extensibility added for us by the next update.
- With an extremely large code base, our builds are an excellent proving ground for Microsoft’s MSVC toolchain. Developers on both sides have worked hard on maximizing the throughput of the tools and identifying bottlenecks while working together.
By working alongside Microsoft’s Visual Studio team, we have been able to customize our build experience to meet the needs of the thousands of developers at Electronic Arts. We look forward to the next collaboration!
Conclusion
We greatly appreciate the feedback and partnership to improve our products based on developer needs. Try out Visual Studio’s remote development tools and let us know what you think.
If you have any feedback for us on how to improve our cross-platform tooling for you, the comments below are open and we are also available on X (@VisualC) or via email at visualcpp@microsoft.com.