Synapse is a lightweight version control system (VCS) written in C++17, based on Git architecture and working principles. It is specifically designed to meet the large data and workflow needs of game developers and Unreal Engine / Unity projects.
The open-source core (Stable Core v1.0.0) contains all the fundamental features required to function as an independent version control system.
- 📁 Smart Repository Initialization (
init): Sets up the.synapsedatabase directory and creates specialized.synapseignoretemplates tailored for game engines (Unreal Engine, Unity, C++). - 👤 Custom Identity Configuration (
config): Configures the author identity displayed in commit history. If not configured, it dynamically resolves the operating system's local username. - 🔍 Advanced Status Analysis (
status): Compares staging and disk changes to display added, modified, and deleted files in a color-coded terminal format. - 💾 Zlib-Compressed Object Store: Hashes file contents using SHA-1 and compresses them using Zlib, safely storing them inside
.synapse/objects. - 🚀 Relational History Management (
commit&log): Creates commit and tree objects to maintain the repository timeline. The log command prints commit details with short and long hashes. - ⏳ Stable Version Checkout (
checkout): Time travels to any version by clearing untracked files, restoring versioned files, and updating the staging index and branch references.
To build Synapse, you need a C++17 compatible compiler and CMake (min. 3.10).
# 1. Clone the repository
git clone https://github.com/your_username/Synapse.git
cd Synapse
# 2. Create build directory
mkdir build
cd build
# 3. Configure and build the project
cmake ..
cmake --build . --config ReleaseOnce the build is complete, the executable synapse binary will be ready.
Go to your project directory and initialize the repository with an Unreal Engine ignore template:
synapse init ueSet your name for commit records (if left unconfigured, your OS username will be used automatically):
synapse config "Your Name"Add your changes to the staging area:
synapse add .See which files are modified, deleted, or untracked:
synapse statusSave your staged files as a version:
synapse commit -m "Initial commit: Set up Unreal project"List all commits in the repository:
synapse logRestore the project state using a short or long commit hash:
synapse checkout 84347c5Our roadmap to transition Synapse from a lightweight Git clone into a next-generation version control ecosystem tailored for game studios:
- 📦 Large File Storage (Synapse LFS): Avoid compressing large binaries (FBX, WAV, TGA, UASSET, etc.) and save them directly in
.synapse/large_media/, storing only SHA-1 pointer files in the object store. - 🔒 In-Editor File Locking: Create a central
.synapse/locks.jsondatabase and addsynapse lock <path>andsynapse unlock <path>commands to prevent multi-user edit conflicts (exclusive checkouts). - 🌿 Branch Management: Introduce branch creation (
synapse branch <name>) and logic to switch branches safely under.synapse/refs/heads/. - 🏢 Multi-Project Workspace Support: Enable a single Synapse client or UI to track and manage multiple independent repositories simultaneously.
- ⚙️ Dynamic Link Library (DLL): Build the
Synapse::Enginecore as a shared library (.dll/.so) for third-party integrations. - 💻 Desktop Application (GUI): Create a lightweight, high-performance desktop interface (e.g., Qt, wxWidgets, or Dear ImGui) for artists and designers to visualize changes, stage, and commit with one click.
- 🏷️ Semantic Commits: Introduce templates like
bug-fix,feature,refactor, andasset-addin both CLI and GUI with smart filtering in logs.
- 🔌 In-Editor Source Control Plugin: Develop a C++ source control provider plugin for Unreal Engine, triggering DLL actions directly from the Editor UI.
- 📊 Visual Blueprint Diff: A tool to analyze binary
.uasset(Blueprint) files and visually/textually summarize node and variable changes between versions. - 🛡️ Automatic Redirector Fixer: Run the Unreal
FixUpRedirectorscommandlet automatically before staging to prevent broken asset references. - 🧹 Workspace Optimization (
synapse clean): A cleanup tool to wipe transient folders (Intermediate,Saved,DerivedDataCache).
- 🗺️ Actor-Level Locking: Leverage World Partitioning to lock specific actors in a level rather than locking the entire
.umapfile. - 📐 Asset Pre-Commit Validator: Check mesh polycounts and texture sizes against studio guidelines before allowing a commit.
- 🛠️ C++ Project Wizard: Re-generate Visual Studio solutions (
.sln) automatically usingUnrealVersionSelectorafter checking out C++ changes.
This project is licensed under the MIT License. See the LICENSE file for details.