Welcome to the
Futhermore a few interesting and useful editing tips to get the most out of your
file. How remote admin works, setting up Death Match Level Loops, and many other
admin related things...
Page start: Thursday, August 6th 17:57 1998
Info on how to run your own Dedicated Unreal Server: Useful Launch parameters are explained in detail.
Last updated on Wednesday, September 16th 20:17 1998
Futhermore a few interesting and useful editing tips to get the most out of your \Unreal\System\Unreal.ini file. How remote admin works, setting up Death Match Level Loops, and many other admin related things...
Page start: Thursday, August 6th 17:57 1998
Dedicated Unreal Server
If you want to read up on the possible command line parameters of Unreal please read the appropriate section on the Console Page. Below I will consicely describe the more important commands.
Here is an "rather complete" command line example of how to launch a dedicated server (note everything has to be typed in *one* line!):
<path to Unreal\>Unreal.exe <StartMap\>.unr PORT=<PortN°> LOG=<LogName> READINI=<Inifile>.ini -serverExample:
c:\Unreal\Unreal.exe DmFith.unr PORT=7777 LOG=dm.log READINI=Server.ini -serverStep by step I will explain each parameter:
Make sure to tell the above command line <path to Unreal\> (or batch file, or alias), where you have installed your copy of Unreal and where the Unreal.exe resides.
When starting a server you can specify a map on startup <StartMap\>.unr. This should come in handy when you want to run a level loop, this way you can "jump" into the loop. More on these level loops later on...
In most cases you will want to run a Death Match level loop... Check out your Unreal\Maps\ directory to find out about the map names: DM List (DmAriza, DmCurse, DmDeathFan, DmDeck16, DmElSinore, DmFith, DmHealPod, DmMorbias, DmRadikus, DmTundra)... note there is also a map for socalled "Dark Matches" (DkNightOp).
You can run more than one instance of Unreal.exe on your server. For example one instance mightrun a Death Match loop another a "Dark Match" game. Since both instances are running on the same machine, both will have the same IP (Internet address e.g. 188.8.131.52)! To be able to discern both instances you will have to provide *different* PORT=<PortN°> numbers. The default port number is 7777. In the above example you might pick the port numbers 7777 and 7778.
You can divert all the console output the dedicated server provides into a file. With LOG=<LogName> you can specify the name of this log file. When running several instances of Unreal.exe you can then also output the info to different log files. Note these logs might really be interesting to provide the data for Statistics Programs. I might adapt my own Quake II parser AEqs to do this. We'll see 8-).
Unreal uses the socalled Unreal\System\Unreal.ini file to "save" and "remember" all its settings. For us admins it's important to put together a .ini file that will do what we want. E.g. set: Server Password, Game Mode, Maps for Level Loop, Frag- & Timelimit etc... See Server.ini section below.
Once you have put together your own config file to run a e.g. DM Server you can "execute" this file on server startup with READINI=<Inifile>.ini, to ensure that everything is working the way *you* want. Note READINI= only *reads* the .ini file, this file will *not* be changed after you shut down the server. Note that usually when you quit Unreal, the .ini is *overwritten* and thus updated. If you *want* the latter to happen then use INI=. When running several servers this certainly is not what you want, so READINI= certainly is for admins :).
Finally to ensure that your server will run in dedicated mode you will have to set the parameter -server. As said before this allocates all resources to the multiplayer game control, instead of wasting it on display updates.
Setting up Your own Server.ini File
Run Unreal.exe, Open up the "Advanced Options" window (from the main menu, Options/Advanced Options), then open up "Game Types / Deathmatch Game" (or whatever type of game you want to modify). Here, you will see all of the advanced server options, which apply to the game type (DeathmatchGame, CoopGame, TeamGame, etc). Some of the interesting variables here are:
|AdminPassword||Administrator password; only accepted if bAllowRemoteAdmin is True.|
|AutoAim||Maximum allowable auto aiming amount for helping players who aren't using MouseLook. 1.0 (default) means no Autoaim and 0.0 means 100% autoaiming e.g. you can't miss ;)|
|bAllowRemoteAdmin||Whether to allow remote administration.|
|bCoopWeaponMode||Weapons behave as in coop play each player can get them once per life, no respawning.|
|bHumansOnly||Don't allow non-humans to play, such as SkaarjTroopers.|
|bMuteSpectators||Don't allow spectators to chat with players.|
|bNoFriendlyFire||Prevents people from hurting their team members by shooting them.|
|bNoMonsters||No monsters in gameplay.|
|bShareware||Indicates whether you're running a shareware server.|
|Difficulty||Difficulty level, affects bots.|
|FragLimit||Switches levels after this many frags; 0 means never switch based on frags.|
|GameSpeed||Multiplies the game speed; 1.0 means normal speed. 0.5 means half-speed, 2.0 means twice normal speed.|
|InitialBots||How many bots to have during play.|
|MaxPlayers||Maximum players allowed in the level.|
|MaxSpectators||Maximum spectators allowed in the level (default is 2).|
|TimeLimit||How many minutes to play before switching levels. 0 means never switch based on time.|
I have marked the more important options above. Note again for remote administration you will have to set AdminPassword and bAllowRemoteAdmin. Since by default the Death Match levels are played in a loop it's a good idea to set the FragLimit to 60 or something. This means that after 60 frags the next map will be loaded. You might also want to set the TimeLimit to something like 35. Finally set MaxPlayers to something like 16 (on a 10MBit connection and a Pentium II this ought to be ok, the upper limit seems to be around 32 for a system like that).
To make it easier on you, I recommend that you set up the Server you would liek to have via menus and then quit Unreal. Then make a copy of Unreal\System\Unreal.ini and call it Server.ini or something. This will ensure that you don't overwrite *your* config file the next time you play Unreal.
Note that Unreal.ini is divided into sections, so that editing is made simple. Futhermore it's a ASCII file, so that editing can be done with any text editor, for this I recommend Ultra Edit. Now lets get going:
These are the DM game settings I will be using... see above table for more info.
[UnrealI.DeathMatchGame] MaxPlayers=16 FragLimit=60 TimeLimit=35 bMultiPlayerBots=True bChangeLevels=True InitialBots=3 bNoMonsters=False bMuteSpectators=False bHumansOnly=False bAllowRemoteAdmin=True bCoopWeaponMode=True AutoAim=1.000000 MaxSpectators=2 AdminPassword=ArghhNote for all the other game types there are specific sections too: [UnrealI.TeamGame], [UnrealI.CoopGame], [UnrealI.KingOfTheHill], and [UnrealI.DarkMatch] see below.
The below entries Games to Games define the different game types Unreal comes with. I have only tested Death Match and Dark Match so far. The latter game uses special maps that are *really* dark, and you run around with a "torch". Unreal provides slots for upto 16 different games:
[UnrealI.UnrealServerMenu] Map=DmRadikus.unr GameType=UnrealI.DeathMatchGame Games=UnrealI.DeathMatchGame Games=UnrealI.TeamGame Games=UnrealI.CoopGame Games=UnrealI.KingOfTheHill Games=UnrealI.DarkMatch Games= ... Games= MaxGames=4Please note the line GameType=UnrealI.DeathMatchGame it defines what kind of a server you will be running and under what rules you will play. In most cases this will be what you want... But you can easily set the server to run a Dark Match e.g. GameType=UnrealI.DarkMatch... note I am not sure what maps other than DKNightOp.unr will support this type of game. If you find out send me an email. Note that you can also define the map Unreal will run on startup here: Map=DmRadikus.unr.
DM Map List
The following defines the order in which maps will be played on the server. In other words here you tell Unreal what map to open next after FragLimit or TimeLimit have been reached. If you are planning to add new custom maps, and run them on your server, then you should install them in the Unreal\Maps\ directory. Note the new maps names and enter them below: Maps[...]=.
[UnrealI.DMmaplist] Maps=DMariza.unr Maps=DMcurse.unr Maps=DMDeck16.unr Maps=DMElsinore.unr Maps=DMHealPod.unr Maps=DMtundra.unr Maps=DMRadikus.unr Maps=DMMorbias.unr Maps=DMDeathFan.unr Maps=DMfith.unr ... Maps= MapNum=4In all you can run 32 maps in a Level Loop. MapNum=4 is Unreal's way of remembering what map to play first! Note there is also [UnrealI.DKmaplist] for Dark Matches.
You can configure the entries to the Favorites Menu... e.g. the web sites that have lists of Unreal servers. Use Favorites[...] to add new web pages and use Aliases[...] to give your web pages a nice name that will appear in the menus. In all 12 web sites can be bookmarked this way.
[UnrealI.UnrealFavoritesMenu] Favorites=unreal://unreal.mplayer.com Favorites=unreal://unreal.heat.net Favorites=unreal://unreal.won.net Favorites=unreal://unreal.gamespy.com Favorites=unreal://unreal.gamehub.net Favorites=unreal://unreal.vrgn.com Favorites=unreal://nali.unrealserver.net Favorites=unreal://krall.unreal.org Favorites=unreal://server.unreal.com Favorites= Favorites= Favorites= Aliases=MPlayer.com Aliases=Heat.net Aliases=World Opponent Network Aliases=GameSpy Aliases=AT&T Worldnet Aliases=VRGN Game Network Aliases=Now OnLine Aliases=The Unreal Org Aliases=Epic MegaGames Aliases=..Empty.. Aliases=..Empty.. Aliases=..Empty..Alas I have found this menu totally useless, because if you pick one of the aboev sites a web browser is opened, and the server links shown there will start a *second* Unreal, instead of telling the current Unreal in memory to connect to the specified server. I hope Epic will fix this sometime soon.
I just noted that you can specify the names of Bots. Personally I recommend that you rename all Bots, and prefix their names with "Bot-" or something... this way players that connect to your DM server will know against whom they are playing... I have done so in the example below:
[UnrealI.BotInfo] bAdjustSkill=True bRandomOrder=True BotNames=Bot-Dante BotNames=Bot-Ash BotNames=Bot-Rhiannon BotNames=Bot-Kurgan BotNames=Bot-Sonja BotNames=Bot-Avatar BotNames=Bot-Dominator BotNames=Bot-Cholerae BotNames=Bot-Apocalypse BotNames=Bot-Bane BotNames=Bot-Hippolyta BotNames=Bot-Eradicator BotNames=Bot-Nikita BotNames=Bot-Arcturus BotNames=Bot-Shiva BotNames=Bot-Vindicator BotNames= ... BotNames= BotTeams=Blue BotTeams=Red ... BotTeams= BotSkills=0.000000 ... BotSkills=0.000000 BotClasses=Unreali.MaleThreeBot .. BotClasses= BotSkins=Dante ... BotSkins=As you can see, Bot Teams, Skills, Classes amd Skins can also be set. BotSkills[...] does not seem to work properly, I always play against bots with skill 1, but here they all have skill 0.0... weird. A maximum of 32 Bots in one game seems to be possible, though I'd like to see the machine that can mussle that sort of PC power ;)
Some of the following is sorta obvious... like Port which defines the default Port number (see above). MapExt defines the Unreal map ending (hands off ;). I'd keep my hands of most of the settings:
[URL] Protocol=unreal ProtocolDescription=Unreal Protocol Name=Player Map=Index.unr LocalMap=Unreal.unr Host= Portal= MapExt=unr SaveExt=usa Port=7777I wish I knew what Host, Portal and Name are for. I am still looking for a way to give my server a proper name. Host might be the server IP like 184.108.40.206. Name is probably the your name when you connect as admin, the default "Player" so to speak. But I will still have to do some testing on this.
Some really low level parameters... I can only say hands off most of those... better to set these from the Unreal menu system:
[Engine.Engine] GameRenderDevice=GlideDrv.GlideRenderDevice AudioDevice=Galaxy.GalaxyAudioSubsystem NetworkDevice=IpDrv.TcpNetDriver Console=Engine.Console Language=int GameEngine=Engine.GameEngine EditorEngine=Editor.EditorEngine WindowedRenderDevice=SoftDrv.SoftwareRenderDevice RenderDevice=GlideDrv.GlideRenderDevice DefaultGame=UnrealI.SinglePlayer DefaultServerGame=UnrealI.DeathMatchGame ViewportManager=WinDrv.WindowsClient Render=Render.Render Input=Engine.Input Canvas=Engine.Canvas CdPath=G:\You might want to adapt the default game DefaultServerGame see the list above for examples. More importantly... if you start Unreal and are always asked to insert the original CD even though you did a ful install, try setting the CdPath to where on your harddisk unreal is installed: e.g. e:\Unreal\...
I you have enough RAM your might really like to increase the Cache Unreal uses to avoid trashing on the harddisk virtual mem. There are 2 places you might like to change:
[Engine.GameEngine] CacheSizeMegs=20 ... [Editor.EditorEngine] ... CacheSizeMegs=20 ...The defaults are 2MB (for the GameEngine) and 4MB (for the EditorEngine)... at present I use 20MB for both... you might like to experiment with these values a bit. As a side note I have a 64MB RAM system.
The Input section is one heck of a big and important section... not only can you define aliases here, but all the key bindings are done here as well. Lets begin with aliases:
[Engine.Input] Aliases=(Command="Button bFire | Fire",Alias=Fire) Aliases=(Command="Button bAltFire | AltFire",Alias=AltFire) Aliases=(Command="Axis aBaseY Speed=+300.0",Alias=MoveForward) Aliases=(Command="Axis aBaseY Speed=-300.0",Alias=MoveBackward) Aliases=(Command="Axis aBaseX Speed=-150.0",Alias=TurnLeft) Aliases=(Command="Axis aBaseX Speed=+150.0",Alias=TurnRight) Aliases=(Command="Axis aStrafe Speed=-300.0",Alias=StrafeLeft) Aliases=(Command="Axis aStrafe Speed=+300.0",Alias=StrafeRight) Aliases=(Command="Jump | Axis aUp Speed=+300.0",Alias=Jump) Aliases=(Command="Button bDuck | Axis aUp Speed=-300.0",Alias=Duck) Aliases=(Command="Button bLook",Alias=Look) Aliases=(Command="Toggle bLook",Alias=LookToggle) Aliases=(Command="ActivateItem",Alias=InventoryActivate) Aliases=(Command="NextItem",Alias=InventoryNext) Aliases=(Command="PrevItem",Alias=InventoryPrevious) Aliases=(Command="Axis aLookUp Speed=+100.0",Alias=LookUp) Aliases=(Command="Axis aLookUp Speed=-100.0",Alias=LookDown) Aliases=(Command="Button bSnapLevel",Alias=CenterView) Aliases=(Command="Button bRun",Alias=Walking) Aliases=(Command="Button bStrafe",Alias=Strafe) Aliases=(Command="ActivateTranslator",Alias=ActivateTranslator) Aliases=(Command="ActivateHint",Alias=ActivateHint) ... Aliases=(Command="",Alias=None)The sythax is not very complicated... add the sequence of commands you want executed into quotation marks (") after the Command keyword. Note that | is used to separate more than one command. You can give this sequence of commands a handy new name, do this after the Alias keyword.
More about the Input section. Now we will take a closer look at key bindings:
[Engine.Input] MouseW= MouseX=Axis aMouseX Speed=6.0 MouseY=Axis aMouseY Speed=6.0Here you can set the socalled mouse accelleration.
LeftMouse=Fire RightMouse=AltFire MiddleMouse=Jump Delete=InventoryPrevious End=InventoryActivate PageDown=InventoryNext home=ThrowWeapon Shift=ShowScores Alt=Walking Ctrl=Duck Left=StrafeLeft Right=StrafeRight Down=MoveBackward Up=MoveForward Space=Talk Tab=Type Escape=ShowMenu Pause=PauseAbove is an example of the keys I use to play. As you can see, practically all keys in the Unreal config have plain text approximations. This can be a bit confusing at times.
NumPad0=NextWeapon NumPad1=PrevWeapon GreySlash=SwitchWeapon 1 NumPad2=SwitchWeapon 2 NumPad3=SwitchWeapon 3 NumPad4=SwitchWeapon 4 NumPad5=SwitchWeapon 5 NumPad6=SwitchWeapon 6 NumPad7=SwitchWeapon 7 NumPad8=SwitchWeapon 8 NumPad9=SwitchWeapon 9 Enter=SwitchWeapon 10 NumPadPeriod= GreyMinus= GreyPlus= GreyStar=I use the numerical key-pad to have all the weapons in reach and to be able to switch through the list of weapons.
F1=Help | FunctionKey 1 F2=ActivateTranslator | FunctionKey 2 F3=ActivateHint | FunctionKey 3 F4=ShowScores F5=ChangeHud F6=QuickSave F7=QuickLoad F8=FunctionKey 8 F9=Shot F10=Cancel F11=Brightness F12=EndFullscreenIn case you are interested, see the above complete list of function keys.
You can assign commands and aliases to every alpha-numerical key. See a few examples below:
A= B= ... E=say Welcome To AEon's Unreal Server... F=Feigndeath G=Grab ... K=GOD L=FOV 110 ... O=Toggle bExtra0 ... T=Taunt Taunt1 ... V=Taunt Victory1 ... Z=Taunt waveUse the say command to send Talk info to other players in multiplayer gaming. Use FOV command to expand your socalled "Field Of View", the default FOV is 90. I only use 110 to make screen shots. Taunt lets you gesture to other players in net gaming, ought to be good for a laugh or two :))
UnknownF5= ... Unknown05=The other keys are coded, as in the examples above. I haven't got the slightest what this coding could mean... :)
TCP Net Driver
The following are the rather low level... but tweaking might be especially interesting here:
[IpDrv.TcpNetDriver] ConnectionTimeout=30.0 InitialConnectTimeout=500.0 AckTimeout=1.0 KeepAliveTime=1.0 DefaultByteLimit=2600 MaxClientByteLimit=12000 SimLatency=0 DumbProxyTimeout=2.0 SimulatedProxyTimeout=10.0 SpawnPrioritySeconds=1.0 DuplicateClientMoves=True ServerTravelPause=5.0 MaxTicksPerSecond=15Note that the default MaxTicksPerSecond is 35. It seems for internet gaming this value is far too high. A value of 15 is proposed. Furthermore the MaxClientByteLimit default value is 25000, this value is also too high, a value of 12000 is proposed. When running a server you should change these 2 values.
Connection to master servers...
[IpDrv.ServerUplink] DoUplink=False MasterServerAddress=master.unreal.com CommentString=AEon's Unreal - AEonsUnreal.home.pages.de GamePort=7777You can tell a socalled Master Server that your server is up and running. This Master Server will in turn relay the information to others... I am not quite sure to whom. I suspect that a web page will show all the servers that are linked to the master, to let potential player know where to play. Since DoUplink is set to False I presume that Epic is still working on this. The CommentString look very interesting... maybe you can give your server a name here! You can also set the GamePort here...
Head Up Display
Configure your HUD... and crosshair...
[UnrealI.UnrealHUD] Crosshair=4 HudMode=1Possible values for Crosshair are 0 to 6, turn off the crosshair with 6. Values for HudMode are 0 to 5, turn off the HUD with 5.
Remote Server Administration
As you may have read further up for remote administration you will have to set AdminPassword=passwrd *and* bAllowRemoteAdmin=True.
Note also the list of Unrealscript Console Commands... these and *only* these will work for remote administration. To be frank the list is darn short and I really miss a *lot* of powerful admin commands... hmpf... another point Epic should fix.
I'd like to point out the few commands that are of interest: Say talk to other players, and Switchlevel to change map. *All* other commands I would consider cheating made possible for the admin... I hope Epic did this right like id did with Quake II, that cheating if at all possible, then for all players... very weird...
With these preparations, you can administer your server by logging in as a player and using the administrator password using the following URL syntax:
myservername.com?name=MyName?password=MyPasswordTo connect to AEon's Unreal Server as Admin, type from your local copy of Unreal the following console command:
open 220.127.116.11?name=AEon?password=passwrdI will have to do some testing on this sometime soon... I find the name= part of the login especially weird, since I am not certain at all where to edit the login name, and if more than one name will work... hmpf
Client Downloading of Files
The kinds of files which are automatically downloaded include:
*.u (class files) *.utx (texture files) *.uax (audio files) *.unr (map files <- especially interesting) *.umx (music files)"The reason behind client-side downloading is to allow servers to be set up in a Web-like fashion: Players can hop back and forth between servers, automatically downloading and caching the levels, graphics, music, and other objects as they go."
"When clients download files, the files go into the \Unreal\Cache directory, using a filename composed from their 128-bit GUID (Globally Unique Identifier) and the .uxx extension, rather than their human-readable name." ... Source: Planet Unreal
Hmmm... all this makes me wonder a bit... but the auto file download does seem to work... and that before it worked in Quake II ;)... you should not forget though that a download from an Unreal server can *never* be as fast as FTP download (and if for some reason it is, you yeah you ;) are severely sucking up bandwidth)... so it's still a good idea to check out the site's WEB. Saving everything in non-readable files is a bit strange... if you play on my server and download a custom map, you won't be able to do a practice match in that level, for you simply won't be able to find/read the file. We will see how this works...