# Trainz/tags/trainz-build tags

Back to the Top
* ↑   The TrainzBaseSpec — Index of Tags & Containers ↓
* Fundamentals for Trainz Trainees Introductory Trainz — page by page instruction
* TOC | Beginnings | Fun | AM&C | Creation | InBook Refs | ORP Refs:  • Index • Containers • Kinds • Tags | Appendixes  • Vers
Glossary :
HKeys-CM :
HKeys-DVR :
HKeys-SUR :
HKeys-WIN :
Mouse use :
Notations :
[[file:CM will input Versions too advanced-TS10-SP2 shown.JPG|thumb|400px|TS10 SP2's Content Manager (TBV-3.2) happily imported TS12 version (TBV-3.4) texture cdp's for TransDEM.exe in November 2013. Other legacy versions of Trainz will also willingly import 'Version unidentified' Trainz content. Supposedly this will no longer happen after an new DLS protocol is in place after mid-August 2015.
* Trainz software suites will not attempt to download and incorporate an asset into its local database which has a trainz-build tag that is newer than its own version number, but ...
** Unfortunately Content Manager's will continue to report there are updates, even when they are entirely inappropriate.
* One can also import inappropriate trainz-build assets from other versions of Trainz or a library collection (say of fixed assets saved before committing after Faults cleanup—a 'handy habit' for those of us running more than one Trainz install), so one need be aware of that.
The trainz-build tag is also an indication of the age of the asset, and the general technical configuration and standards to which it is built. The values will range up from the oldest ('none listed in the asset' so Trainz 1.0-1.3) with a default reporting value as if Trainz 1.3 (TBV v1.3){{efn|Trainz 1.0 was released (2001) with three Service Packs by June 2002, making the version commonly referred to as Trainz 1.3.
For the new Trainz users:' the moral of this story is to examine trainz-build tags (versions) ASAP after importing new content into CM and provide human intelligence as to whether to delete, keep the asset, or set it aside

## Trainz-build tag number(s)

The trainz-build tag (TBV or TB) is an very important single decimal digit floating point number that is applied to any new asset created under the installations particular technology level. When you create a cloned session or route, the version number of your install will assign the matching TBV to any new assets Surveyor or CM creates for you. (But NOT it's code build or build number, which is different).
* This quantity is often also referred to as the Trainz Version, naturally, as various benchmark TBV's start or end a named retail release version, which names are common to all it's service packs—which normally increment the base TBV value assigned the version before the Service Pack(s)
* The word version is used in Trainz to refer to three different technological concepts:
* There is the Trainz Retail Version or 'Release', which generally has a book title style 'marketing name' and its user community's shorthand nicknames for the same;
* the Trainz-build Version (TB, TBV, or more correctly, the trainz-build); is an often seen number indicating the technology level standard criteria under which the asset was produced and supposedly satisfies. In loading, the tag's value is used to choose which fault checking is used in reading the asset data into the data base. With a product continually evolving, some ways of doing things and the lists of key words have changed from time to time—yet by and large, backwards compatibility is so high that most assets made in 2000-2004 still function amazingly well without alteration. About half that generation need a few fairly minor adjustments.
* and the Trainz Build version, or most clearly, the Code Build Number, also known as the build code number or code version, or code build version. This is a technical serial number that comes out of the compiler unique to the set of source code files aggregated by the make file on a specific date.
* The Trainz Retail Version is a text string for a product release in "marketing speak", such as Trainz Simulator 2009: World Builder Edition, or "Ultimate Trainz Collection" (which was way premature!). These are quickly abbreviated to use names everyone understands like TS2009, TS10, TC3, or UTC.
* The Trainz version (TB or TBV) is a decimal numeric code, a value, (e.g. 2.4 or 3.6) which is 'most always' incremented for each major software upgrade release, formally defined by Trainz software for any new asset. This code is updated whenever a significant change to the Trainz data model processing is made by a code build release. Sometimes this, in fact, reflects changes to the data model such as a new mandatory requirement above TBV x.y that such and such an asset KIND must henceforth define a specific tag value or container parameter value, and ...
    Furthermore: Most service packs (which introduce significant functionality changes) will have a new trainz-build assigned, but lesser software upgrades, the hotfixes (which do not introduce significant functionality changes) do not generate a Trainz version number change. BOTH upgrade types generate new code build values (changes)— sometimes several times over, as a series of such upgrade code builds, for example, such an upgrade that affects each 'internationalization' editions; non-English language code builds released early in a retail products {{|TL|TLCP|life cycle}}. Different language versions of the same product will however generally share the same 'asset-oriented' Trainz Version/trainz-build code, so the TBV is for asset compatibility, and the code build is for functional compatibility, and software troubleshooting needs.
* The Trainz Code Build Number is a unique number (e.g. 44653 or 58414) that identifies an individual Trainz release. All releases (including minor changes and language translations) have a different Code Build Number. The lowest known in 'the editor's collection' is a code build of '10' in the Trainz 1.1 CDROM release.
* The Trainz-build tag value uses the Trainz Version numeric code, and after TS2009-SP3, the content manager Windows title bar repeats this value for ease of reference. Assets each report a value reflecting the technology (coding of the data model version) they were meant to comply with.
* Note that several (or many) code build releases (each having a unique code build number identifying it's exact mix of component software) will share and have the same trainz-build value (TBV)) or 'version number'. The 'build' or 'build codes' or 'code build numbers' are sometimes also spoke of as versions or 'code versions, and many of those increment based on the readiness and availability of internationalization releases–versions customized a bit with translations in built-in content for readers of non-English languages. Code versions, trainz-build versions, retail versions... Context counts!
* Theoretically, from a newly created asset's point of view, the content manager assigned trainz-build tag number also indicates the minimum Trainz Code Version required to use the asset.
When assigned, a trainz-build tag number supposedly indicates the minimum technology level (code version) needed... which in pratcie in gross terms will be the first TBV of the first retail released version in the group's development cycle. This is because data model changes to types and operations are defined in advance of any coding needed to implement the feature. The feature itself may not appear until several Service Packs progress the technology changes to the whole suite. In the early days of a release, such planned advancements take a back seat to priority troubleshooting and bug fix repair edits. Once the version is stable, development resumes for the targeted features. Hence a great majority of assets aimed to vett successfully at TBV 3.2 will work fine at V2.9 or V3.0 if the TBV value is appropriately reduced. However, if the newer TBV release(s) contains software dependent 'new features' those will not work in the earlier tech level install(s). Hence Speed Trees will not work in TS10 TBVs 2.9-3.0 but do in V3.2-3.3, both later Service Pack updates.
Lack of processing software mirrors also a release's 'designed intentions' in comparable versions—while TS09 will not generate errors for speedtree assets, neither will it display them; even in the final software release V3.3, identical with TS10's last TBV level. They are effective as an obsolete asset--never seen, never used, taking up disk space. The feature was never supposed to be part of TS09 so it is not enabled or perhaps not included in the software at all. Many assets readily can be converted to lower TBV values with such a simple one decimal digit edit.. Conversely, assets with a lower Trainz-build version should be compatible with the later more modern install, albeit with an occasional need to tweak and update the data model of the asset.

## Asset compatibility

It is important for an asset to list the correct Trainz-build in the config.txt file. It specifies the version of Trainz the asset was intended to be used with. An earlier version of Trainz will refuse to load the asset. A later version of Trainz will enable appropriate backwards compatibility workarounds (e.g. using different validation requirements) as required.
A correctly-constructed asset built for an older version will usually function in a newer version of Trainz. However, while Trainz content validation has improved over time, and newer versions of Trainz detect errors that older versions did not pick up on, many errors are useless make work caused by callous and rapacious programmer and management practices. Often, content may be detected as 'faulty' in a current Trainz version that was missed in the version it was originally created for, but the most frequent issues are missing thumbnail images which have nothing to do with the functionality of the asset, or obsoleted tag names.
Or that is the official party line per N3V, which ignores the fact there are errors they could just fix in parsing, such as ignoring legacy tag names like type, region, asset-filename, or name-xx, etc. and similarly could convert in situ older forms to newer container forms of data, then test for faults. They do neither putting the time cost of their unprofessionalism onto the customers who must one by one correct errors their software should be handling.
It should be noted that content that is uploaded to the Download Station is validated for faults by the most recent version of Trainz—and may be rejected if an more stringent newer fault or error test has been put in place.
Assets generated under a perfectly valid currently supported version of Trains, using the validation compatibility for the trainz-build specified by the asset, may still be rejected by the Download Station Software.
If Content Creator Plus CCP is used to modify an asset, it will automatically update the trainz-build version in the config.txt file to the current Trainz version it came with. This is problematic and contrary to the greatest interests of the most members in the Trainz community, as the lowest trainz-build code is desired from the standpoint of giving the asset the most Trainz users access to the new product (asset). Prior to V3.2, such codes could then be manually back-dated to a lower trainz-build, but the error checking in versions since requires exporting the asset-open-for-edit by copying the folder, reverting it, deleting it, editing the trainz-build code change in the copy, then re-importing it—a discourteous number of extra steps-in-the-dance for content creators, and yet another friction point with Trainz programmers. If Using CCP to fault fix and update, often this version with the invincibility of naive programmers forcing others to toe their line and if the asset specs have changed significantly, many other changes to the config.txt file will probably be required, as CCP wants to promote the asset to the current Trainz-build version.
Assets which are manually edited will need the appropriate version entered. If the line is omitted entirely, the lowest possible version is assumed. This is currently Trainz-build 1.3.Ø

## Obsolete Versions

Trainz-build numbers up to and including 2.8 are considered obsolete as of September 2012 and can no longer be uploaded to the Download Station. See the Trainz Life-Cycle Policy for additional details.

## Notes and references
### Notes

* ↑ The trainz-build tag itself was totally unknown until Trainz UTC (v1.5) and many CC's of that era and for a few years into even the TRS2004 era never assigned a TB code in the config.txt files. TRS2006's through TC3 'new fancy-schmancy CMPs' advances, didn't even list TBVs as one of it's data columns! Newer Trainz releases do their best to translate these older technologies into the newer releases standards (data organization and graphical tech) but some significant percentage of older assets cannot be auto-converted; not because it's not possible, but because N3V's programmers decided to retroactively impose new more stringent data model fault testing; whereas the TRS2006 era's (and spin-offs) handled such conversions readily. Most of these can be fixed easily by adding a mesh-table, thumbnails container and/or bogeys container to the config.
* ↑ For the new Trainz users:' trying to use an asset with faults does not actually risk breaking Trainz for while, and most versions won't let you place faulty content until CM is happy with the asset. So experiment away. That's how many a good asset got created in the first place! Most newer content can be retrograded to work in earlier Trainz releases, at least as scenery items since those with newer script files may use features not present in older Trainz releases. More recently published Routes and Sessions cannot. The programmer's changed the formatting of the session and kind map files, to support more flexible sessions and layers in TS2010 and up.
* ↑ For example: TS09 (no SPs, so TS09-SP0) had a benchmark TBV of 2.9. After four service packs the family of code builds, had a version number (or TBV) of 3.3, with each added service pack having an incremented TBV version number in between the two end values, so TS09 has TBVs/version numbers 2.9–3.3 overall.
* ↑ Shorthand names: The user community in forums typically shortens the Trainz Release Name in line with the TRS2004-TRS2006 products which utilized those names as the *.exe files for the launcher program. Hence TS2009, TS09 ('TS-Oh-nine'), and TS10 are all common shorthand 'use' names. All forms as seems apropos to the material are used in these pages and will link to the long retail version named pages herein. Unlike the TRS's, excepting the TC's, N3V developed versions have used 'Trainz.exe' for both launcher and loader modules (..\bin\trainz.exe) which is inconvenient when playing in the Windows registry.
* ↑ Each set of co-dependent files of a code version are saved together as a unit which makes up an install, or install version—a fourth use of a 'version concept' in this user note. An install implicitly includes some specific location (folder name and path and computer ID). It is a data set likely recorded in your computer's registry as its component software's folder pathspecs.
* ↑ On TBV incrementing: Virtually all service packs will increment the TBV for that code build, but a notable exception was the overlapping TBV's in the four service packs added to each version of TS2009 and TS2010 which were in concurrent development, focused on advancing different parts of the technologies behind Trainz for newer multicore microprocessors and advances in graphics cards. • One upgrade service pack or the other kept the TBV of the prior number so that in the end, • both products with four service packs applied had the same TBV of 3.3, and together they span the TBVs from v2.9 to v3.3 (instead of v2.9–v3.9!), • with the final releases code sharing all the new features of the newly revised and evolved data model and capabilities, save for only the multiplayer beta test capabilities first available in TS2010's last hotfix type of software upgrade. • Further, TS10 had as built-in contents, a superset of all the assets built-in to TS2009 plus new content from Auran/N3V including the newer tutorial series continued in TS12. TS10, was in fact, the product advertised by N3V Games over-optimistically using the new JET 3 game engine, multicore processing, and better graphics cards, but way later than they'd anticipated. As a result, they issued the incremental improvements ready in late 2008 as TS2009.
* ↑ About " such and such an asset KIND must henceforth define a specific tag value or container parameter value"—the new Trainz data model instituted by N3V's programmers for TS2009 has proven remarkably stable and consistent. Subsequent changes, normally limited to that of a single tag or two, have required once defaulted values be defined explicitly, after a threshold TBV level. Several such occur after TBV 3.4 for example. Such explicit references updates are not always reflected in fault messages from a CM, notably those 3.4 notes in the Trainz Wiki, have no analog in testing in TS12's CM 3.6 and CM 3.7, so the definitions are more guidelines than enforced hard and fast rules. But, they are most likely enforced in uploading to the DLS, for that testing is kept far more current, as many CC experiences have shown—requiring a fix and a re-submission to upload.
* ↑ On Hotfixes generating TBV changes... The editor cannot identify any case when a hotfix generates a TBV increment, but there may be an exception, particularly in the various non-English language code builds which most often, come somewhat later in time.
* ↑ When you need an odd problem checked out, the first thing the programmer's want to do, is duplicate the problem so they can use a code debugger to see what is causing the problem. Hence, Customer Service, when taking a problem report want the code build, and could care less about the Trainz version—the code build tells them everything, the version number is far more ambiguous.
* ↑ See first image, on page Trainz
* ↑ As of mid-August 2015, N3V announced a new DLS software downloading interface that is supposed to prevent a user from updating to an inappropriate asset version. Experience upto early 2020 says this works in TS10--TS12 and TANE. It was found early on that as feared this new operation mode also blocked downloads of older assets to older versioned, no longer supported installs, especially TR2004 but after a while, capability was restored to CMP and TS09. Those older versions cannot see whatever blocking code is generated by the server and they will blithfully download even TANE and TRS19 TBV'd kuids. For the oldest Trainz releases, Trainz 1.o through TR04-SP4, the desired kuid, if it be new or old are still be downloadable manually by using the FTP method via the Trainz Download Station Webpage(s) using the newer whitepages url.
* ↑ Trainz-build (TB) value 'creep' or 'inflation' has been forced upon the user community by the Trainz Life-cycle Policy and establishment of stricter testing of uploads to the DLS. There has been much controversy about this between the many CCs and the N3V Management culminating in some heated discussions since the CCs necessarily want the lowest TB so the new asset is available to the greatest number of Trainzers while the N3V management wants the highest to motivate more users to upgrade to newer Trainz. • Minimum TBV's upon uploading, whether the asset functionality needs said TBV level or not, has proved to be N3V Games club. This has diminished the utility of the TBV as a measure of Tech-level, to one that is artificially inflated and so less useful with little relation to the actual technical needs of what the asset requires. • CCs, having put months or years into an asset's generation understandably want to assign as low a TB as possible so more legacy Trainz owners can use it. • N3V whether for mercenary and pecuniary motives, certainly not based on technical grounds, adopted the TLCP to force uploaders to comply with the last 'supported Trainz' release's minimum build code, itself an controversial policy forced on the community, many of whom feel the four year cycle is ridiculously short with the backward compatibility of a Trainz product.
* ↑ The point is many newer uploads have been forced to adopt what started as a tech-level measure, that don't need a high TB, and can't upload it, unless the TB is inflated. This is particularly harsh on a Route Builder CC who may have spent 5-6 years on a TS09 masterwork— who must now revise a lot of terrain and re-evaluate a long list of assets to make sure the route is nearly Trainz/Trainz Highest compliant.
* ↑ In point of fact, in both timing and feature sets, the Trainz UTC release is in reality a fourth service pack of Trainz 1.0 with extra content added—the first nine scenarios as built-in assets and more maps.
* ↑ Auran/N3V management reissued the term 'community edition' in mid-fall of 2014 for the earliest incomplete TANE release. In the event, this proved as many feared, a premature beta-test on a wide scale, including a iMAC release for the Christmas 2014 sales cycle.
* ↑ TRS2004 made Trainz, Trainz!: The only thing missing was TR06's CMP and that's the only really important difference from the TRS's series that follows V2-5 to V2-8 but for some relatively minor features and tweaks.

### Citations

* ↑ Build Code of '1' (0001) is an unconfirmed surmise of the software download version of Trainz 1.0
* ↑ Appearing briefly on one of the loading screens, is formally Trainz 1.1.1, the North American release by Strategy First and the first widely distributed CDROM version.
* ↑ By value recorded in the Windows registry and the record matching that odd 'Trainz 1.1.1' notation appearing briefly on one of the loading screens of the North American release by Strategy First distributed CDROM version.
* 1 2 3 Unconfirmed
* ↑ Confirmed by registry entry, code build 2365 is "Trainz 2004: Deluxe Edition"
* 1 2 [Can-a-new-tag-be-made-for-Trainz], ZecMurphy, Auran Community Assistant, May 11th, 2014, 09:02 PM