Ĉon's Unreal Config Page Logo

Welcome to the Configure Page
Info on how to run your own Dedicated Unreal Server: Useful Launch parameters are explained in detail.

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
Last updated on Wednesday, September 16th 20:17 1998

Configure
Dedicated Server
...Launching the Server
...Path to Unreal
...Map on Startup
...Setting the Port
...Log Files
...Main Config .ini File
...Dedicated Mode

Admin Info
...Remote Admin

Client Info
...Client Auto Downloading

Editing Server.ini Config
...Complete Server.ini (20 KB) Example
...Menu Advanced Settings
...Using Text Editor
 
-Death MatchGeneral Game Settings
-Game TypesOther Rules!
-DM Map ListLevel Loop
-Favorites Menu   Web Server Connect
-Bot InfoConfiguring Bots
-URLMisc Server Related Stuff
-EngineSet Path to Unreal HD Install!
-CacheSet Caches of Unreal & UnrealEd
-AliasesDefine your own Short Cuts
-Key BindingsMap keys the way *you* want!
-TCP Net DriverTweak to improve net gaming!
-Server UplinkConnection to Master Servers
-HUDWeapons, Ammu, Crosshair



Dedicated Unreal Server
A socalled dedicated server, is a server that does nothing else but control internet multiplayer gameplay. No graphics are output, so no one can *play* on that machine directly. This has the advantage that the server PC is not "bogged" up wasting resouces on useless display updates. Furthermore it's *fairer* to players that connect to the machine, since a player sitting in front of the server will effectively have no latency (read lag!). So you can see there are good reasons for running an Unreal server in dedicated mode.

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.

Launching a Dedicated Unreal Server
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 
                               -server
Example:

   c:\Unreal\Unreal.exe DmFith.unr PORT=7777 LOG=dm.log READINI=Server.ini -server
Step by step I will explain each parameter:

Path to Unreal
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.

Map Choice on Startup
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).

Port Number
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. 131.220.96.124)! 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.

Log Files
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-).

Main Unreal Config File: Unreal.ini
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 :).

Dedicated Mode
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
There are 2 ways to edit Unreals main configuration file Unreal\System\Unreal.ini... the "sissy" way ;) via Main Menu Options/Advanced Options or the hard way :)) in a text editor. Personally I prefer editing by "hand"... to get you off to a good start you might try using the menus. After quitting Unreal again all the menu settings will be *saved* in the Unreal.ini file.

Setting Advanced Server Options via Menus
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:
OptionDescription
AdminPasswordAdministrator password; only accepted if bAllowRemoteAdmin is True.
AutoAimMaximum 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 ;)
bAllowRemoteAdminWhether to allow remote administration.
bCoopWeaponModeWeapons behave as in coop play each player can get them once per life, no respawning.
bHumansOnlyDon't allow non-humans to play, such as SkaarjTroopers.
bLowGoreReduced blood.
bMuteSpectatorsDon't allow spectators to chat with players.
bNoFriendlyFirePrevents people from hurting their team members by shooting them.
bNoMonstersNo monsters in gameplay.
bSharewareIndicates whether you're running a shareware server.
DifficultyDifficulty level, affects bots.
FragLimitSwitches levels after this many frags; 0 means never switch based on frags.
GameSpeedMultiplies the game speed; 1.0 means normal speed. 0.5 means half-speed, 2.0 means twice normal speed.
InitialBotsHow many bots to have during play.
MaxPlayersMaximum players allowed in the level.
MaxSpectatorsMaximum spectators allowed in the level (default is 2).
TimeLimitHow many minutes to play before switching levels. 0 means never switch based on time.

Above table is from www.planetunreal.com, Edited by AEon.

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).

Setting Advanced Server Options via Text Editor
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:

DeathMatchGame
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=Arghh
Note for all the other game types there are specific sections too: [UnrealI.TeamGame], [UnrealI.CoopGame], [UnrealI.KingOfTheHill], and [UnrealI.DarkMatch] see below.

Game Types
The below entries Games[0] to Games[4] 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[0]=UnrealI.DeathMatchGame
        Games[1]=UnrealI.TeamGame
        Games[2]=UnrealI.CoopGame
        Games[3]=UnrealI.KingOfTheHill
        Games[4]=UnrealI.DarkMatch
        Games[5]=
        ...
        Games[15]=
        MaxGames=4
Please 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[0]=DMariza.unr
        Maps[1]=DMcurse.unr
        Maps[2]=DMDeck16.unr
        Maps[3]=DMElsinore.unr
        Maps[4]=DMHealPod.unr
        Maps[5]=DMtundra.unr
        Maps[6]=DMRadikus.unr
        Maps[7]=DMMorbias.unr
        Maps[8]=DMDeathFan.unr
        Maps[9]=DMfith.unr
        ...
        Maps[31]=
        MapNum=4
In 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.

