Mostly Harmless
Legacy:INT File
INT files are one of the Unreal Engine's file formats. These files are used by the Unreal engine for reference. Instead of searching all the packages made accessible to it to find the resources it's looking for, it simply reads the lists of resources contained in these files. In addition, they are used for language localization and that's the origin of the file extension .int for "international" as well.(You can do so many things with .int files, we could make a tutorial just for them – Wormbo)
These (and all other localization files like DET, ITT, FRT, etc.) look much like INI files. They consist of one or more sections which start with the section's name in brackets followed by Key=Value pairs.
Contents
File Content
Public Section
The [Public]
section can take two different keys, Object
and Preferences
. These can be used as often as needed.
Object
General syntax:
Object=(Name=Package.ObjectName,Class=ObjectClass,MetaClass=Package.MetaClassName,Description="descriptive string")
- Name
- Arbitrary name; generally, must refer to an existing class. (Though that's no engine requirement. If you work with GetNextIntDesc to retrieve Object keys yourself, the Name argument can be anything.)
- Class
- Class of the object described by this line. In many cases, that's simply
Class
if the Object line refers to a class.
- MetaClass
- Common superclass of all objects described in Object lines that belong together; for mutators, that'd be
Engine.Mutator
, for instance. (This class name is used as GetNextIntDesc's first parameter.)
- Description
- Arbitrary description (optional), also retrieved by GetNextIntDesc.
In UT, Object entries are used to make the following items known to the game:
Item | MetaClass | Name | Explanation |
Mutator | Engine.Mutator |
Mutator subclass | Registers a mutator to make it show up in the Mutators dialog box when starting a game. Description is "Name,Description". |
Game Type | Botpack.TournamentGameInfo |
TournamentGameInfo subclass | Registers a game type to make it show up in the Game Type drop-down box when starting a game. Description is optional and specifies the game type's category. |
Key Bindings | UTMenu.UTExtraKeyBindings |
UTExtraKeyBindings subclass | Displays the extra key bindings defined in the given class's default properties in the standard key binder dialog. |
Map List | Engine.MapList |
MapList subclass | Uses the maps in the given class's default properties as the default map list for this game type. |
Mod Menu Item | UMenu.UMenuModMenuItem |
UMenuModMenuItem subclass | Puts an item in the Mods menu. Description is optional and uses the structure "Item Caption,Description". |
Server Browser Tab | UTBrowser.UTBrowserServerListWindow |
UTBrowserServerListWindow subclass | Displays a new tab in Unreal Tournament's built-in server browser. |
Weapons (Unreal) | Engine.Weapon |
Weapon (UT) subclass | Registers weapons that are not a subclass of TournamentWeapon. Not used in UT, but some custom weapon priority tools use it. |
Weapons (Unreal Tournament) | Botpack.TournamentWeapon |
TournamentWeapon subclass | Registers weapons that are a subclass of TournamentWeapon. In UT only members of the Botpack package are displayed in the priority window, but some custom weapon priority tools can display all weapons. |
In UT2003 the following Object entries are used:
Item | MetaClass | Name | Explanation |
Mutator | Engine.Mutator |
Mutator subclass | Registers a mutator to make it show up in the Mutators dialog box when starting a game. Description is not used in the GUI, but is nevertheless specified for the default mutators. |
Game Type | Engine.GameInfo |
GameInfo subclass | Registers a game type to make it show up in the Game Type drop-down box when starting a game. Description is important and takes the form "A|B|C|D|E" with the following meanings:
|
Weapons | Engine.Weapon |
Weapon subclass |
" to create line breaks in the description. |}
UT2004 has replaced the use of INT files for listing weapons, mutators, gametypes, vehicles, crosshairs, announcers and maps with a new cache library system, where class names and their cacheable properties are automatically exported to UCL ("Unreal Cache Library") files when compiling those classes. It does use INT files for voicepacks, though:
Item | MetaClass | Name | Explanation |
Voicepack | XGame.xVoicePack |
xVoicePack subclass | Registers a voicepack to make it show up in the character selection screen. Description is not specified. |
Preferences
General syntax:
Preferences=(Caption="display name",Parent="display name of parent",Class=Package.ClassName,Category=variable group name,Immediate=True)
This is used to create the options available in the UnrealEd Advanced Options window.
Either Class, Category and Immediate are left out or Class has to be a valid UnrealScript class and Category should be a variable group used in that class. (see Variable Syntax)
Localization Sections
Used to localize strings to different (natural) languages. (also see Localization)
To create a class variable with different default values for different languages use this syntax in an UnrealScript class:
class aClassName extends aSuperClass< SEMI > var localized string Description; var localized float SoundLength; defaultproperties { Description="An example class showing localization." SoundLength=2.750000 }
This class is part of a package Example.u.
You can now create localized versions of this class by writing the corresponding localization files. This will be easier if you use UnrealEd to create the international (English) version of this file first. Open UnrealEd, load Example.u and type "dumpint example" at the console. UnrealEd created the file Example.int for you which contains all localizable variables that have been set in the defaultproperties.
For this example the file will look like this:
[aClassName] Description=An example class showing localization. SoundLength=2.750000
You can copy this file and change the extension to the desired language, e.g. DET. Now you can translate the strings and adjust the other variables to suit the new language:
[aClassName] Description=Eine Beispielklasse, die Localization veranschaulicht. SoundLength=2.930000
Since the name of the new file is Example.det the values in it automatically become the default values of aClassName
when this language is selected.
Note: You can't use dumpint in UnrealEd due to a bug in the current UT2003 version. UnrealEd will crash if you try. Use: ucc dumpint <package(s)>
instead.
UnrealScript Functions
Available in all versions of the UnrealEngine
- string GetNextInt (string ClassName, int Num)
- Returns the
Class
string from an Object entry for the MetaClass given byClassName
.Num
is an index, starting from 0 (zero), that specifies which (of multiple matching) entries to get. The function returns an empty string ifNum
exceeds the number of available matching entries. Warning:ClassName
must refer to a valid, loaded class, or the game will crash.
- GetNextIntDesc (string ClassName, int Num, out string Entry, out string Description)
- Like GetNextInt, but retrieves more detailed information about the Object entry, including the content of the
Description
argument.
- string Localize (string SectionName, string KeyName, string PackageName)
- Returns the localized string value of the item given by
KeyName
in the section given bySectionName
for the packagePackageName
. Only rarely needed thanks to the localized keyword in variable declarations that automatically performs this lookup. (Can be very handy for read-only configuration files though.)
Available in UnrealEngine2
- GetAllInt (string MetaClass, array<string> Entries) [static]
- Similar to GetNextInt(), but returns all entries for the MetaClass in the Entries array. (Seems to work even though the out parameter modifier is missing?)
- GetAllIntDesc (string MetaClass, out array<string> Entry, out array<string> Description) [static]
- Similar to GetNextIntDesc(), but returns all entries and their descriptions through the Entry and Description arrays.
Localized versions
- Known versions
-
- .DET - German
- .EST - Spanish
- .FRT - French
- .INT - English
- .ITT - Italian
- .KOT - Korean
- .TCT - Czech
- .RUT - Russian
Related Topics
Discussion
JoeDark: Snagged the GameType part from the mailing list. I'm not sure exactly on the etiquette of such things, should I have asked DJPaul before posting it here (it was his post)? Or is it considered public domain? At any rate, I couldn't find any better place to put it. Also, did someone want to place the UT stuff on a seperate page or is all of this still relevent to UT2003?
Wormbo: I started a new table for UT2k3 INT stuff from what I found out from looking at the INT files and the code handling them.
DJPaul: JoeDark - it was my post, it is considered public domain (that sort of info), and you're more than welcome to quote anything usefull I say here.
SuperApe: What are all the known extentions for the files containing localized strings in other languages? (.DET is German, What are the others?)
Jan:
- .DET - German
- .EST - Spanish
- .FRT - French
- .INT - English
- .ITT - Italian
- .KOT - Korean
But I don't know .SMT & .TMT
Switch:` Guessing:
- .SMT - Simplified Mandarin
- .TMT - Traditional Mandarin
SuperApe: That's great. Yeah, .KOT must be Korean. There's several stock font textures of Korean characters. I'm finding people to translate my .INT file so I can release it to foriegn language sites announcing or hosting my mutator.
Xian: Did any of you find any SMT or TMT file definitions or are you just guessing ?
SuperApe: Switch was guessing, but doing a little searching, it appears that the guess is likely correct. EDIT: To confirm, it has been suggested that UT2003 patch files may include .SMT and .TMT files, so one with a knowledge of Simplified/Traditional Mandarin could take a look at those files and give a definitive answer.