Source control and binary assets

After reaching a point on my current project where i had more than some placeholder assets, i wanted to control them with some kind of source control. Previoulsy I used Perforce with Unreal Engine. But this time using Godot, I wanted a more light weight solution. So I tested Git LFS for several days and then found, my personaly, holy grale.
I want to share my experiences.

Git for text based assets

Just a short detour for text assets. Simple, free and easy, git. There are many git platforms out there, GitHub, BitBucket, GitLab or if you want your own hosted platform I can recommend Gitea.

Server and backups

The first big question I had to myself was, where to save all these assets and create a backup? I am woking on at least two computers most of the time so I didn’t want to rely on my local machine with some back ups here and there. I dind’t want to struggle with a self hosted server and backups at all and didn’t want to pay too much. It is all just a hobby for myself.
Therefore the best solution i found was OneDrive. It comes with Windows preinstalled, you got 5GB of space and having the files in synced on multiple computers is no problem.

Perforce Helix Core

At least in the beginning of the year 2022 Helix Core was the best solution to use with Unreal Engine. It took some time to set up a server localy and save the database to the OneDrive directory. Surprisingly the documentation on the perforce website is written very well. Several hours after the registration I also received a call from perforce and asked if I needed helped. It was a very pleasant call.
For my current project I didn’t want to struggle with the whole Helix Core administration and installation. At least you can have up to 20 workspaces, what is the same as a repository, as far as I understand and up to 5 users for free.
To work with multiple people it may be the best solution. You can lock files, so that every other person is able to see what you are working on and is not working on the same file. Merging binary files may be impossible.

Git LFS

Oh boy… three days, not a single commit worked. Game Dev is a hobby for me. Spending a friday afternoon and every free minuten i had on my weekend, to get it to work to push the binary files on a local directory and the text files to a remote git repository… It was pain, I gave up. Nothing more to say.

Snowtrack

On reddit I found a post about git, binary assets and source control on r/gamedev. In the comments someone mentioned Snowtrack. So I got to their website and it looked realy promising. No server, a CLI and a very well working UI tool and all for free.
Normally I go with the CLI but this time I thought to give the UI tool a try. It was very easy to setup, just took me about half an hour and got my first commit and synced with OneDrive and had the assets ready to use on my second computed.

How to set up snowtrack?

I created an extra directory in my OneDrive directory for all my Snowtrack project.
After installing the UI tool go to Menu -> File -> Preferences and set the “Location of the version database” to your local OneDrive directory.

Snowtrack settings

Now click “Create…” and select the parent directory of your project. Name the project name the same as your directory, where all your text and binary assets are located, select “Inside the Version Database” and confirm with “Create project”.

Snowtrack UI project setup

Inside the project directory a .snow file is created just containing a path to your OneDrive directory. I added it to my .gitignore file because it may be a different path on my other computer and it is very easy to set up. Also add all your binary files you don’t want to control with git to your .gitignore.
Now we just need to ignore all text based files with Snowtrack. Luckily it is as easy with git. Create a .snowignore file and exclude everything with a simple ‘*’ know force add the file types you want to control with snowtrack like ‘!*.gltf‘ or ‘!*.png‘.

My .gitignore looks like this:

.godot/
.vscode/
*.glb
*.png
*.svg
.snow
*.obj

Assets/SyntyAssets/AnimationsLibrary.res

And here my .snowignore:

*
!*.glb
!*.png
!*.svg
!*.obj
!Assets/SyntyAssets/AnimationsLibrary.res

Creat a commit in the Snowtrack UI for your newly set up project and sync with OneDrive. When doing some work on code and assets at the same time i add the git commit hash to my snowtrack commit message to be able to go back all the time and have the corresponding assets.

Snowtrack project history

Set up on other computer

Just sync your text files by git, create the .snow file with the path referencing your snow database on OneDrive and you are ready to go to sync your files in the Snowtrack UI.

Summary

Snowtrack is super easy to set up if you work alone. I can’t say something about working with multiple people but as far as i read, there is Snowtrack for Teams.