Favorites Menu
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[0]=unreal://unreal.mplayer.com
        Favorites[1]=unreal://unreal.heat.net
        Favorites[2]=unreal://unreal.won.net
        Favorites[3]=unreal://unreal.gamespy.com
        Favorites[4]=unreal://unreal.gamehub.net
        Favorites[5]=unreal://unreal.vrgn.com
        Favorites[6]=unreal://nali.unrealserver.net
        Favorites[7]=unreal://krall.unreal.org
        Favorites[8]=unreal://server.unreal.com
        Favorites[9]=
        Favorites[10]=
        Favorites[11]=
        Aliases[0]=MPlayer.com
        Aliases[1]=Heat.net
        Aliases[2]=World Opponent Network
        Aliases[3]=GameSpy
        Aliases[4]=AT&T Worldnet
        Aliases[5]=VRGN Game Network
        Aliases[6]=Now OnLine
        Aliases[7]=The Unreal Org
        Aliases[8]=Epic MegaGames
        Aliases[9]=..Empty..
        Aliases[10]=..Empty..
        Aliases[11]=..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.

Bot Info
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[0]=Bot-Dante
        BotNames[1]=Bot-Ash
        BotNames[2]=Bot-Rhiannon
        BotNames[3]=Bot-Kurgan
        BotNames[4]=Bot-Sonja
        BotNames[5]=Bot-Avatar
        BotNames[6]=Bot-Dominator
        BotNames[7]=Bot-Cholerae
        BotNames[8]=Bot-Apocalypse
        BotNames[9]=Bot-Bane
        BotNames[10]=Bot-Hippolyta
        BotNames[11]=Bot-Eradicator
        BotNames[12]=Bot-Nikita
        BotNames[13]=Bot-Arcturus
        BotNames[14]=Bot-Shiva
        BotNames[15]=Bot-Vindicator
        BotNames[16]=
        ...
        BotNames[31]=
        BotTeams[0]=Blue
        BotTeams[1]=Red
        ...
        BotTeams[31]=
        BotSkills[0]=0.000000
        ...
        BotSkills[31]=0.000000
        BotClasses[0]=Unreali.MaleThreeBot
        ..
        BotClasses[31]=
        BotSkins[0]=Dante
        ...
        BotSkins[31]=
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 ;)

URL
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=7777
I 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 131.220.96.124. 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.

Engine
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\...

Cache
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.

Aliases
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[0]=(Command="Button bFire | Fire",Alias=Fire)
        Aliases[1]=(Command="Button bAltFire | AltFire",Alias=AltFire)
        Aliases[2]=(Command="Axis aBaseY  Speed=+300.0",Alias=MoveForward)
        Aliases[3]=(Command="Axis aBaseY  Speed=-300.0",Alias=MoveBackward)
        Aliases[4]=(Command="Axis aBaseX Speed=-150.0",Alias=TurnLeft)
        Aliases[5]=(Command="Axis aBaseX  Speed=+150.0",Alias=TurnRight)
        Aliases[6]=(Command="Axis aStrafe Speed=-300.0",Alias=StrafeLeft)
        Aliases[7]=(Command="Axis aStrafe Speed=+300.0",Alias=StrafeRight)
        Aliases[8]=(Command="Jump | Axis aUp Speed=+300.0",Alias=Jump)
        Aliases[9]=(Command="Button bDuck | Axis aUp Speed=-300.0",Alias=Duck)
        Aliases[10]=(Command="Button bLook",Alias=Look)
        Aliases[11]=(Command="Toggle bLook",Alias=LookToggle)
        Aliases[12]=(Command="ActivateItem",Alias=InventoryActivate)
        Aliases[13]=(Command="NextItem",Alias=InventoryNext)
        Aliases[14]=(Command="PrevItem",Alias=InventoryPrevious)
        Aliases[15]=(Command="Axis aLookUp Speed=+100.0",Alias=LookUp)
        Aliases[16]=(Command="Axis aLookUp Speed=-100.0",Alias=LookDown)
        Aliases[17]=(Command="Button bSnapLevel",Alias=CenterView)
        Aliases[18]=(Command="Button bRun",Alias=Walking)
        Aliases[19]=(Command="Button bStrafe",Alias=Strafe)
        Aliases[20]=(Command="ActivateTranslator",Alias=ActivateTranslator)
        Aliases[21]=(Command="ActivateHint",Alias=ActivateHint)
        ...
        Aliases[39]=(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.

Key Bindings
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.0
Here 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=Pause
Above 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=EndFullscreen
In 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 wave
Use 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=15
Note 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.

Server Uplink
Connection to master servers...

        [IpDrv.ServerUplink]
        DoUplink=False
        MasterServerAddress=master.unreal.com
        CommentString=AEon's Unreal - AEonsUnreal.home.pages.de
        GamePort=7777
You 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=1
Possible 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
A short how to connect to an Unreal server, and how to control it, if you are Admin of that server... read: you got the password :)... (~wink~ ^AP^ !)

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=MyPassword
To connect to AEon's Unreal Server as Admin, type from your local copy of Unreal the following console command:

	 open 131.220.96.124?name=AEon?password=passwrd
I 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
"When clients enter a server, the server sends them a list of all Unreal packages (binary files containing structured Unreal objects). The client then makes sure he has all of the server's packages. If he does, he will immediately try to enter the game. If he is missing one or more files, he asks the server to download them, and the server obliges by sending each file in turn, using a UDP-based sliding window protocol."

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...