Source control

From VNDev Wiki

Source control is a set of activities which is often performed by any member of the team who is producing game assets of any kind (script, art, music, code, etc). It involves managing and organizing different versions of the assets produced, communicating to the team about changes made and the version to use for relevant team members. With VNs that have longer development duration, a version control system can be used to assist the development team in managing asset changes as well as facilitate coding in parallel. The job of managing the version control system typically falls under the programmer's role.

Classic source control

Version control system

Tools

Version control systems such as Git is often used along with a repository management service such as GitHub or Bitbucket. These services allow you to make coding assets and game builds available for all team members (or the public if desired), with additional functionalities unique to version control system such as pull requests which supports coding in parallel. Similar to file sharing websites, these hosting services can serve as backup of game assets and protection against irreversible changes, as all committed changes are recorded and any earlier version of the game assets can be recovered.

Terminology

  • Repository: folder containing the game assets that the version control system will track
  • Clone: make a copy of a repository hosted on a website (e.g. GitHub) and download it
  • Commit: record a set of changes made to the tracked files in the repository
  • Commit History: list of all commits/changes made to the repository
  • Branch: group of commits on top of a base commit history
  • Merge: combine two branches/commit history to form one commit history
  • Merge Conflicts: conflicting changes detected when attempting to merge
  • Pull: merge the remote/hosted branch into the local branch (website to local)
  • Push: merge the local branch into the remote/hosted branch (local to website)

Quick start

Quick guide for setting up with GitHub because it's free and widely used:

Do it once

You can use GitHub either with the Command Line Interface (CLI) or GitHub Desktop. Installing GitHub Desktop also installs Git for the CLI.

Git CLI
  1. Create a GitHub account here
  2. Install Git here
  3. Set your GitHub username and email on the CLI (refer here and here)
  4. Create a personal access token, set it to never expire and save it somewhere (steps here)
GitHub desktop
  1. Create a GitHub account here
  2. Install GitHub Desktop here
  3. Authenticate your GitHub account (check here)

New game setup

With every new game.

Git CLI
  1. Create a new repository on GitHub (steps here)
  2. Google for the gitignore file of your game engine (here's renpy)
  3. Add the .gitignore file in the repository and commit on GitHub (refer here)
  4. Clone the repository to your computer (steps here)
  5. Add your game files to the repository and commit in CLI
git commit -m "add game files !"
  1. To update the repository on GitHub, push in CLI (enter your token when asked for password)
git push
  1. Happy jamming!
GitHub Desktop
  1. Create a new repository on GitHub (steps here)
  2. Google for the gitignore file of your game engine (here's renpy)
  3. Add the .gitignore file in the repository and commit on GitHub (refer here)
  4. Clone the repository to your computer (refer here)
  5. Add your game files to the repository and commit in GitHub Desktop (check here)
  6. To update the repository on GitHub, push origin in GitHub Desktop (refer here)
  7. Happy jamming!

For more references on getting started with GitHub, here's the official docs.