Last week I ran a hands-on lab where we combined Unreal Engine 5.6, Git, and CI/CD to help game developers work more like a studio team and less like a solo dev just “backing up files.”
The session used a small teaching project called UEGitWorkshop — an Unreal Engine 5.6 demo built specifically to show clean, professional Git workflows for game development.
If you’re building games in Unreal and still feel unsure about Git, branching, or CI, this is exactly the kind of workflow you want in place before your project grows.
📺 Full workshop video – Unreal Engine 5.6 + Git + CI/CD (UEGitWorkshop): https://www.youtube.com/watch?v=DP2YWmLSV7U
What We Covered in the Workshop
In about 90 minutes we walked through a complete loop: from cloning the repo to making changes, opening a Pull Request, and letting CI validate everything.
1. Setting up a studio-style Unreal repo
We started by looking at how a serious Unreal project should live in Git:
.gitattributes+ Git LFS for Unreal assets like.uassetand.umap- A proper Unreal
.gitignoresoIntermediate,Binaries, autosaves, and DerivedData stay out of the repo - Shared editor settings through
.editorconfigand.vscode/settings.json - A
.clangdconfiguration so Unreal C++ has working IntelliSense in VS Code
The goal is simple: a repository that is fast to clone, safe to share, and easy to maintain over the lifetime of the game.
2. Automating Unreal builds with Python
Instead of right-clicking .uproject files and hoping things work, we used a Python script, build_ue.py, to:
- Generate Visual Studio project files
- Build the
UEGitWorkshopEditortarget from the command line - Launch Unreal Engine 5.6 and show a small “Hello World” subsystem running in-game
This is the same pattern you can plug into your continuous integration setup later.
3. Teaching Git as a workflow, not just a backup
We then focused on Git discipline — the part that really matters in production:
- Configuring Git LFS and local Git hooks
- Enforcing Conventional Commits via a
commit-msghook (no morestuff_fixed_final_finalcommits) - Creating short-lived
feat/*branches instead of committing directly tomain - Keeping history linear and readable so it’s easy to debug and review
Each participant edited a small C++ class, committed with a proper feat(...) message, pushed their branch, and opened a Pull Request.
4. Using GitHub Actions for Unreal sanity checks
Finally, we looked at GitHub Actions and the unreal-sanity-check.yml workflow:
- Automatic validation of project structure
- Checks for asset naming conventions (e.g.
BP_,M_,L_prefixes) - A downloadable report artifact showing the status of each run
This gives teams a lightweight way to keep their main branch stable, even when multiple developers are working on Blueprints, levels, and C++ at the same time.
How Toucan Studios Can Help
I’m Sreyeesh Garimella, a technical artist and pipeline engineer. Through my company Toucan Studios (🌐 toucan.ee), I help:
- Game studios design Unreal Engine + Git + CI/CD pipelines that scale
- Schools and universities run practical labs like UEGitWorkshop for their students
- Indie and solo developers structure their Unreal projects so they can safely grow into small teams later
If you’re a recruiter looking for someone who can bridge Unreal Engine, DevOps, and teaching, or a team / school that wants this kind of workflow training for your developers, I’d be happy to chat.
📺 Watch the full workshop: https://www.youtube.com/watch?v=DP2YWmLSV7U
🌐 Learn more: https://toucan.ee