# Game Versioning: Semantic Version & Build Numbers in Godot

> How ShipThis manages semantic versioning and build numbers for your Godot mobile game. Auto-incremented build numbers and manual version control for App Store and Google Play.

Source: https://shipth.is/docs/guides/versioning

When ShipThis builds and publishes your Godot mobile games, two version numbers are associated with each build. These are the **Semantic Version** and the **Build Number**.

[info]
**Semantic versioning** and **build numbers** serve different purposes, although they are both essential for managing game updates.

**ShipThis will automatically increment the Build Number after each successful build, but you must manually change the Semantic Version.**

After editing the version numbers, you will need to rebuild your game with [`shipthis game ship`](https://shipth.is/docs/reference/game/ship/)

To show the current version information, run the [game details](https://shipth.is/docs/reference/game/details) command:

```bash
shipthis game details
```

It will output the current values:

<pre class="terminal__body">
<font color="#4CE64C"><b>david@sal9000</b></font>:<font color="#295FCC"><b>~/game</b></font>$ shipthis game details
<font color="#FFFFFF"><b>GAME DETAILS</b></font>
  Game Engine           <font color="#4CE64C"><b>godot</b></font>
  Game Engine Version   <font color="#4CE64C"><b>4.3</b></font>
  iOS Bundle ID         <font color="#4CE64C"><b>com.shotgun.steve.xii</b></font>
  Android Package Name  <font color="#4CE64C"><b>N/A</b></font>
  Semantic Version      <font color="#4CE64C"><b>0.0.1</b></font>
  Build Number          <font color="#4CE64C"><b>3</b></font>
</pre>

## Semantic Version

- **Format**: **MAJOR.MINOR.PATCH** (e.g., `1.2.3`)
- **Purpose**: Communicates the nature of changes
  - **MAJOR**: Introduces incompatible changes or a significant update (e.g., a major redesign or overhaul).
  - **MINOR**: Adds backward-compatible features (e.g., new levels or mechanics in the game).
  - **PATCH**: Fixes bugs or makes minor backward-compatible improvements.
- See [https://semver.org/](https://semver.org/) for more info

### Editing the Semantic Version

Editing can be done with the `--semanticVersion` parameter:

```bash
shipthis game details --semanticVersion 1.0.0
```

## Build Number

- **Format**: A simple integer (e.g., `69`, `404`, `20241119`).
- **Purpose**: Identifies a specific iteration of the game build for internal tracking.

### Editing the Build Number

Editing can be done with the `--buildNumber` parameter:

```bash
shipthis game details --buildNumber 5
```
