A long time ago, when Transcendence was a tiny game with only a dozen weapon types, I kept a design document describing each weapon and its properties. Whenever I needed to design a new ship I just consulted the design document and picked an appropriate weapon.
And then I added more weapon types. At first I just kept the design document up to date, but eventually the system fell apart. There were too many items and too many changes. And once the design document was out of date, it was useless to me.
The solution, of course, was obvious: the weapon definitions are stored in the game itself. Instead of keeping a separate design document, why not just output weapon properties straight out of the game itself?
And that's how TransData was born.
TransData is a command-line version of the Transcendence game engine. TransData can crack open the game definitions (stored in XML and TDB files) and output them in various human-readable formats.
Because TransData has a full version of the game engine, it can serve many functions. I use it a lot to output tables of game elements (such as weapon types) but I also use it to simulate entire game sessions. For example, TransData can simulate a game session and output the number of Phobos dreadnought spawned in a game.
TransData is particularly useful for modders, who need both table outputs and simulations. TransData uses extensions just as the core game does, so any new items you've created in a mod will show up in the appropriate tables.
Download and install TransData by following these instructions. You can run TransData with no parameters to get a list of commands.
Let's try the shipImages command. Type in the following in a command prompt:
If everything is installed correctly, TransData will generate an image (temp.bmp) containing the ship images used in the game. Open it up and look!
That's all you need to know about running TransData. You run the program with a command (/shipImages) and specify options as needed (/output:temp.bmp). If you want to see a list of options for a command, use the /? parameter. For example:
By default, TransData uses all extensions from the default Extensions folder. For example, in the command above TransData, would include any ships defined in extensions. If you wish to explicitly choose extensions, you can specify the UNIDs in the command line:
This command line includes the Corporate Command extension (UNID = 0x00800000) and nothing else. You can specify multiple extensions by separating the UNIDs with commas.
You can specify no extensions by using the word none:
By default, TransData uses the core adventure (The Stars of the Pilgrim). You can specify a different adventure (by UNID) with the /adventure option.
Lastly, you may specify an addition extension folder with the /extensionFolder option. If specified, TransData will load extensions from that folder as well.
If you always want to specify an option, such as an extension folder, you can put the options in the TransData.xml file. For example, you can have a file like this:
<Option name="extensionFolder" value="c:UsersGeorgeMoreExtensions"/>
<Option name="extensions" value="0x00800000"/>
TransData will automatically look in the current directory for a TransData.xml file. If it finds it, it will use it.
You can also create an XML file of options and pass it to TransData when you run it. For example, you could create MyCommand.xml as follows:
<Option name="output" value="temp.bmp"/>
You can then tell TransData to use those options:
If there are conflicts between options, for example, if an option is specified in TransData.xml and in a command file, then the command file takes precedence, followed by any command-line arguments, followed last by TransData.xml.
TransData is one of the most useful tools I have for designing and balancing the game. This article has shown you the basic techniques for using it. I'll expand on specific TransData commands in future articles, but for now I hope you'll be able to use TransData for your own mods.