Kochol Game Engine use major.minor.release version style.
For more info click here
Important notes from above link
Major
- All features across the same version should be either 100% compatible or in rare conditions gracefully degrade.
- File formats should be compatible, all 1.x versions should open, save and edit 1.x versions.
- For commercial products all updates in the 1.x line should be free
- Only release a new major version if;
- the flow of the application has been noticeably changed,
- there are a significant number of new high-visibility, high-usability features,
- the user interface has drastically changed.
- New major versions should always be able to import or open older versions.
One key point is that only new highly usable features should mark a new major version. New major versions usually mean an upgrade cost and nothing is more annoying than buying a new version only to find the new features are only useful to about 1% of the install base. I’ve seen several products try to push a new version with inflated features that don’t actually offer any benefit.
Minor
- New non-breaking small feature, meaning it still works with other version with the same major version.
- Bug fixes that apply to everyone.
- You’ll want everyone to be running the latest minor version so be prepared to make this available to everyone.
- Tech support should usually make sure the end-user is on the latest minor version before going farther.
- Installing the newest minor version should be painless. All user settings should transfer over seamlessly.
Release
This gets a little murky for some and there are a lot of schools of thought on this one, here is mine:
- Represents the release of the current major.minor version.
- Increase the release when you do small, infrequently encountered bug fixes.
- Not everyone needs to be on the latest release, only those affected by certain issues.
- If you do Betas and Release Candidates this is the place to note that. If you release RC1 as version 2.5.0 and someone finds a bug you update the release to 2.5.1.
- Resets back to 0 every time the minor version changes.
That last point is where a lot of people get into knife-fights. Some think release should mean the number of times a product has actually been “released” into the public. If that’s how you think then by all means go for it. Personally I think of it as a version number for the version number, in other words, how many times did I release version 3.1?