Ayelet Studio is the team that built SpeedrunCI, so it is our own story. We are a studio of about 30 people in Chennai making Son of Thanjai, an action adventure set in 11th-century South India, in Unreal Engine 5. SpeedrunCI started as the internal tool that fixed our builds. We still build the game on it every day.
Disclosure: SpeedrunCI is made by Ayelet Studio. The numbers below are our own measurements.
- Studio
- Ayelet Studio, Chennai, India
- Team
- About 30 people
- Game
- Son of Thanjai, action adventure
- Engine
- Unreal Engine 5
- Platforms
- PS5, Xbox Series X|S, PC
- Before
- Jenkins and one build machine
A full build of Son of Thanjai, measured on the same machine. The first SpeedrunCI build is slower while the cache warms up.
Half our energy went into keeping Jenkins alive
We started with Jenkins, like most studios. Within weeks we were calling BuildGraph as a shell command, passing state through environment variables and shared folders, and adding flags to work around failures we did not fully understand.
A full build took over three hours. The three platforms ran one after another on our single build machine, so shipping all three took three times as long. A single texture change could trigger a full rebuild, and when something failed, the log said only that something broke somewhere in a 200-step process.
Only one person could debug the pipeline. Artists pushed work in the evening and found out the next morning whether it survived. Three engineers ran local builds before every commit, just to be safe: up to nine hours of compute a day on builds that did not even predict what CI would do.
“As a producer, my whole job is knowing where the build stands and who's blocked. It used to take 3.5 hours to even find out, and a broken build cost us a full day. Now with SpeedrunCI the whole team builds daily, I can see every build the moment it runs, and milestones stopped slipping on build problems.”
Feature by feature
One pipeline per platform, side by side
Win64, PS5 and Xbox Series X|S each have their own pipeline, started from the same commit. They run at the same time across runners instead of queuing behind each other on one machine, which is where most of the old three-hour wait went.
Game-aware caching
SpeedrunCI caches compiled code, cooked assets and shader and derived data between runs, and rebuilds only what a change touches. That is the difference between 3 hours 32 minutes and 27 minutes on the same hardware: we stopped running steps that did not need to run.
Failures that point at the problem
When a build fails, it fails at one step, with that step's log and the commit that triggered it. SpeedrunCI reads the log and suggests a fix with the file and line to look at. Fixing a red build takes minutes instead of a morning.
Builds from inside the Unreal Editor
Our artists and designers start builds from the SpeedrunCI plugin in the editor toolbar, free on Fab. They see the live status in the editor and never have to find the one person who knows the command.
Artifacts the whole team can reach
A finished console build of around 20 GB is ready to download from the run that made it. No Google Drive links, and no asking which build is the latest.
Build status for everyone
Producers and QA see every build the moment it runs, on the dashboard and in team chat. Nobody asks about the pipeline in standup anymore.
Hosted Lore repositories
Ayelet Studio was the first studio on SpeedrunCI's hosted Lore repositories, running in production.
The build stopped being a conversation
- Artists started committing twice a day instead of once. Nobody told them to; they stopped being afraid of the nightly.
- Engineers stopped running local builds "just to be safe", because CI became the build they trust.
- We have no dedicated build engineer. Caching, parallel runs and orchestration are SpeedrunCI's job.
- The producer sees where every build stands without asking anyone, so milestones stopped slipping on build problems.