<aside> 💡

We’re starting a new project next year at Ink & Switch. Here’s a sneak preview.

</aside>

Imagine you’re a high schooler building a video game, and you want to collaborate on it with some friends. What’s the first step: diving into designing a level? Coding a script for how a player moves?

Often, the answer is none of the above. Instead, it’s: “learn git”. Before you can even share a single scene or line of code, you need to become fluent with files, CLI commands, pushing and pulling, and managing merge conflicts.

Version control systems like git and Perforce are powerful tools for large teams of professionals. But for hobbyists and kids just getting started, the learning curve can stand in the way of even basic collaboration.

Imagine a different world where none of these barriers get in your way. You start playing your game, and invite your friend to start editing the level. All their changes show up live. No files, no CLI commands—just shared editing:

Live collaboration: one person can edit a level while another person is playing it

Live collaboration: one person can edit a level while another person is playing it

Over time, you’ll want to add more sophisticated and formal patterns, like working on separate copies (”branches”) to avoid stepping on each others’ toes. But these patterns should only be there when you want them to be; they shouldn’t get in the way at first.

For the past year, we’ve been exploring tools for achieving exactly this kind of workflow: starting with lightweight synchronous collaboration (“Google Docs” style), and gradually adding more formal workflows: space for private asynchronous work, tools for reviewing suggested changes, and more. We've tried dozens of prototypes for this workflow across many use cases: writing Markdown blog posts, writing empirical science papers, and drawing diagrams. Along the way, we've been building up a collaboration platform called Patchwork which bakes in version control as a foundational primitive.

Reviewing the history of a blog post, with diff highlights

Reviewing the history of a blog post, with diff highlights

Making a branch of a floorplan sketch s

Making a branch of a floorplan sketch s

Next up, we're excited to take this exploration to the domain of game development, which poses a bunch of unique challenges:

Multimedia support: How can a version control environment support a variety of media types, from art to music to code? What does it look like to review changesets across media types? How do specialists like artists and programmers collaborate in ergonomic ways?

Integrating collaboration: Today, version control is often a separate system from the main engine or IDE, forcing users to switch tools and also adding more things to learn. What would it look like to make collaboration a more integrated part of the game dev experience?

Working in parallel: How can different users work together on a game without getting in each others’ way? How might we make it easier to explore different variants of game mechanics in parallel?

History: How can you visualize the evolution of a game over time?

One context we’re particularly interested in is education. In conversations with educators at the Endless Foundation (who are sponsoring this work), we've heard that introducing kids to files and Git CLI commands before they can do any collaboration is a serious barrier. We wonder if it's possible to create a smoother ramp that starts simple for students but also scales up to the needs of larger collaborations and even professional game developers.

Concretely, our plan is to extend Godot—an open source game engine used by the Endless Foundation for their teaching activities—with some of the ideas from Patchwork. The prototype of live collaboration shown above is just one example of the kinds of experiments we’re trying. But we hope that this process will yield general insights into version control that apply beyond just the Godot environment.

Talk with us!