I’m building on Linux, but targeting Win64 eventually. Right now I’m compiling a Linux client/editor first just to stabilize the pipeline — but I’m running into a mix of:
- platform-specific C++ issues (Windows-only includes, missing headers on Linux)
- Unreal AutomationTool / UBT failures after long build times
- cases where things work fine on Windows locally, but break in Linux CI
I’m primarily working on Linux, so I started with the Linux builds first. Once that was done, I focused on Windows builds, to keep things separate. This is for a custom engine made in C and using Github, not sure how that translates to Unreal and Azure, but here’s some details:
- When making Windows builds, I did that on a windows CI server (Github Runner), which helps deal with issues like platform-specific code as you mention.
- Github does allow you to run Bash commands on the windows machine, which was more familiar to me.
- I attempted cross compilation (mostly compiling Windows builds from a Linux machine) but it was a lot of headaches and I gave up.
Is building a Linux client first on a Linux CI server the right stepping stone, even if the real target is Win64 + Steam?
My advice would be to focus on a Windows CI server if your target is a Windows build. I’m assuming Unreal behaves better this way too.
How you decided when a pipeline was “stable enough” to trust
This happens over time. No matter how much effort you put on the pipeline now, it will only feel stable after you spend 6 months developing your game and you always have up-to-date builds ready without thinking about it. If you get occasional build errors, that’s your sign to revisit the pipeline and make it more robust.
You can’t fix everything from the get go. It’s absolutely normal to make a pipeline that kinda works, and once you get an error as you work on the game, return to the pipeline to improve it.
Whether you had long compile times + late failures, and how you reduced iteration pain
I’m working on a custom C engine, so compile times are always small. From what I’ve seen Unity and Unreal have longer compilation times. There are ways to cache parts of your project that don’t need to be re-compiled, but I’m not entirely sure how friendly Unreal is with that.
At the moment, I’m intentionally keeping things simple:
Honestly that’s the way to start. Just make a small pipeline that creates a release-able build, but doesn’t upload it anywhere. Once you have that, over time as it gives you successful builds, it will feel more dependable, and a next step can be to automatically upload it to different stores. It’s easy to be overwhelmed if you aim for too many things at once.
If you’re open to it, I’d love to keep discussing this here
I’m happy to keep chatting here, this way future readers going through the same experience can read this thread :)