BUILT WITH AVALONIA
Unity Games logo

Plastic SCM

by Unity Games

Unity Games logo

About Unity Games

Unity is the platform behind a huge share of the world's games and real-time 3D content. Its version control system began life as Plastic SCM at Códice Software, a Spanish company built over two decades around one hard problem: source control that scales to enormous repositories and the large binary assets games depend on. Unity acquired the company, and the system is now the version control built into the Unity editor. The standalone desktop client that thousands of teams still use day to day is built with Avalonia.

When the team set out to escape three separate platform codebases, they evaluated the modern .NET UI landscape and chose Avalonia. This is the story of why and what they found.

2005

Founded

2020

Acquired

4 min

UI Test Suite

6,000

UI Tests

Avalonia Highlights

  • One UI codebase across Windows, macOS and Linux, replacing three
  • Around 6,000 UI tests running headless in roughly four minutes, over 50% UI coverage
  • Heavy custom controls (a virtualised branch graph, image and text diff viewers) on a repository of millions of lines of code
  • Fully virtualised UI throughout, with search and history that stay fast at scale
  • A familiar XAML and styling model close to web development in flexibility
  • First-class AI tooling, with both Avalonia MCP servers used in daily development
Avalonia solved all of our problems. Three codebases became one, the flaky UI testing went away, and we left the outdated frameworks behind. If you're weighing up a port, just try it.
Daniel Peñalba· Developer, Unity Version Control
Plastic SCM Screenshot

Three Codebases, One Small Team

For years the desktop client carried three separate user interfaces: WinForms on Windows, GTK# on Linux and Xamarin.Mac on macOS. Each had its own quirks, its own testing and its own maintenance burden, and for a small team that meant fixing the same thing three times and never quite trusting any of it. The decision to consolidate was driven by that weight alone. The team went looking for a single-codebase model that wouldn't force them to abandon C#, and found Avalonia.

Maintaining three different codebases, each with its own testing, was the thing that pushed us. We needed a single codebase, and Avalonia gave us one without leaving C# behind.
Daniel Peñalba· Developer, Unity Version Control

A Clean Port to a Single Codebase

The team ported from the Xamarin.Mac client, the most modern of the three and the one with the cleanest separation between the UI layer and everything beneath it. They rebuilt the controls and styling to preserve their own established look rather than adopt the default theme, then moved the application across screen by screen until it reached parity with the Windows build. The first migration took around two months, and it was done by hand, before LLM-assisted coding was part of the workflow.

Our UI layer was well separated, so the port was direct. The first migration took about two months, and we did it without an LLM.
Daniel Peñalba· Developer, Unity Version Control

Built to Scale, and Fully Custom

Version control for games means enormous repositories and a UI that has to stay responsive against them. The team's own production repository runs to millions of lines of code, and every control is virtualised so that listing pending changes, searching and exploring history all stay fast. Much of the interface is bespoke: a branch explorer that renders millions of history nodes on a virtualised canvas using a quadtree to work out what's actually on screen, an image diff viewer with onion-skin, side-by-side and swipe comparison, and a text diff experience built on AvaloniaEdit with their own open-source syntax highlighter on top.

Our repository is millions of lines of code. Finding pending changes, searching, exploring the history, it's all virtualised and it's immediate.
Daniel Peñalba· Developer, Unity Version Control

Testing That Changed How They Work

The team's strongest result with Avalonia is in testing. UI testing used to mean a commercial tool running inside a virtual machine, because it seized the mouse and keyboard and locked the developer's own machine while it ran, and the results were slow and flaky. On Avalonia's headless platform that whole problem disappears. Everything can be mocked and tested without a window on screen, the suite runs to roughly six thousand tests in about four minutes, and UI coverage sits above fifty percent.

Six thousand tests passing in four minutes, with no windows, everything mocked and tested. There's no other part of our codebase that good. I'm in love with it.
Daniel Peñalba· Developer, Unity Version Control

And Now, AI in the Loop

In daily development the team uses both Avalonia MCP servers: the documentation server to feed accurate API context to the model, and the dev tools server to let it work directly against a running application. That second one is where it gets interesting. A designer's mockup goes to the model, which then iterates against the live visual tree until the margins and layout match exactly. One codebase, fully testable, and now AI-assisted from design to implementation.

We use both Avalonia MCP servers. With the dev tools one you can hand the model a designer's mockup and have it iterate against the live visual tree until the margins are exactly right.
Daniel Peñalba· Developer, Unity Version Control

Daniel shared his experience on an episode of Avalonia Connect, which you can watch on YouTube.

Watch the interview

Avalonia powers production software at some of the world's leading software companies.

From financial trading floors to global manufacturers, teams choose Avalonia for cross-platform .NET reach without compromise.

Read more stories