1
0
Fork 0
A simple and expressive versioning specification for video games
Find a file
2025-12-15 13:34:36 +00:00
README.md Update README.md 2025-12-15 13:34:36 +00:00

GameVer

GameVer is a simple and expressive versioning specification based on SoloVer but designed for video games. Unlike SemVer's three-part versioning system, it uses a single number.

<version_number>[<postfix>]

  • version_number: Single integer number, minimum 1. Prepended by 0. before you've gone gold.
  • postfix: Optional. Matching regex [+-][a-z]+[1-9]?[0-9]*.

What makes GameVer different from SoloVer is four-fold.

  1. GameVer is able to encode pre-gold versions by prepending 0. to the version number.
  2. The postfix regex has been modified to remove uppercase letters, and to split it into a word and number component.
  3. The ordering gotchas of sorting postfixes alphanumerically is replaced with manual ordering.
  4. Postfixes can also be ordered non-linearly.

Versioning Rules

  1. Increments: The version number is incremented for each new release.
  2. Going gold: The version number goes from 0.x to 1 when the "1.0" release happens.
  3. Postfixes: Additional information can be appended after the version number, separated by a minus or a plus character.

Characters other than the regex above mean parsing the version must stop.

Precedence

  1. Gold version number is after a pre-gold version.
  2. Higher version number is after a lower number.
  3. + postfix is after no postfix. Hotfixes.
  4. - postfix is before no postfix. Pre-releases.
  5. Postfix words are ordered according to your specification, including non-linearly.
  6. Higher postfix number is after a lower number.

There is no formal method for specifying the ordering of your postfixes. You can write a supplemental text file, or rely on intuition like "snapshots are before release candidates".

Postfixes can also be ordered non-linearly through branching. For example, Minecraft's April Fool's updates and combat experiments are not ordered before or after hotfixes and snapshots, they exist in their own branches.

Commentary

Ordering example: 0.1 < 0.2 < 0.2+fix1 < 1-rc1 < 1-rc2 < 1 < 1+fix1 < 1+fix2 < 2-snap1 < 2-rc1 < 2

Think of calculus: "x minus something" is less than x and "x plus something" is greater than x.

We intentionally do not try to communicate "backwards comparability" because it is far less relevant when it comes to video games.

GameVer is simple because it uses a single incremented number.

GameVer is expressive because it offers a way to postfix something after the version number.