This is an overview of the server configuration settings for UT2003
- URL
- FirstRun
- General Server Settings
- Network Settings
- Query Related Settings
- GameTypes
- MapLists
The INI File
[URL] |
Protocol=unreal |
|
ProtocolDescription=Unreal Protocol |
|
Name=Player |
|
Map=Index.ut2 |
|
LocalMap=NvidiaLogo.ut2 |
|
NetBrowseMap=Entry.ut2 |
|
Host= |
|
Portal= |
|
MapExt=ut2 |
|
EXEName=UT2003.exe |
|
SaveExt=usa |
|
Port=7777 |
This is port the server will listen
for connections on |
Class=Engine.Pawn |
|
Character=Gorge |
|
[Engine.Engine] |
|
RenderDevice=D3DDrv.D3DRenderDevice |
|
;RenderDevice=Engine.NullRenderDevice |
|
;RenderDevice=OpenGLDrv.OpenGLRenderDevice |
|
AudioDevice=ALAudio.ALAudioSubsystem |
|
NetworkDevice=IpDrv.TcpNetDriver |
|
DemoRecordingDevice=Engine.DemoRecDriver |
|
Console=XInterface.extendedconsole |
|
GUIController=XInterface.GUIController |
|
Language=int |
|
Product=UT2003 |
|
GameEngine=Engine.GameEngine |
|
EditorEngine=Editor.EditorEngine |
|
DefaultGame=XGame.XDeathmatch |
|
DefaultServerGame=XGame.XDeathmatch |
|
ViewportManager=WinDrv.WindowsClient |
|
;ViewportManager=SDLDrv.SDLClient |
|
Render=Render.Render |
|
Input=Engine.Input |
|
Canvas=Engine.Canvas |
|
[Core.System] |
|
PurgeCacheDays=30 |
|
SavePath=../Save |
|
CachePath=../Cache |
|
CacheExt=.uxx |
|
Suppress=DevLoad |
|
Suppress=DevSave |
|
Suppress=DevNetTraffic |
|
Suppress=DevGarbage |
|
Suppress=DevKill |
|
Suppress=DevReplace |
|
Suppress=DevCompile |
|
Suppress=DevBind |
|
Suppress=DevBsp |
|
Suppress=DevNet |
|
Paths=../System/*.u
Paths=../Maps/*.ut2
Paths=../Textures/*.utx
Paths=../Sounds/*.uax
Paths=../Music/*.umx
Paths=../StaticMeshes/*.usx
Paths=../Animations/*.ukx
Paths=../Saves/*.uvx |
These lines tell the server which directories different
files are located in. By adding directories using the same syntax, you can
have multiple map, texture, sound, etc. directories. |
[Engine.GameEngine] |
|
CacheSizeMegs=32 |
|
UseSound=True |
|
MainMenuClass=XInterface.UT2MainMenu |
|
UseStaticMeshBatching=True |
|
ServerActors=IpDrv.MasterServerUplink
ServerActors=UWeb.WebServer
|
ServerActors will be spawned at the beginning of
each game. |
ServerPackages=Core
ServerPackages=Engine
ServerPackages=Fire
ServerPackages=Editor
ServerPackages=IpDrv
ServerPackages=UWeb
ServerPackages=GamePlay
ServerPackages=UnrealGame
ServerPackages=XEffects
ServerPackages=XPickups
ServerPackages=XGame
ServerPackages=XWeapons
ServerPackages=XInterface
ServerPackages=Vehicles
ServerPackages=TeamSymbols_UT2003 |
ServerPackages are packages which any
clients that connect are required to have on their system. If the client
does not have one of these packages, the client will attempt to download
it from the server. If a download is unsuccessful, the client will be unable
to connect to the server. |
[IpDrv.TcpNetDriver] |
AllowDownloads=True |
True allows clients to download files
directly from server if redirect is not available. |
ConnectionTimeout=180.000000 |
Number of seconds server will wait
for response from client attempting to connect before closing the connection |
InitialConnectTimeout=200.000000 |
Number of seconds server wait for
response from clients during the game before closing their connection |
AckTimeout=1.0 |
|
KeepAliveTime=0.200000 |
|
MaxClientRate= |
Maximum rate the server will transmit
data to clients if server is in LAN mode (applies to downloads as well) |
SimLatency=0 |
|
RelevantTimeout=5.000000 |
|
SpawnPrioritySeconds=1.000000 |
Number of seconds before a player
is respawned after being fragged |
ServerTravelPause=4.000000 |
Number of seconds to wait between
sending the "mapchange" notification to clients, and actually
changing the map |
NetServerMaxTickRate=20
LanServerMaxTickRate=35 |
Thoroughly explained in this
tutorial |
AllowPlayerPortUnreach=False |
False causes server to cease sending
packets to clients upon receiving an ICMP "Port Unreachable"
message from that client (normally means the client has disconnected
from the server). |
LogPortUnreach=False |
|
MaxInternetClientRate= |
Maximum rate the server will transmit
data to clients (applies to downloads as well) |
MaxDownloadSize=0 |
Limit (in bytes) of the file size
that the server will be allowed to send to clients (only if AllowDownloads=True) |
DownloadManagers=IpDrv.HTTPDownload
DownloadManagers=Engine.ChannelDownload |
Redirection
Tutorial |
DisableKSecFix=True |
Set to false to disable the security fixes added
in 2199 (if your server is experiencing lag you feel is related to these
security fixes) |
[IpDrv.HTTPDownload] |
RedirectToURL= |
URL of redirect server |
ProxyServerHost=
ProxyServerPort=3128
|
If your redirect server is behind a
proxy, you'll need to put the proxy's public IP address here |
UseCompression=True |
If "True", clients attempting
to download files from the redirect server will add ".uz2" extension
to the requested package, as well as perform decompression upon downloading. |
[IpDrv.MasterServerLink] |
|
LANPort=11777 |
|
LANServerPort=10777 |
|
CurrentMasterServer=0 |
|
MasterServerPort[0]=28902 |
|
MasterServerAddress[0]=ut2003master1.epicgames.com |
|
MasterServerPort[1]=28902 |
|
MasterServerAddress[1]=ut2003master2.epicgames.com |
|
MasterServerPort[2]=0 |
|
MasterServerAddress[2]= |
|
MasterServerPort[3]=0 |
|
MasterServerAddress[3]= |
|
MasterServerPort[4]=0 |
|
MasterServerAddress[4]= |
|
[IpDrv.MasterServerUplink] |
|
DoUplink=True |
|
UplinkToGamespy=True |
|
SendStats=True |
|
ServerBehindNAT=False |
|
DoLANBroadcast=False |
|
[IpDrv.UdpGamespyUplink] |
|
UpdateMinutes=1 |
|
MasterServerPort=27900 |
|
ServerRegion=0 |
|
[IpDrv.UdpBeacon] |
DoBeacon=True |
Enables your server to send responses
to query requests (such as when a player clicks once on your server's name
in the server browser) |
BeaconTime=0.50 |
Perhaps the minimum time between beacon
responses |
BeaconTimeout=5.0 |
Number of seconds to wait for a server
to respond to a query request (clients only) |
BeaconProduct=ut2 |
GameName to filter queries |
ServerBeaconPort= |
Listen port |
BeaconPort= |
Response port |
[IpServer.UdpServerQuery] |
GameName=ut2 |
Do not modify - query protocols use
this to filter servers by game (UT, UT2, DE, Q) |
[IpDrv.UdpGamespyQuery] |
|
MinNetVer=0 |
|
OldQueryPortNumber=7787 |
|
bRestartServerOnPortSwap=True |
Set to False if you are using 2186
or above |
[Engine.GameReplicationInfo] |
ServerName= |
This is what will appear in the server
browser as the name of your server |
ShortName= |
Currently not used for anything |
ServerRegion=0 |
Used to indicate which area of the
world the server was located in for the GameSpy Query protocol, but seems
to be unused now |
AdminName= |
Specifies the value that will appear
in the Server Browser and the MOTD as the name of the admin of this server |
AdminEmail= |
Email address that will appear in the
server browser and MOTD as the admin's email address |
MOTDLine1=
MOTDLine2=
MOTDLine3=
MOTDLine4= |
The Message Of The Day appears for
a few seconds when clients connect to your server |
[Engine.BroadcastHandler] |
|
bMuteSpectators=False |
Enabling this prevents specs from
chatting during the game |
bPartitionSpectators=true |
Enable to prevent spectator's messages from being
seen by players |
[UWeb.WebServer] |
Applications[0]=xWebAdmin.UTServerAdmin
ApplicationPaths[0]=/ServerAdmin
Applications[1]=xWebAdmin.UTImageServer
ApplicationPaths[1]=/images |
The value of each Applications line
is the name of the class responsible for handling connections to the path
specified in the corresponding ApplicationPaths entry (Connections to //server.ip/ServerAdmin
are handled by Applications[0], since that is the value for ApplicationPaths[0]) |
DefaultApplication=0 |
Specifies the application that will
handle connections which provide no subpath (http://server.ip/ ) |
bEnabled=True |
Enables the UT webserver |
ListenPort=80 |
This is the port that the webserver will listen
for connections on |
[Engine.AccessControl] |
KickToMenu=Xinterface.UT2NetworkStatusMsg |
Classname of the menu clients see when
they are kicked by an admin |
GamePassword= |
If a value is specified, clients must
provide a password to connect to the game. (Server will also accept any
valid admin password) |
bBanByID=True |
Bans will be enforced using a hash
of the client's CD key and the server's CD key. Enable this to prevent banned
players with dynamic IP addresses from bypassing the ban |
IPPolicies= |
|
BannedIDs= |
|
PrivClasses=Class'XAdmin.xKickPrivs'
PrivClasses=Class'XAdmin.xGamePrivs'
PrivClasses=Class'XAdmin.xUserGroupPrivs'
PrivClasses=Class'XAdmin.xExtraPrivs'
|
PrivClasses are loaded by the server when using
the advanced administration system. They contain information about which
privileges are available for admins & groups. |
[UnrealGame.CustomBotConfig] |
|
ConfigArray=( See below for parameters )
CharacterName="Gorge"
PlayerName="The_Reaper"
FavoriteWeapon="xWeapons.RocketLauncher"
Aggressiveness=0.400000
Accuracy=0.000000
CombatStyle=0.400000
StrafingAbility=0.765789
Tactics=0.000000
ReactionTime=0.000000
bJumpy=True
|
These parameters are very similar to the paramaters for the bot configuration
sections in the original UT's user.ini file.
Each "Config Array" entry must be one complete line, with
each parameter seperated by commas.
For each custom bot, you must have one ConfigArray entry in your server's
ini under this section. Here is an example entry. |
|
|
NOTE: All sections that begin with "xInterface" are used only
if the server was started from within the game. Servers started from command
line using 'ucc server' or 'ut2003 -server' ignore these values (except for
the XInterface.MapListxxxx sections).
[Engine.GameInfo] |
GoreLevel=0 |
Set to 1 to decrease the amount of
gore clients will see while playing on your server |
MaxSpectators=2 |
Maximum number of spectator connections
allowed |
MaxPlayers=32 |
Maximum number of players allowed in
the game |
AutoAim=1.000000 |
Amount of assistance in aiming (single-player
only) |
GameSpeed=1.000000 |
Percentage of "normal speed"
that game will be played. 1.0 represents 100% |
bWeaponStay=false |
Controls whether weapons that were part of the
map will "disappear" when picked up by a player |
bChangeLevels=True |
Server will use maplist to switch maps
at the end of the match |
bStartUpLocked=False
bNoBots=False
bAttractAlwaysFirstPerson=False
NumMusicFiles=13
|
I cannot find these variables anywhere
in the script, so they must be native. I will update this entry as I find
out more information. |
bEnableStatLogging=True |
Enables stat collection and processing
on your server |
HUDType=Engine.Hud |
Name of the HUD class for this gametype |
MaxLives=0 |
Maximum number of lives players are
given |
TimeLimit=0 |
Time limit for this game |
GoalScore=0 |
Game will end when this score is achieved |
bAllowWeaponThrowing=True |
Controls whether players are allowed to drop weapons |
bAllowBehindView=False |
Controls whether players are allowed to use behindview
during the match |
GameStatsClass=IpDrv.MasterServerGameStats |
Class name of server stats manager |
SecurityClass=UnrealGame.UnrealSecurity |
Class name of server security manager |
bAdminCanPause=True |
True allows admins to pause network
games (Set to false to prevent game from being paused by bringing up the
menu as a logged in admin) |
GameDifficulty=1.000000 |
Difficulty of single player game |
AccessControlClass=Engine.AccessControl |
Name of class which will handle all
admin authentication |
[UnrealGame.UnrealMPGameInfo] |
|
bPreloadAllSkins=false |
Forces clients to preload all .upl
files and skins |
MinPlayers=0 |
Bots join the game until this number
of players is reached |
bTeamScoreRounds=False |
Not currently used in the anywhere |
EndTimeDelay=4.000000 |
Maximum amount of time after the game
has been won before all gameplay stops (sort of) |
[UnrealGame.DeathMatch] |
|
NetWait=2 |
Time to wait for players in net games |
MinNetPlayers=1 |
How many players must join before the
game will start |
RestartWait=30 |
Amount of time to wait at the 'end
of game' screen before the server begins the mapswitch |
bPlayersMustBeReady=False |
Players must "click in" for match to
begin |
bAllowTaunts=True |
Taunt animations are allowed during the game |
bForceRespawn=False |
Enabled automatically respawns players when they
are fragged. Otherwise, players do not respawn until they press Fire. |
bAdjustSkill=False |
Controls whether bots will adjust their skill to
match the player |
MinigunLockDownFactor=1.000000 |
Amount of "lockdown" players feel when
being shot by the minigun. 1.0 represents 100% |
LinkLockDownFactor=1.000000 |
Amount of "lockdown" players feel when
being shot by the Link Gun. 1.0 represents 100% |
bNoCoronas=False |
Controls whether shoulder lights are
shown in the game. |
bForceDefaultCharacter=False |
True forces all players models to the
default character model (Gorge) |
bTournament=False |
If enabled, game will not start until
number of connected players if equal to the maximum number of players |
SpawnProtectionTime=2.000000 |
Number of seconds players are invulnerable after
respawning |
DefaultMaxLives=15 |
Only used for gametypes which have a max lives
limit (such as LMS) |
LateEntryLives=1 |
How many lives can be lost by any player before
new players are no longer allowed to join (LMS) |
bAllowTrans=True |
Allow translocator in the game |
NamePrefixes[0]=Mr_
NamePrefixes[1]=
NamePrefixes[2]=The_Real_
NamePrefixes[3]=Evil_
NamePrefixes[4]=
NamePrefixes[5]=Owns_
NamePrefixes[6]=
NamePrefixes[7]=Evil_
NamePrefixes[8]=
NamePrefixes[9]=
NameSuffixes[0]=
NameSuffixes[1]=_is_lame
NameSuffixes[2]=
NameSuffixes[3]=
NameSuffixes[4]=_sucks
NameSuffixes[5]=
NameSuffixes[6]=_OwnsYou
NameSuffixes[7]=
NameSuffixes[8]=_jr
NameSuffixes[9]='s_clone |
These values are used to prevent bots
from having the same name. |
[UnrealGame.TeamGame] |
|
HUDType=XInterface.HudBTeamGame
MaxLives=0
TimeLimit=0
GoalScore=25
bWeaponStay=True
bAllowWeaponThrowing=True
bAllowBehindView=True
|
Values here override corresponding value in GameInfo |
bPlayersMustBeReady=False
bAllowTaunts=True
bForceRespawn=False
bAdjustSkill=False
|
Values here override corresponding value in UnrealGame.DeathMatch |
bTeamScoreRounds=False |
Value here overrides corresponding value in UnrealMPGameInfo |
bBalanceTeams=True |
Bots will be placed on the team with the least
number of players upon joining the game. |
bPlayersBalanceTeams=True |
Players joining the game will be placed on teams
according to team size, ignoring the players configured team. |
FriendlyFireScale=0 |
Amount of damage inflicted when shot
by teammates (1.0 represents 100%) |
MaxTeamSize=16 |
|
[XGame.xDeathMatch] |
HUDType=XInterface.HudBDeathMatch
MaxLives=0
TimeLimit=0
GoalScore=25
bWeaponStay=True
bAllowWeaponThrowing=True
bAllowBehindView=True
|
Values here override corresponding
value in Engine.GameInfo |
bPlayersMustBeReady=False
bAllowTaunts=True
bForceRespawn=False
bAdjustSkill=False
bAllowTrans=True
SpawnProtectionTime=2.0000000
DefaultMaxLives=3
LateEntryLives=1
|
Values here override corresponding
value in UnrealGame.DeathMatch |
bTeamScoreRounds=False |
Value here overrides corresponding value in UnrealMPGameInfo |
[XGame.xTeamGame] |
|
HUDType=XInterface.HudBTeamGame
MaxLives=0
TimeLimit=0
GoalScore=25
bWeaponStay=True
bAllowWeaponThrowing=True
bAllowBehindView=True
|
Values here override corresponding value in GameInfo |
bPlayersMustBeReady=False
bAllowTaunts=True
bForceRespawn=False
bAdjustSkill=False
bAllowTrans=True
SpawnProtectionTime=2.0000000
DefaultMaxLives=3
LateEntryLives=1
|
Values here override corresponding value in UnrealGame.DeathMatch |
bTeamScoreRounds=False |
Value here overrides corresponding value in UnrealMPGameInfo |
FriendlyFireScale=0
MaxTeamSize=16
|
Values here override corresponding
value in UnrealGame.TeamGame |
[XGame.xCTFGame] |
|
HUDType=XInterface.HudBCaptureTheFlag
MaxLives=0
TimeLimit=0
GoalScore=25
bWeaponStay=True
bAllowWeaponThrowing=True
bAllowBehindView=True
|
Values here override corresponding value in GameInfo |
bPlayersMustBeReady=False
bAllowTaunts=True
bForceRespawn=False
bAdjustSkill=False
bAllowTrans=True
SpawnProtectionTime=2.0000000
DefaultMaxLives=3
LateEntryLives=1
|
Values here override corresponding value in UnrealGame.DeathMatch |
bTeamScoreRounds=False |
Value here overrides corresponding value in UnrealMPGameInfo |
FriendlyFireScale=0
MaxTeamSize=16
|
Values here override corresponding value in UnrealGame.TeamGame |
[XGame.xDoubleDom] |
|
HUDType=XInterface.HudBDoubleDomination
MaxLives=0
TimeLimit=0
GoalScore=25
bWeaponStay=True
bAllowWeaponThrowing=True
bAllowBehindView=True
|
Values here override corresponding value in GameInfo |
bPlayersMustBeReady=False
bAllowTaunts=True
bForceRespawn=False
bAdjustSkill=False
bAllowTrans=True
SpawnProtectionTime=2.0000000
DefaultMaxLives=3
LateEntryLives=1
|
Values here override corresponding value in UnrealGame.DeathMatch |
bTeamScoreRounds=False |
Value here overrides corresponding value in UnrealMPGameInfo |
FriendlyFireScale=0
MaxTeamSize=16
|
Values here override corresponding value in UnrealGame.TeamGame |
TimeToScore=10 |
Number of seconds that both points must be held
by one team before a point is awarded |
TimeDisabled=10 |
Number of seconds after a point is awarded that
control points cannot be captured |
[XGame.xBombingRun] |
|
HUDType=XInterface.HudBBombingRun
MaxLives=0
TimeLimit=0
GoalScore=25
bWeaponStay=True
bAllowWeaponThrowing=True
bAllowBehindView=True
|
Values here override corresponding value in GameInfo |
bPlayersMustBeReady=False
bAllowTaunts=True
bForceRespawn=False
bAdjustSkill=False
bAllowTrans=True
SpawnProtectionTime=2.0000000
DefaultMaxLives=3
LateEntryLives=1
|
Values here override corresponding value in UnrealGame.DeathMatch |
bTeamScoreRounds=False |
Value here overrides corresponding value in UnrealMPGameInfo |
FriendlyFireScale=0
MaxTeamSize=16
|
Values here override corresponding value in UnrealGame.TeamGame |
[BonusPack.LastManStanding] |
|
HUDType=XInterface.HudBLastManStanding
MaxLives=0
TimeLimit=0
GoalScore=25
bWeaponStay=True
bAllowWeaponThrowing=True
bAllowBehindView=True
|
Values here override corresponding value in GameInfo |
bPlayersMustBeReady=False
bAllowTaunts=True
bForceRespawn=False
bAdjustSkill=False
bAllowTrans=True
SpawnProtectionTime=2.0000000
DefaultMaxLives=3
LateEntryLives=1
|
Values here override corresponding value in UnrealGame.DeathMatch |
bTeamScoreRounds=False |
Value here overrides corresponding value in UnrealMPGameInfo |
[BonusPack.Mutant] |
|
HUDType=XInterface.HudBMutant
MaxLives=0
TimeLimit=0
GoalScore=25
bWeaponStay=True
bAllowWeaponThrowing=True
bAllowBehindView=True
|
Values here override corresponding value in GameInfo |
bPlayersMustBeReady=False
bAllowTaunts=True
bForceRespawn=False
bAdjustSkill=False
bAllowTrans=True
SpawnProtectionTime=2.0000000
DefaultMaxLives=3
LateEntryLives=1
|
Values here override corresponding value in UnrealGame.DeathMatch |
bTeamScoreRounds=False |
Value here overrides corresponding value in UnrealMPGameInfo |
[SkaarjPack.Invasion] |
|
HUDType=XInterface.HudBInvasion
MaxLives=0
TimeLimit=0
GoalScore=25
bWeaponStay=True
bAllowWeaponThrowing=True
bAllowBehindView=True
|
Values here override corresponding value in GameInfo |
bPlayersMustBeReady=False
bAllowTaunts=True
bForceRespawn=False
bAdjustSkill=False
bAllowTrans=True
SpawnProtectionTime=2.0000000
DefaultMaxLives=3
LateEntryLives=1
|
Values here override corresponding value in UnrealGame.DeathMatch |
bTeamScoreRounds=False |
Value here overrides corresponding value in UnrealMPGameInfo |
FriendlyFireScale=0
MaxTeamSize=16
|
Values here override corresponding value in UnrealGame.TeamGame |
InitialWave=0 |
Index of wave game should start on
when new map is loaded |
FallbackMonster=Class'SkaarjPack.EliteKrall' |
This is the monster class the game
will spawn if it cannot spawn one of the more advanced monsters (how this
would occur, I don't really know) |
Waves[0] - Waves[15]
WaveMask=20491
WaveMaxMonsters=16
WaveDuration=90
WaveDifficulty=0.000000
|
See this section
for a more detailed explanation of these settings |
[UnrealGame.DMMutator] |
|
bMegaSpeed=False |
All pawns move 1.5 times faster than
other objects in the game |
AirControl=0.350000 |
Amount of control players have while
in the air (1.0 represents 100%) |
bBrightSkins=True |
Enables brightskins |
[XInterface.MapListDeathMatch] |
|
MapNum=0 |
Index of last played map for this maplist |
Maps=DM-Antalus |
These sections determine the map rotation
for your server |
[XInterface.MapListTeamDeathMatch] |
|
MapNum=0 |
Index of last played map for this maplist |
Maps=DM-Antalus |
These sections determine the map rotation
for your server |
[XInterface.MapListCaptureTheFlag] |
|
MapNum=0 |
Index of last played map for this maplist |
Maps=CTF-Chrome |
These sections determine the map rotation
for your server |
[XInterface.MapListDoubleDomination] |
|
MapNum=0 |
Index of last played map for this maplist |
Maps=DOM-SunTemple |
These sections determine the map rotation
for your server |
[XInterface.MapListBombingRun] |
|
MapNum=0 |
Index of last played map for this maplist |
Maps=BR-Anubis |
These sections determine the map rotation
for your server |
[BonusPack.MapListMutant] |
|
MapNum=0 |
Index of last played map for this maplist |
Maps=DM-Antalus |
These sections determine the map rotation
for your server |
[SkaarjPack.MapListInvasion] |
|
MapNum=0 |
Index of last played map for this maplist |
Maps=DM-Antalus |
These sections determine the map rotation
for your server |
[BonusPack.MapListLastManStanding] |
|
MapNum=0 |
Index of last played map for this maplist |
Maps=DM-Antalus |
These sections determine the map rotation
for your server |
[XWeapons.ZoomSuperShockBeamFire] |
|
bAllowMultiHit=False |
Controls whether shots can pass through multiple
players |
Invasion Wave Settings
There are 16 waves possible in the Invasion gametype. Each waves' settings
are determined by the Waves[x] parameter in the SkaarjPack.Invasion section
of the ini. The following is a more detailed explanation of those settings:
- WaveMask
- This parameter is used for random number generation, and really shouldn't
be modified.
- WaveMaxMonsters
- The maximum number of monsters spawned during a wave is determined as follows.
Let's assume that WaveMaxMonsters is set at 16. If more than 4 players are
connected, then the value of WaveMaxMonsters is multiplied by 2, or the
number of players divided by 4, whichever is lower. This means that if 4
players were connected, for instance, then the actual max number of mosters
for this wave would be (16 * (4 / 4)) or 16 * 1, which is 16. If 12 player
are connected, the the max number of monsters in this wave would be (16
* 2), since 2 is less than (16 / 4). The actual maximum number of monsters
that could be spawned during this wave would then be 32. You can use this
formula to tweak exactly monsters you'd like players to be up against based
on how many connections you allow on your server
- WaveDuration
- Number of seconds the wave will last. If the maximum number of monsters
for this wave have not been exterminated by the time this duration expires,
all of the remaining monsters will be spawned immediately. Once this happens,
any monsters that cannot be seen by any player are killed off, leaving players
to finish up what's left.
- WaveDifficulty
- Determines the difficulty (effectively which monsters are spawned) during
this wave. Very similar to the bots' difficulty setting.
Custom Bot Configuration
Each additional custom bot parameter must follow a fairly rigid syntax, which
is given in the following line. For each custom bot that you'd like to customize,
you'll need to have a seperate ConfigArray line in the server's
ini file under the UnrealGame.CustomBotConfig section. I assume
these settings will eventually make it into the webadmin.
[UnrealGame.CustomBotConfig]
ConfigArray=(CharacterName="Gorge",PlayerName="The_Reaper",FavoriteWeapon="xWeapons.RocketLauncher",
Aggresiveness=0.400000,Accuracy=0.000000,CombatStyle=0.400000,StrafingAbility=0.765789,Tactics=0.000000,
ReactionTime=0.000000,bJumpy=True)
An explanation of the inner values is as follows:
[UnrealGame.CustomBotConfig] |
CharacterName="Gorge" |
Name of character. Must match a character
name in the .upl file. |
PlayerName="The_Reaper" |
Enter whatever you like here. This will be the
bot's name. |
FavoriteWeapon="xWeapons.RocketLauncher" |
Class name of the bot's preferred weapon. I will
create a list of valid classnames for this parameter as time allows. |
|