There are two files in the baseq3 directory that contain more information for the Team Arena scripting system. These are teaminfo.txt and gameinfo.txt. As their names suggest, one deals with team information, while the other deals with game information.
teaminfo.txt
This file provides the scripting system with information about the teams and bots that can be used in a team based game, such as Team DM or CTF. There are three sections in this file and we'll look at each individually.
teams
The teams section looks like the following :
teams
{
{ team info }
{ team info }
....
}
where team info is information about each team you wish to define. The format for this information is :
English name of the team
Asset name
Names of five team members
All of these names are enclosed in quotes ("") and are placed on a single line. An example from Team Arena is :
{ "Crusaders" "ui/assets/crusaders" "Janet" "James" "Bradamante" "Furioso" "Aria" }
Here the English name of the team is Crusaders. This name is used in the list accessed by the ownerdraw UI_CLANNAME, ownerdraw UI_BLUETEAMNAME and ownerdraw UI_REDTEAMNAME commands.
The Asset name is ui/assets/crusaders and is actually a directory path ( ui/assets) and base name (crusaders). Using this information the system loads three graphics that are associated with the Crusaders team. These graphics are :
ui/assets/crusaders.tga
ui/assets/crusaders_metal.tga
ui/assets/crusaders_name.tga
These assets can be displayed in a menu using various ownerdraw commands and are meant for visual purposes only.
The last part is the names of the five team members, which are Janet, James, Bradamante, Furioso and Aria. These names can be names of characters defined in the character section, aliases of bots defined in the alias section or human player names.
The teams information is only used if you start a game using the uiScript skirmishStart command. This starts the Team Arena single player skirmish game, which uses bots on the teams. The teams are not used when you start a regular Quake 3 multiplayer game.
characters
The characters section looks like the following :
characters
{
{ character info }
{ character info }
....
}
where character info is information about each character used as a team member. The format for this information is :
Name of model head
Model base
All of these are enclosed in quotes ("") and are placed on a single line. An example from Team Arena is :
{ "James" "male" }
The head name of the model used is James and the head model must be located in the directory models/players/heads/james. This head information is used by the feeder FEEDER_HEADS command when supplying data to a List Box about Team Arena player models. A Team Arena player model can only be chosen from the models defined in the characters section.
The model base is the base model used for this bot. If the model base is "male" then the James model is used. If it is "female" then the Janet model is used. If it is any other name then that model is used. Since this model base is "male" it uses the model located in the directory models/players/james. If this character is to be used in a team then the skin for that team must be placed in a subdirectory named the same as the team. For example, if James is a member of the Crusaders team then the skin used for the model must placed in the models/players/james/crusaders directory.
If you wish to add bots to a Quake 3 team game, such as Team DM or CTF, then you must define the bots in the characters section or they will not be avalible to you. When doing this you can ignore the fact that the head model will not be defined for that bot (Quake 3 models do not use head models in a seperate directory from the rest of the model). Only the model base is actually used. For example, to allow the use of Anarki, Lucy and Razor as bots in a Quake 3 team game you'd define the characters section as :
characters
{
{ "Anarki" "Anarki" }
{ "Lucy" "Lucy" }
{ "Razor" "Razor" }
}
When using the ownerdraw UI_BLUETEAM1 to ownerdraw UI_BLUETEAM5 or ownerdraw UI_REDTEAM1 to ownerdraw UI_REDTEAM5 commands with a team game, the bot names displayed will be from the characters sections.
alias
The alias section looks like :
alias
{
{ alias info }
{ alias info }
....
}
where alias info is information about aliases used by bots. An alias is just another name given to one of the bots defined in the characters section. The format for the alias info is :
Alias name
AI name
Preferred action
All of these are enclosed in quotes ("") and are placed on a single line. An example from Team Arena is :
{ "Bradamante" "Janet" "d" }
The alias name of the bot is Bradamante and this name can be used as a team member in the teams section. The AI name is Janet so this bot will use the AI from the Janet character. The preferred action can be "a" for all purpose, "d" for defensive and "o" for offensive. This particular bot is defensive.
Information about teams and bots can also be obtained from files in the baseq3 directory that have a .team extension. This is useful if you have an addon package that contains a team and bots. These files are processed exactly the same as teaminfo.txt and are laid out in the same format. The information from these .team files is added to the information taken from the teaminfo.txt file. An example of this is the Team Titan Team Arena model package, avalible at Polycount. This is a complete addon team for Team Arena and the information about the new team and the bots is provided in the titan.team file. This information is added to whatever is already provided by the teaminfo.txt file, so you don't lose the existing teams you already have defined.
gameinfo.txt
This file provides the scripting system with information about the game types avalible. There are three section in this file and we'll look at each individually. The first two sections deal with game types and are closely linked.
gametypes
The gametypes section looks like :
gametypes
{
{ game info }
{ game info }
....
}
where game info is information about a particular type of game. The format for game info is :
Game type name
Numeric identifier
The Game type name is enclosed in quotes ("") while the Numeric identifier is not. An example from Team Arena is :
{ "Team Deathmatch" 3 }
where the Game type name is Team Deathmatch and the Numeric idenifier is 3. The Game type name is what is displayed when you use the ownerdraw UI_GAMETYPE command or the ownerdraw UI_NETGAMETYPE command . The Numeric identifier is used by the game module (ie. the game server) to tell which game type you wish to play. The cvar g_gametype holds the Numeric identifier value when you start a game, either by the uiScript skirmishStart command or the uiScript StartServer command.
Although you can define up to 16 game types in this section, the game module only recognises 8 different game types by default. These eight are :
| Numeric Identifier |
Game Type Name |
0 |
FFA |
1 |
Tournament |
2 |
Single Player |
3 |
Team DM |
4 |
CTF |
5 |
1FCTF |
6 |
Overload |
7 |
Harvester |
If you wish to include more game types then the game module must be modified so it recognises these new types.
joingametypes
The joingametypes section looks like :
joingametypes
{
{ joingame info }
{ joingame info }
....
}
where joingame info is information about a particular type of game. The format for joingame info is :
Game type name
Numeric identifier
The Game type name is enclosed in quotes ("") while the Numeric identifier is not. An example from Team Arena is :
{ "Team Deathmatch" 3 }
where the Game type name is Team Deathmatch and the Numeric idenifier is 3. So far, this looks identical to the gametypes section we looked at above. The use it is put to though, is different.
The Game type name is what is displayed when you use the ownerdraw UI_JOINGAMETYPE command. The Numeric identifier is used when building the server list to display only the game type selected by the ownerdraw UI_JOINGAMETYPE command.
When you get information from a server it includes the gametypes Numeric identifier to tell what game is being run. The Numeric identifier from the ownerdraw UI_JOINGAMETYPE command is compared to the server's Numeric identifier and, only if they are the same, is the server added to the server list being displayed. The only exception to this is if the joingametypes Numeric identifier is -1. Then all servers are added to the list, regardless of their game type. For this reason, you'll see the following joingame info in the joingametypes definition :
{ "All" -1 }
This allows you to select All in the ownerdraw UI_JOINGAMETYPE command and see all the servers avalible.
As with the gametypes definition, you can define up to 16 different game types you can join in this section.
To summarize : the gametypes definition is used to assign a numeric value to the name of a game type you wish to start, either as a single player skirmish game or as a server game. The joingametypes definition is used to filter the server list for specific game types you wish to join. You probably shouldn't change the name or identifier for the default game types in either section, since these are used by all other Quake 3 mods. If you want to have a different game type for your mod then add a new entry to both gametypes and joingametypes with a Numeric identifier greater than 7.
maps
The maps section looks like :
maps
{
{ map info }
{ map info }
....
}
where map info is information about a particular map. The format for map info is :
English map name
Map file name
Team members
Tournament Opponent name
Numeric identifier
Time to beat
Numeric identifier
Time to beat
....
Everything except the Numeric identifiers are enclosed in quotes (""). Each Numeric identifier/Time to beat pair are for a game type that that map supports. The Numeric identifier is one of those defined in the gametypes section. A Team Arena example is :
{ "Inner Sanctums" "mpteam3" "3" "Sarge" 4 "240" 5 "210" 6 "210" 7 "210" }
The English name of this map is Inner Sanctums and this is the name shown in the maps list when using the feeder FEEDER_MAPS or the ownerdraw UI_MAPS_SELECTION commands. The file name of the map is mpteam3 and there must be a mpteam3.map file in the baseq3/maps folder. The levelshot graphic for this map would be in the levelshots folder and be called mpteam3_small.tga. The map levelshot is used by the feeder FEEDER_MAPS when it is displaying graphics rather than text. It is also used by the map cinematic commands as well. The number of members on each team would be 3 and your opponents name for Tournament games is Sarge.
This map supports CTF (game type 4) with a time to beat of 240, 1FCTF (game type 5) with a time to beat of 210, Overload (game type 6) with a time to beat of 210 and Harvester (game type 7) with a time to beat of 210.
The maps information is used only if you don't load arenas information with the uiScript loadArenas command. This command overwrites any information loaded from the maps section. The maps section is primarily meant to be used in single player skirmish games started with the uiScript skirmishStart command.