Want to know a secret to making your game development process run smoothly? ๐Ÿ”ฅ

Let's talk about versioning ๐Ÿงต๐Ÿ‘‡

#gameDev #indieDev #indieGameDev #coding #unrealEngine #unity3D
First of all I want to point out the importance of clear and consistent versioning of your game builds. Keeping track of changes and updates is essential for ensuring that your game is stable, efficient, and easy to understand for both the development team and the players.
Typically a game version is made up of 3 to 4 elements, like 1.0.14 or 1.3.74.8.

You can basically break them down as follows: [Major].[Minor].[Patch].[Build]
Major: This indicates the major version of your game.

This is typically 0 while being in development and turns 1 once the game is released. A major version of 2+ usually is only used in case the game receives a big redesign.
Minor: This is used when adding new features or any big updates to your game

Patch: These are minor iterations, like smaller adjustments to existing features, bug fixes, etc.
Build: This is incremented with every build. Especially important for your non-public versions of the game were you are doing fast iterations for testing before releasing a patch or even bigger update of the game.
There are for sure lots of different approaches to how to build your own version.
But I think this should explain the general idea and help you find the solution that works best for you ๐Ÿ‘Œ
Versioning also allows you, the developer, to keep track of changes made to the game's codebase and assets.

This is especially important when working with a team, as it allows everyone to stay on the same page and avoid confusion.
With a clear versioning system in place, you can easily identify and reproduce bugs, track changes made to fix them, and understand the progress that has been made on the game.
But versioning is also important for the players, as it helps them understand what's new and what's changed in the game.
This is particularly important when it comes to communicating updates and patch notes, as players need to know what they can expect when they download the latest version of the game.

Besides that versioning helps with backwards compatibility.
Ideally your players should be able to still use older builds of the game while new versions are available. But depending on if new updates add major features or older versions may even create conflicts when interacting with new versions of the game in multiplayer sessions.
In this case you can use the game version to force players with older builds to update to a new version to be able to continue playing your game.
You can make this happen by simply storing a min-version requirement on some sort of server / cloud storage / provide it through a REST API, so every game client can check this version requirement when being started.
In case the min-version is higher than this game client's version, you'll show an update message.

Tip: When developing mobile games you can even use google firebase remote parameters as an easy solution to provide the min-version requirement to your game clients.
Another important aspect of versioning is its role in playtesting and user feedback. With a clear versioning system in place, you can easily reproduce bugs and track changes made to fix them.
This can help streamline the playtesting and feedback process, making it easier for you to identify and address issues.
Versioning can also help with creating a roadmap for future development since you are now able to assign certain new features to an upcoming version of your game, making it nicely structured so your players know what to expect in the future.
When working with Unreal Engine you can define the version of your game in the Project Settings -> Description -> Project Version.

To make use of this version text in your blueprints / in C++, you can add this little helper function to a C++ blueprint function library class.
This adds a little pure getter function (usable in blueprints) that returns the version text from your project settings, so you can easily display it in your games load screen or main menu, for example.
Another very important aspect is automating the versioning process.

Ideally you are already using a CI/CD solution like @jenkinsci or @TeamCity (which I highly recommend).
In this case you should add a little script to your build steps to automatically increment your game version.
This way you can be sure to always have a unique version for each and every build thats produced by your CI/CD which makes the whole development process way more structured and streamlined.
Let me know in case you are interested in learing more about automatically incrementing the game version through CI/CD, handling the version in your unreal project like converting it from FString to a comparable strucut and so on. ๐Ÿ”ฅ
If you enjoyed this thread:

1. Follow me @RobinVanina for more of these as well as #UnrealTips to speed up your workflow
2. RT the tweet below to share this thread with other devs

โ€ข โ€ข โ€ข

Missing some Tweet in this thread? You can try to force a refresh
ใ€€

Keep Current with Robin Vanina ๐Ÿ’ก #UnrealTips

Robin Vanina ๐Ÿ’ก #UnrealTips Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(