Published Sep 3, 2019

SE-Radio Episode 339: Jafar Soltani on Continuous Delivery for Multiplayer Games.mp3

Join Jafar Soltani from Rare as he delves into continuous delivery for AAA multiplayer games, tackling testing challenges, the shift to trunk-based development, and optimizing delivery pipelines for quality assurance and reduced crunch time.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Trunk-Based Dev

    Trunk-based development is a strategy where all developers work on a single shared branch, often referred to as the main or trunk, to avoid complex merges and support continuous integration. explains that this approach minimizes painful merge conflicts and provides faster feedback by integrating changes frequently, sometimes even daily 1. He contrasts this with feature branch development, where separate branches can lead to long feedback loops and difficult merges, especially with binary assets 2. shares a past experience where integrating changes from multiple branches took days, highlighting the efficiency of trunk-based development 3.

    The longer it takes and the bigger the change is, the more painful it is to merge that back.

    ---

    This strategy ensures that the main branch remains releasable, stopping all changes if a problem arises until it's resolved.

       

    Feature Toggles

    Feature toggles are crucial in game development, allowing new features to be tested and enabled or disabled without requiring new builds. describes two types of toggles: compile-time, which removes code before shipping, and dynamic, which allows features to be toggled on or off at runtime 4. This flexibility helps manage features still in progress, ensuring they don't disrupt the player experience. emphasizes the importance of small, frequent changes to reduce risk and simplify troubleshooting 5.

    By choosing to switch off certain code paths through feature toggles, we prevent players from seeing it.

    ---

    This approach supports continuous integration by allowing developers to work on the same branch without releasing incomplete features.

       

    Prototyping

    Prototyping in game development involves testing concepts and features without impacting production code. explains that a separate prototype team uses a different engine, like Unity, to experiment quickly and answer questions about the game 6. This separation ensures that prototype code doesn't accidentally enter production, allowing for rapid iteration and learning. notes that as the team matures, they increasingly prototype within the main engine, Unreal, while maintaining clear boundaries between prototype and production code 7.

    We could be almost like fast and loose on the prototype code base.

    ---

    This strategy helps avoid the risks of releasing untested features to millions of players.

Related Episodes