Tools and pipeline for a small game team
Nothing about tooling is interesting until the day someone overwrites three days of work, or the build machine turns out to be one laptop. The setup that prevents both is a couple of days at the start of a project and it is never a couple of days later.
In this article
Open to new projects
Hadjoudj Idris
Game UI/UX Designer
Upwork100% Job Success
Hire me Browse the workI join a lot of projects as an outside contributor, which means I see everyone's pipeline. The teams that ship are not the ones with the most sophisticated setup. They are the ones where a new person can get a running build in an hour and put work back without asking anyone how.
Version control, and the binary problem
Games are mostly large binary files, which is precisely what most developer tooling handles worst. Two files nobody can merge is a different problem from two branches of text.
- Everything goes in version control, including art source files, audio and the engine project. Assets on somebody's desktop are assets that will be lost.
- Use file locking for binaries. Whatever system you choose, artists need to be able to reserve a file so two people cannot edit the same scene or texture in parallel.
- Configure large file handling early. Repositories that grow uncontrolled become the reason cloning takes an afternoon.
- Commit small and often, with messages a person can read in six months.
- Keep source art in the repository too, not just exports. The day you need to change a texture is the day you discover only the PNG survives.
- Test the restore. A backup nobody has restored from is a belief, not a backup.
One command to a running build
The single highest-value thing a small team can build for itself, and the thing most often skipped because everyone's machine already works.
- Automate the build, so producing a playable build is one action rather than a ritual only one person knows.
- Run it on a schedule, nightly at minimum, so breakage is discovered within a day rather than at the milestone.
- Put the output somewhere everyone can reach, with the date and the commit in the filename.
- Build every platform you ship on, regularly, not just at the end. Platform-specific breakage found late is expensive.
- Keep the last known good build. When today's build is broken, playtesting continues with yesterday's.
Task tracking that survives contact
- One list, one place. Tasks split across a chat app, a spreadsheet and somebody's notebook is the same as having no list.
- Simple beats sophisticated. Small teams do well with a board of four columns and a rule about who moves cards.
- Tasks are things, not areas. "Inventory screen empty state" is a task; "UI" is a category.
- Every task has an owner and a size, even a rough one, or the list cannot be used to plan.
- Link tasks to milestones, so the board answers "are we going to make it" rather than only "what is everyone doing", per running milestones.
- Groom it weekly. A board with two hundred stale cards stops being read, and then the real list moves back into chat.
Naming and folders
Unglamorous, and it decides whether anything can be found in month eighteen. Agree it once, write it on one page, and enforce it while the project is small enough to fix.
| Rule | Example | Why |
|---|---|---|
| Type first, then role, then variant | btn_primary_pressed, icon_item_sword | Sorts and searches usefully |
| No spaces, no capitals in filenames | ui_panel_frame.png | Cross-platform safety and fewer tool surprises |
| Folders by feature, not by file type | /Inventory/ rather than /Textures/ | Everything for a feature moves and deletes together |
| Version in the name, never | Not final_v3_FINAL.psd | That is what version control is for |
| Source and export named the same | hud_bar.ai and hud_bar.png | The link between them is obvious to everyone |
The same discipline applied inside the engine is what keeps a component library usable, which is in prefabs, variants and a Unity UI kit.
The asset pipeline
- Define the export path once: source file, export settings, destination folder, naming. Written down, not remembered.
- Automate the export where you can, because a manual step performed hundreds of times will be performed inconsistently.
- Agree the specs before production, not per asset: resolutions, formats, padding, atlas grouping, import settings.
- Keep source art out of the built game but in the repository.
- Make the round trip cheap. If updating one icon takes twenty minutes of manual steps, icons will not be updated.
- For interface specifically, the specs that matter are in designing game UI for Unity.
Playtest and feedback loop
- A build people can play, every week. Not perfect, playable.
- One place for feedback, with a template: what happened, what you expected, build number.
- Automatic build numbers in the corner of the screen, so a report can be traced to a build. This one line of interface saves hours.
- Crash and error reporting wired up early, because the crash you cannot reproduce is the one players will hit most.
- A regular external playtest, which is a different thing from the team playing it, per how to run a playtest that tells you something.
Working with people who are not in the room
Most small teams now include somebody remote, and most contractors are. The tooling questions are the same; the discipline needed is higher.
- Write decisions down. A decision made in a call that nobody recorded will be re-made differently in three weeks.
- Async by default, calls for decisions. Long threads for context, short calls to choose.
- Overlap hours, stated. Two or three hours where everyone is available is enough, and knowing when they are prevents a day of waiting per question.
- Give contractors real access: the repository, the build, the task board. Working through a middleman doubles everyone's cost.
- One person who answers questions, so a blocked contributor is blocked for an hour rather than a day.
Every hour a small team spends on pipeline is an hour bought back from every person on the project, every week, for the rest of it.
What to skip
- Heavyweight process. Sprints, ceremonies and estimation rituals designed for thirty people cost more than they return on four.
- Custom tooling before you know the problem. Build the tool after the manual version has hurt three times.
- Perfect documentation. A one-page setup guide that exists beats a wiki that does not.
- Tool churn. Switching task trackers mid-project costs more than the deficiency you were fixing.
- Automating a thing you do twice. Automate the daily, not the annual.
A pipeline check
- Time a new person from nothing to a running build.
- Ask who can produce a release build. If the answer is one name, that is a risk.
- Check whether source art is in version control, not just exports.
- Try to restore yesterday's build. Does it exist?
- Open the task board. Is it current, and can you tell whether the next milestone will land?
- Pick a random asset and check it against your naming convention.
- Count the manual steps between changing one icon and seeing it in game.
- Check the build number is visible in the game.
- Ask a remote contributor what blocked them longest last month.
- Confirm the last known good build is kept somewhere everyone can reach.
What version control should a small game team use?
Whatever the team will actually use, provided it handles large binary files and offers file locking so two people cannot edit the same scene or texture in parallel. The specific tool matters far less than the rules around it: everything committed, source art included, and a restore you have actually tested.
Do we need automated builds on a three-person team?
Yes, and it is one of the highest-return days of work available. A nightly build catches breakage within a day, gives playtesters something to play, and removes the single point of failure where only one person can produce a release.
How much process does a small team need?
Very little, and what there is should be about visibility rather than ceremony: one task list, one weekly build, milestones with clear definitions of done. Heavy agile practices designed for large teams generally cost small teams more than they return.
How do we work well with remote contractors?
Give them real access to the repository, the build and the task board, name one person who answers questions, state your overlap hours, and write decisions down. Most remote friction is not time zones, it is decisions made in calls that were never recorded and access that was never granted.
What naming convention should we use?
Type first, then role, then variant, lowercase, no spaces, folders organised by feature rather than by file type, and no version numbers in filenames. The exact scheme matters less than agreeing it before there are ten thousand files and writing it on one page everyone can find.
When should we build custom tools?
After the manual version has hurt three times, and only for things done daily. Small teams routinely lose weeks to tooling that anticipates a problem they never have, while the actual bottleneck stays manual because it was never measured.
Hadjoudj Idris
Game UI/UX Designer, Remote, worldwide
Need this done properly on your game?
Menus, HUDs, a full UI system, or one screen that isn't working. Tell me what you're building and I'll tell you honestly whether I'm the right fit, and what it would cost.
Upwork100% Job Success