Shipping the Empty Box: Outline

by John "Seg" Seggerson

Context & Terminology

Every build process is different.

This lecture is about general philosophy of build engineering.

Specific Job Titles, even if the team is only of one.

Smaller teams can assume one person with more than one position.

Plan for the current and future platforms.

Assumes you will be rolling out the game on all currently planned and unplanned platforms.

Architecting a Build Process

The Goals of Build Engineering

The Rules Of Build Engineering

ALWAYS act like you’re making the shipping build.

Make the empty box first! Sure the actual build may be broken, but don’t make the build process the reason for a broken build.

EVERY machine is able to make the build.

The steps to prepare and run a build should be clearly documented and run with ease.

NEVER make shipping builds on a developer’s environment.

The developer created a tool to fit their needs. A dedicated build machine creates a “clean room” to standardize the environment and analyze problems.

Identifying Build Phases

Inventory the steps needed to go get your game to release.

Build Environment

Source Control Management (SCM)

Asset Preparation

Platform Preparation

“All the things outside of the game.”

The Building of the Builds

Platform Finishing

“How do I make this build easy to install and uninstall on the target platforms?”

Discipline in Managing a Build Process

The Build didn’t break because the Build Engineer touched the build last.

Possible problems can include:

Know how long it takes to make a build.

Schedule the build time into your production timeline.

Canceling builds makes build systems less effective.

Many steps, especially 3rd party and console tools, can’t stop in the middle of a build. Even a system with stop points built in may take longer to cancel.

Dust off your previously released title and build it.

Already shipped the product a few months ago? Got a few moment to spare? Fire up a build!

A note about Continuous Integration

CI answers the question: “Does the codebase work, right now?”

Focus on speed of build, rather than rigor.

Builds answers the question: “Can the codebase ship, right now?”

Focus on the shippable state of the game, rather than speed of the build process.