# mwohlauer.d-n-s.name / www.mobile-infanterie.de

### Site Tools

en:games:star_trek_-_voyager_eliteforce

# Star Trek - Voyager Eliteforce

## Game Info

Star Trek Voyager Elite Force is a beautiful first person shooter, thematically located in the Star Trek Voyager universe. It was developed by Ravensoft, published by Activision in September 2000. The game was released for Windows, Linux, MacOS and even Playstation 2. The regular multiplayer game modes are:

• Capture the Flag (CTF)
• Tournament (1 on 1)
• Deathmatch (FFA)
• Team Deathmatch (TDM)

With the addon or version 1.2 of the game, further modes of the multiplayer were added to the basic game:

• Elimination: Players fragged for the rest of the round (much like Counter-Strike).
• Specialties: Each player plays a specific class that has specific advantages and disadvantages. There are no items on the maps. The infiltrator, for example, always has speedboots, but only the Phaser. His special ability is to transport away, once. Or the technician has an Arc Welder and a force field at his disposal. There are the following six classes:
• Infiltrator
• Sniper
• Heavy weapons specialist
• Demolitionist
• Medic
• Technician
• Action Hero: One player starts with more health, which is constantly regenerated (+10 per sec.), up to a maximum of 300. The shield level is also up to a maximum of 300 (but is built up regularly by picking up and becomes less over time) and he has all weapons available (but not infinite ammo). He gets 1 point per frag. The others get 1 point for normal frag. There are 5 points for fragging the Action Hero and the fragger becomes the Action Hero himself (the ability is then taken away from the player fragged).
• Disintegration: All players start with the Phase Compression Rifle with infinite ammo and there is only the alternate fire mode.
• Assimilation: One player starts as a Borg queen whose task it is to assimilate the others (Federation). Each additional Borg can assimilate. The Borg have won when all opponents are assimilated. Federation wins when Borgqueen got fragged.

There are also a number of Mods:

• Pinball: The aim of the game is to shoot the opponent out of the map, not to kill him by regular fragging.

Here is a first impression of the game's gameplay (multiplayer on Internet server):

The game is based on the Quake 3 Arena engine, which means that many of the things said here also apply to Quake 3 Arena. It also works the other way around. The game itself is divided into the single player and the “Holomatch”, i.e. the multiplayer. Everything that is written here applies primarily to the Holomatch. However, most of the commands and settings can be applied to both equally, or have an effect on both (e.g. the brightness settings).

The game was released by Activision on September 14, 2000, but after some disputes with Paramount (represented by Viacom) they returned the license for Star Trek games in general. For this reason, Eliteforce and the other Star Trek games from Activision are no longer retailed. Therefore the game is not available at GOG or other retailers. Thus, only the used trade remains, e.g. via eBay or Amazon Market Place.

## System requirements

### Minimum system requirements

• Windows® 95, 98, 98 SE, NT 4.0 SP5, or Windows 2000 with 100% compatible Computer System
• 3-D hardware accelerator with full OpenGL® support
• Pentium 233 MHz MMX® processor and 8 MB video card or Pentium II 266 MHz MMX® processor with 4 MB video card or AMD® 350 MHz K6®-2 processor with 4 MB video card
• 64 MB RAM
• Quad-speed CD-ROM drive (min. 600 kB/sec transfer rate)
• DirectX 7.0a or higher
• Modem or network card for the multiplayer
• Windows® 95, 98, 98 SE, NT 4.0 SP5, or Windows 2000 with 100% compatible Computer System
• 3-D hardware accelerator with full OpenGL® support
• Pentium II 300 MHz MMX® processor (or faster) with 16 MB graphics card
• 64 MB RAM (or more)
• Quad-speed CD-ROM drive (min. 600 kB/sec transfer rate)
• DirectX 7.1 or higher
• Three-button mouse with mouse wheel

### Mac requirements

• G3 or G4 processor with 266 MHz or faster
• 64 MB RAM
• PCI or AGP 3D accelerator graphics card with at least 6 MB VRAM and Apple OpenGL version 1.1.2 or higher
• 560 MB of uncompressed disk space (more disk space required for virtual storage)
• At least 128 MB of virtual memory
• MacOS 8.6 or higher
• 4x CD-ROM
• Internet (TCP/IP) and LAN (TCP/IP) multiplayer supported
• Internet multiplayer requires at least a 28.8 kbit/s modem

## Versions

There are different versions of EF. The lowest version shipped is 0.28. Currently, the latest official version is 1.2 and the last unofficial one (via Lilium Voyager) is 1.39. To find out your version for sure, you can simply start a solo or multi match. As soon as the server is running, press ESC and click on Server Data. The version will then be displayed in the list of variables. (There is also an indication in the main menu, which can be overwritten by certain *.pk3 files, so you cannot rely on it.)

Known versions are:

Version Network Version* Communications Protocol** Version String Comment
0.28 22 - ST:V HM v0.28 win-x86 Aug 17 2000 First version released by Raven, under Win 10 the single player is not executable.
1.1 23 - ST:V HM v1.10 win-x86 Nov 10 2000 Second version released by Raven, single player now also works under Win 10.
1.2 24 - ST:V HM v1.20 win-x86 Apr 17 2001 Third and last official version. Comes in two variants, once only the standard game patched to version 1.2, and once as an expansion pack version. But the version information is the same.
1.35 24 - ioST:V HM v1.35 win_msvc-x86 Jul 17 2006 Version by Thilo Schulz, based on ioQuake 3
1.36 24 - ioST:V HM v1.36 win_msvc-x86 Aug 26 2006 Version by Thilo Schulz
1.37 24 - ioST:V HM v1.37 win_msvc-x86 Nov 13 2006 Last version released by Thilo Schulz.
1.38 RC 1 x86 24 26 ioST:V HM 1.38_SVN2130M win_mingw-x86 Aug 3 2011 Last version released by Thilo as release candidate.
1.38 RC 1 x86 x64 24 26 ioST:V HM 1.38_SVN2130M win_mingw64-x64 Aug 3 2011 Last version released by Thilo as release candidate.
1.39 x86 24 26 Lilium Voyager HM 1.39_GIT_23b94816-2019-05-12 win_mingw-x86 May 12 2019 Current version of Lilium Voyager, based on ioQuake 3, maintained by a certain Zack "zturtleman" Middleton. The version segment _GIT_23b94816-2019-05-12 […] May 12 2019 may look different depending on git revision status and compile date.
1.39 x86 x64 24 26 Lilium Voyager HM 1.39_GIT_23b94816-2019-05-12 win_mingw64-x86_64 May 12 2019 Current version of Lilium Voyager, based on ioQuake 3, maintained by a certain Zack "zturtleman" Middleton. The version segment _GIT_23b94816-2019-05-12 […] May 12 2019 may look different depending on git revision status and compile date.

* This is the version number (protocol), which must be the same for server and client.

** This is ultimately the more precise specification which communication protocol (com_protocol) is used. So far, this seems to have no major effect as long as the protocol matches. However, EF 1.2 without Expansion Pack seems to automatically find 1.39 servers in the local network, while 1.2 without EP and older does not display the servers at all.

In principle the installation of the patches 1.1 and 1.2 requires only one precondition: EF must have been installed in the classic way, because otherwise necessary registry keys are not available, so that the patch denies the presence of the game (and only lets you cancel).

## Setting up EF

### Installation

First of all, you need to get the game to work. Nowadays this can' t be taken for granted, even though the game itself runs quite reliably. There are some requirements to be met: The Quake 3 engine and the whole game is based on OpenGL, which means that you should have OpenGL installed with your graphics drivers. So if you only use the standard Windows drivers, you might find that the game refuses to start because OpenGL is not found. This is usually solved by the latest drivers from the graphics card manufacturer, which should include this. If necessary, you can also try the OpenGL drivers included on the CD (only for Windows). You have to start the file glsetup.117.exe in the directory \Setup\GlSetup on the EF installation CD. But this doesn't work for everyone, so better search for your own graphics card drivers right away. The manufacturers usually help out. CD keys are actually automatically integrated by the installer during the game, so they are not requested. But if there should be problems with it for any reason, you should note down or save your key beforehand. Otherwise you have to reinstall/copy. Dedicated servers do not query the key and do not check if they are free on the Internet. So you can actually take any key as long as it is genuine.

The game itself requires a few files from the CD. The key file efq3.key, the archive file(s) pak0.pk3 (and possibly pak1.pk3 and pak2.pk3 for version 1.2) in the BaseEF folder, as well as the files stvoy.exe and stvoyHM.exe in the root directory are required by the CD. On some systems the DLLs FFC10.dll, efuix86.dll, efgamex86.dll and binkw32.dll are also required for the single player in the root directory. For the expansion pack the files pak3.pk3 and expefq3.key are added. If you want, add Thilo's Binaries or Lilium Voyager as well. The *.pk3 files belong into the baseEF subdirectory of the EF installation, the rest into the root directory. With Thilo's binaries or Lilium Voyager these files could also be located in the corresponding directory of the home folder. Since they are assumed to be the same for all players on the same computer, nevertheless it makes sense to store them in the game directory. The *.key or *.dll files and the binaries (*.exe) belong in the root directory of EF. For Thilo's binaries and Lilium Voyager please see the corresponding sections below.

In times of Win64 and third-party patches, classic installation is not always as easy. So here is a short summary on how to get EF installed via the installer:

• Windows
• 64 Bit
1. DriveLetter:\Setup\Setup.exe (because the starter no longer works under Windows 64 Bit)
2. Install the expansion pack (usually this starter works fine)
3. Install new binaries (one of them is sufficient):
• Download the binary files for Lilium Voyager (see Downloads) and extract them into the game directory. For playing the files liliumvoyhm.x86_64.exe, liliumvoyhm_renderer_opengl1_x86_64.dll, liliumvoyhm_renderer_opengl2_x86_64.dll and SDL264.dll are sufficient. If you also want to set up a dedicated server, you also require the liliumvoyded.x86_64.exe.
• go to http://thilo.kickchat.com/efport-progress/bin/win64] and download the files iostvoyHM-1.38_rc1.x64.exe, SDL64.dll and renderer_opengl1_x64.dll into the EF directory. The *.dll files may also be stored in the Windows directory (%windir%), but you need admin rights and there may be some side effects.
• 32 Bit
1. Install EF
2. Install the Expansion Pack
3. Install new binaries (one of them is sufficient):
• Download the binary files for Lilium Voyager (see Downloads) and extract them into the game directory. For playing the files liliumvoyhm.x86.exe, liliumvoyhm_renderer_opengl1_x86.dll, liliumvoyhm_renderer_opengl2_x86.dll and SDL2.dll are sufficient. If you also want to set up a dedicated server, you also require the liliumvoyded.x86.exe.
• go to http://thilo.kickchat.com/efport-progress/bin/win32] and download the files iostvoyHM-1.38_rc1.x86.exe and renderer_opengl1_x86.dll into the EF directory. Download the Lib-SDL 1.2 (not the version 2!) for 32 bit and copy the SDL.dll in the archive into the EF directory. The *.dll-files could also be stored in the Windows directory (%windir%), but you need admin rights and there may be some side effects.
• Problems with Win 10: Recently there may be a problem with the installation under Windows 10. The actual installer starts, but at 100% it simply doesn't continue. This can be solved as follows:
2. Extend the Installer Launcher Task with the arrow on the left.
3. Right click on one of the sub-items, and then select Go to details.
4. Right-click on the marked process again and select Analyze queue.
5. There is always a process that stops the installer process. This process must be stopped.
6. If nothing happens with the first selected installer process, you can try the same with the other two processes. If there is nothing left, the installer should simply continue to run. (Source)
• Alternatively, you can manually copy EF from the CDs. You need the files pak0.pk3 to pak3.pk3 (depending on version and use of the expansion pack). These should be copied to a folder named baseEF. One level above should be the files FFC10.dll, efuix86.dll, efgamex86.dll binkw32.dll, stvoy.exe and stvoyHM.exe, with which the single player or multiplayer is started, and the CD keys efq3.key or expefq3.key. The files are stored on the CDs in the folder Setup.
• Linux
• In principle you should be able to use the Linux Installer for both. The execution takes place via file name. For this the file must first be set to executable permission first.
• Either you have the CDs with the installer at hand during the installation or you copy the files manually into the EF directory as described above. However, the installation created in this way is not suitable for the single player. Wine would be necessary to install EF classic: As described for Windows and then play via Wine.
• 64 Bit:
1. Get binaries (one of both is enough):
• Download the binary files for Lilium Voyager (see Downloads) and extract them into the game directory. The files liliumvoyhm.x86_64, liliumvoyhm_renderer_opengl1_x86_64.so, and liliumvoyhm_renderer_opengl2_x86_64.so are sufficient for playing. If you also want to set up a dedicated server, you also need the liliumvoyded.x86_64. They belong in the game directory. The liliumvoyhm.x86_64 or liliumvoyded.x86_64 must be made executable if necessary still.
• Load the files renderer_opengl1_x86_64.so and iostvoyHM-1.38_rc1.x86_64 from http://thilo.kickchat.com/efport-progress/bin/linux into the EF directory. Make the latter executable.
2. sudo apt-get install libsdl1.2-dev or something similar for your distribution to install the lib-SDL 1.2 (it needs not the version 2).
• 32 Bit
1. Get binaries (one of both is enough):
• Download the binary files for Lilium Voyager (see Downloads) and extract them into the game directory. The files liliumvoyhm.x86, liliumvoyhm_renderer_opengl1_x86.so, and liliumvoyhm_renderer_opengl2_x86.so are sufficient for playing. If you also want to set up a dedicated server, you also need the liliumvoyded.x86. They belong in the game directory. The liliumvoyhm.x86 or liliumvoyded.x86 must be made executable in some cases.
• Load the files renderer_opengl1_i386.so and iostvoyHM-1.38_rc1.i386 from http://thilo.kickchat.com/efport-progress/bin/linux into the EF directory. Make the latter executable.
2. sudo apt-get install libsdl1.2-dev:i386 or something similar for your distribution to install the lib-SDL 1.2 (it doesn't need the version 2!). It may be necessary to install the libraries libvorbisfile3:i386, libcurl3:i386 and libmad0-dev:i386 for the 32-bit version. At least for the 32-bit 1.37 version they are necessary.
• If the game does not want to start, install the following libraries (if declared as required) : libmad, libogg, libvorbis, libvorbisfile, libopenal and libcurl.

The expansion pack is not mandatory, but has the advantage that the 1.2 patches (for Windows) are already included. It also adds a number of good maps. To play the single player you need the EP-CD. The circulating single player crack no longer works! The multiplayer crack still works.

With the 1.38 patch (based on the ioquake3 engine) a multiplayer crack is no longer necessary, as the CD query routine is already removed. The patch is not from the manufacturer of EF, but of private origin, but fixes some bugs and security holes. Additionally there are some new game modes. But I think it's worth it just because of the missing CD check. The 1.38 patch is not necessary to join games, even 1.2 versions can play on 1.38 servers. But also the other way around. The same is true for Lilium Voyager.

### Problems with CD-Keys

#### CD key too short

There were apparently some CDs with a CD key that was wrongly too short with only 17 characters integrated. In these cases, it helps to append a 0 in case EF asks for it. If another one has already been entered, open the file efq3.key in the BaseEF folder of the EF installation and add 0 as the 18th character.

#### No CD key included, despite query

If you install the EF version from the “Star Trek: Action Pack”, this query will appear. You can cancel the dialog here, because the installer installs the CD-Key afterwards.

### Hunk_Alloc failed

This error occurs when Elite Force does not have enough memory available, or vice versa, too many maps, models and other extensions are loaded. EF does not use all available RAM by default. You can raise the limit yourself: Either you type /seta com_hunkmegs x into the console, with x as the amount of memory you want EF to use. Or put seta com_hunkmegs x in the config. Alternatively you can of course clean up your EF folder and remove maps & Co. you no longer need. However, it is also sufficient to move the less frequently used *.pk3 files to another folder that EF does not access (e.g. create a subfolder Backup).

### Graphics Problems with ATI/AMD Graphics Cards on New Systems

The OpenGL implementation of AMD graphics cards often causes problems with old games. There is apparently a workaround that is described here.

### Location of the config files

Even though it may be a bit confusing at the beginning, there is not only one place where the settings for the game are stored. With a standard installation from CD, without mods or newer versions than 1.2, the files are located under baseEF in the EF games folder or in the corresponding folders of the mods in the games directory. For the mod Pinball for example, instead of the subfolder baseEF this is the folder pinball. With the binaries of Thilo or Lilium Voyager things look different again. Because here (as it should have been for the original version of Raven) the files are stored in the user directory. This has the advantage that every user can have his own configuration and installed mods, maps, models, etc. and no user needs write access to the game directory.

### Thilo's Binaries

After the Quake 3 engine became open source, some people started patching Quake 3 and adding features. A certain Thilo Schulz also used this opportunity to write patches based on it for EF. (Today it's better to use Lilium Voyager right away, simply because that's where the work that Thilo has invested, continues.) A brief outline of practical changes:

• EF also for Linux
• Gamma (image too dark) bug fixed
• Settings are now in the user folder, not in the game folder (so each player have his own settings on the PC)
• With “ALT” + “TAB” you can switch from the game.

Under Linux the configs are in $HOME/.stvef/baseEF (or the corresponding mod directories). Under Windows 7 they are located under %appdata%\STVEF\baseEF or the corresponding mod folders. Depending on the Windows version (e.g. XP may be located elsewhere in the user directory), but the name STVEF should be found. In addition to the mod data, maps and models can also be found here. However, the directory exists only after a first start of EF 1.34 or higher. ### Lilium Voyager #### What's that? Since Thilo has stopped maintaining his EF patches at some point, there are no newer versions of him than the 1.38 RC 1. And even this one is no longer to be found on his former pages. His work is continued by Zack Middleton in the form of the project “Lilium Voyager”. #### Where to get The source files can be found here. You can also find them precompiled in the Downloads above. #### Where do my settings go? The settings on the three major systems, Windows, Linux and MacOS, are stored here: • Linux: ~/.local/share/lilium-voyager/baseEF, • Windows: %appdata%\Lilium Voyager\baseEF • MacOS: ~/Library/Application Support/Lilium Voyager/baseEF or in the corresponding mod folders. #### Building it yourself As written above, only the source files are published. You have to compile the executables (“binaries”) yourself. How this works for Quake 3 and derived games (32 and 64 bit, different platforms) is described below. For the source files of Lilium Voyager please use these sources. The git URL is https://github.com/zturtleman/lilium-voyager.git. ##### Linux On Linux it is possible to build for both variations, x86 and amd64. It is also possible to cross compile for Windows (32 and 64 bit), see next section for that. To compile on Linux you require the following prerequisites installed: • git (versioning tool) and • libsdl2-dev (SDL 2 development package). Once you have installed these packages, you can start with cloning the git repository on the console, containing the EF sources, like this: git clone https://github.com/zturtleman/lilium-voyager.git It will download the new source files to a newly created folder lilium-voyager. Switch to it and run make. This will build EF for your own platform. The resulting binaries will be placed inside the subfolder build, e. g. for an AMD 64 architecture the folder release-linux-x86_64 will be created. From there you only need the following four files: • liliumvoyded.x86_64 (dedicated server binary, used to set up a server), • liliumvoyhm_renderer_opengl1_x86_64.so (graphics library), • liliumvoyhm_renderer_opengl2_x86_64.so (graphics library), • liliumvoyhm.x86_64 (client binary, used to play on a server). If you want to update an already existing Lilium Voyager folder, just run git pull for updating the source repository and run make clean (removing files created during earlier run) and afterwards make to run the compilation process again. If you want to create binaries for another architecture than you own (e. g. compile x86 binaries on an amd64 system), you can specify this with the ARCH property. For the former example the command would be make ARCH=x86. So what make actually does on an amd64 system is the same as make ARCH=x86_64. ##### Cross compile for Windows via Linux For cross-compiling from Linux to Windows the MingW environment is necessary. Use something like sudo apt-get install mingw-w64 for x64 or sudo apt-get install mingw for x86 Linux (here: for Debian & derived distributions…) to install it. Then run the compilation process like this: make PLATFORM=mingw32 ARCH=x86_64 (64 bit) or make PLATFORM=mingw32 ARCH=x86 (32 bit). ##### MacOS You will need to run the bash on MacOS and also install git. Check out the source files from the git repository as described for Linux. Then run the following command: ./make-macosx.sh x86_64. As MacOS today only comes as 64 bit version, this should be all you need. From the results in the build directory, you will only need the following elements: • Lilium Voyager.app (Quick starter for the game) or • liliumvoyded.x86_64 (for setting up a dedicated server), • liliumvoyhm_renderer_opengl1_x86_64.dylib (graphics library), • liliumvoyhm_renderer_opengl2_x86_64.dylib (graphics library), • liliumvoyhm.x86_64 (game binary) and • libSDL2-2.0.0.dylib (SDL library). If you're running Mac OS 10.6.x and have the Mac OS 10.5 developer SDK you can make a universal binary for ppc, x86, and x86_64 that is compatible with OS X 10.5 or later Mac OS versions. • Remove the build directory if you previously built ioq3 using make, because it defaults to 10.7 compatibility. * Run ./make-macosx-ub.sh If you're running Mac OS 10.7 or newer you can build a x86 / x86_64 universal binary that is compatible with 10.7 or later. (Not particularly useful since all Mac OS 10.7 and later are x86_64.) • Run make ARCH=x86 or • make ARCH=x86_64 and • run ./make-macosx-app.sh release. ##### Windows - msys2 64-Bit Binaries To build 64-bit binaries, follow these instructions: 1. Ordered List ItemInstall msys2 from https://msys2.github.io/ , following the instructions there. It doesn't matter which version you download, just get one appropriate for your OS. 2. Start “MSYS2 MinGW 64-bit” from the Start Menu. 3. Install mingw-w64-x86_64: pacman -S mingw-w64-x86_64-gcc 4. Install make: pacman -S make 5. Grab latest ioq3 source code from github. Use git, or just grab https://github.com/ioquake/ioq3/archive/master.zip and unzip it somewhere. 6. Change directory to where you put the source and run make. Note that in msys2, your drives are linked as folders in the root directory: C:\ is /c/, D:\ is /d/, and so on: cd /c/ioq3 make ARCH=x86_64 1. Find the executables and dlls in build/release-mingw64-x86_64. 32-Bit Binaries To build 32-bit binaries, follow these instructions: 1. Install msys2 from https://msys2.github.io/, following the instructions there. It doesn't matter which version you download, just get one appropriate for your OS. 2. Start “MSYS2 MinGW 32-bit” from the Start Menu. 3. Install mingw-w64-i686-gcc: pacman -S mingw-w64-i686-gcc 4. Install make from msys: pacman -S make 5. Grab latest ioq3 source code from github Use git, or just grab https://github.com/ioquake/ioq3/archive/master.zip and unzip it somewhere. 6. Change directory to where you put the source and run make. Note that in msys2, your drives are linked as folders in the root directory: C:\ is /c/, D:\ is /d/, and so on. cd /c/ioq3 make ARCH=x86 WINDRES="windres -F pe-i386" 1. Find the executables and dlls in build/release-mingw32-x86 . ##### Windows - cygwin 1. Install Cygwin Download the Cygwin setup package from http://cygwin.com/install.html. Choose either the 32-bit or 64-bit environment. 32-bit will work fine on both 32 and 64 bit versions of Windows. The setup program is also your Cygwin environment updater. If you have an existing Cygwin environment, the setup program will, by default, update your existing packages. Choose where you want to install Cygwin. The entire environment is self-contained in it's own folder, but you can also interact with files from outside the environment if you want to as well. The default install path is C:\Cygwin. 1. Choose a mirror to download packages from, such as the kernel.org mirrors. 2. Choose a “storage area” for your package downloads. 2. Package selection The next screen you see will be the package selections screen. In the upper left is a search box. This is where you will want to search for the necessary packages. These are the package names you'll want to search for: • mingw64-i686-gcc-core (for building 32bit binaries), • mingw64-i686-gcc-g++ (also for 32bit… C++ support… not required for ioquake3, but useful for compiling other software), • mingw64-x86_64-gcc-core (for building 64bit binaries), • mingw64-x86_64-gcc-g++ (for 64bit, same as above), • make, • bison and • git. When you search for your packages you'll see category listings. These packages would all be under the “Devel” category. To select a package, change the 'Skip' to the version of the package you want to install. The first click will be the newest version and subsequent clicks will allow you to choose older versions of the package. In our case here, you're probably good choosing the latest and greatest. 3. Install packages After you have selected your packages, just hit 'Next' in the lower right. Cygwin will automatically add package dependencies. Hit next again to let the install run. Done. The entire environment uses about 1GB of disk space (as opposed to about 6GB for a Visual Studio install). 4. Using Cygwin to check out and build ioquake3 After the install has completed you should have a 'Cygwin Terminal' icon on your Desktop. This is the bash shell for Cygwin, so go ahead and run it. At the command prompt type: git clone https://github.com/zturtleman/lilium-voyager.git This will download the Lilium Voyager master branch source into a new lilium-voyager folder. Change to the folder that was created: cd lilium-voyager You can build EF for 32 or 64 bit Windows by running one of the following • make ARCH=x86 (32 bit) or • make ARCH=x86_64 (64 bit). After the build completes the output files will be in the build folder. The path would be C:\Cygwin\home\<username>\lilium-voyager\build\release-mingw32-arch for the default Cygwin install. ## Graphic settings There is not much to say about the individual graphic settings in graphic data. The effects should be known. However, the brightness control described in the next section can be found in Graphic data II, if something needs to be readjusted. ### Adjust brightness EF has so its problems with the gamma value with the original binaries under NT systems (thus everything starting from Win2000/XP upward). This means that the game is usually much too dark, no matter what you have set during installation or in the menu with the slider. This can be changed as follows: 1. Open the file efconfig.cfg in the directory BaseEF of the EF installation, 2. search for the line r_ignorehwgamma "X" and set X to 0, 3. search for the line r_overBrightBits "X" and set X to 0. Then it is actually too bright. But rather too bright and one can see something than too dark and one can't see anything. The above also applies to the file hmconfig.cfg, which provides the effect for the multiplayer. For Thilo's binaries or Lilium Voyager this setting is not necessary, because the slider does exactly what it is supposed to do. The Open Broadcaster Software (OBS) is also affected from this bug, even when using Lilium Voyager. This has the following effect: Ingame, the brightness looks just fine, while recordings look rather dark. When using the r_ignorehwgamma "X" variable setting, the video looks brighter as well. ### Use other resolutions EF is based on the Quake 3 Arena engine. So you can use the Q3A graphics hack to play EF in HD or with wide screen resolutions. The two relevant config files are efconfig.cfg (for the single player) and hmconfig.cfg (for the multiplayer), see also section Location of the config files. For mods (e.g. pinball) the config stored in the mod folder may also have to be modified. ## User name and other settings ### Set User name A bad habit that also occurs on the net is that players forget to enter their name before playing multiplayer games. This can be very funny when 3 players with the name Redshirt are in the list at once. So it's best to change it immediately, so you won't forget that either. To do this, go to ConfigurePlayer in EF and there you can choose the name and model of the character you want to use. ### Colored Nicknames You can also use colors in the nick by prefixing it with a ^ with a digit. All following characters will then be displayed in the corresponding color. The color assignment is as follows: Code Color ^1 Red ^2 Green ^3 Yellow ^4 Blue ^5 Cyan ^6 Pink ^7 White ^8 Black ### Overlong nicks By default, the length of the nick in EF is limited by the input field. But if you edit the hmconfig.cfg manually (line with seta name "..."), longer nicks are also possible. ### Handicap The option Handicap is only interesting for very good players as it reduces the shields, health and weapon damage values to the set percentage value (incl. upper limits). A handicap of 50 means that you only have 50 health points each time you spawn, not 100 as usual, and a maximum of 100 (with a slow drop back to 50). This has the same effect on the shields. The normal value times the handicap : 100 is always assumed as the basis, that means Emergency Hyposprays also charge only to the handicap value, the Booster Hyposprays, yellow medical bag, as well as shields charge as usual to a value of maximum 200, but this value decreases again and again slowly to the handicap value (unless you have enemy contact, then mostly faster… ). As said before, it's more for good players who don't want to spoil the game experience for everyone else. ## Game options Here are some graphic settings of the game, which are very important: • Reflections of light: Very classic graphic setting • Scoring marks: It's funny on walls, but it's just a gimmick. • Dynamic Lights: Very classic graphic setting • Target info: is the opponent's name shown when I aim at him, or not? • Synchronize Pictures: If on, all opponents have the same model you use. • Team Overlays: Displays the health and shields of your team mates at the desired location • Autom. Download: Should missing maps, models or mods be automatically downloaded from the server? • Simple Objects: Are items like weapons or ammunition 3D objects or just 2D bitmaps (looks really bad in 2D)? • Text: Can be German, English and French. • Dialogues: Can be English or German. ## Controls The “controls” may also require adjustment. An important feature of a good shooting game is that you can adapt the controls to your own needs, as in EF. • weapons: fits quite well from the start • Attack/Looking around is very important, because here you can set small things like Alt. Attack on the right mouse button. But this is a matter of taste. • Comments: It's a way to knock out chat messages. You should already have one, because the console is unwieldy. • Mouse/Joystick is quite important for people with a gamepad, because you can adjust the sensitivity. But it's rarely used. • Further options: Not very important unless you want to sneak (Always running turned off). ## HUD In principle, the HUD displays all relevant information. The standard view (without configuration changes like Net-Graph & Co.) looks like this: The individual elements are as follows: 1. Carryable item, see also Ultritium Mine ff., 2. Space for active items, several items may be displayed here at the same time, 3. an active item, see also Passively used items ff., 4. Remaining time until the item directly to the right loses its effect, 5. Score, here you can find kills, deaths or flag captures, 6. Remaining ammunition, does not necessarily reflect the remaining number of shots, see also Weapons, 7. Health-Bar, can range from 0 (dead) to 300 (slowly reduced to 100), 8. Shields (can range from 0 (none) to 200 (will be slowly reduced to 100), 9. The name of the current weapon is only displayed if you have just switched to this weapon, 10. Weapon selection, crossed out (8) are ammunition lots, the light purple (2) is the active weapon, the rest are available weapons, and 11. Chat area, where voice messages and server messages are displayed. ## Weapons and Items There is a set of standard weapons in Elite Force and a handful of hidden weapons (some of which can be used in mods or with cheats). Here is an overview: ### Weapons Virtually all weapons have two different fire modes. The normal mode is on the left mouse button, the alternative on ALT. The latter is usually put on the right mouse button by every player. Some fire modes differ considerably, others only differ in fire power and rate (and ammo consumption). Weapons can be switched by default with the scroll wheel and their number buttons. Weapons with surface damage (Splash-Damage) can also harm you. The respawn time of the weapons themselves is determined by the server. The respawn time of the ammunition is 40 seconds. The damage can be changed by a damage factor on the server side (e.g. 2 means twice as much damage) and by influencing the double damage factor (e.g. can also be four times instead of twice). #### Phaser The phaser is the minimum equipment. It has relatively little firepower, but its ammunition recharges itself. Therefore there is no ammunition item for it. The alternative mode causes more damage, but also drains the energy faster. At great distances it is largely useless because it is far too inaccurate. Medium and short distances are no problem. • Starting ammunition: 50 • Maximum ammunition: 50 • Ammunition cost primary mode: 1 • Ammo cost secondary mode: 1 • Ammunition item contains: 0 (there is none, weapon recharges by itself) • Key: 1 #### Phaser Compression Rifle The compression rifle deals considerably more damage, especially in alternative (sniper) mode. The latter becomes the only mode in disintegration mode. Especially in sniper mode you can still hit quite well at long distances. In the campaign, the rifle also has the ability to cause no noise in sniper mode. • Starting ammunition: 32 • Maximum ammunition: 128 • Ammunition cost primary mode: 1 • Ammo cost secondary mode: 8 • Ammunition item contains: 32 • Key: 2 #### I-Mod The I-Mod is, so to speak, the sister weapon of the compression rifle, with the difference that it is the only one that ignores the shields (including portable force fields!), i.e. strikes directly at the health instead of first reducing the shields. All other weapons first reduce the shields to zero and only after that subtract health. As with the compression rifle, the alternative mode is much stronger, but also costs more energy. • Starting ammunition: 15 • Maximum ammunition: 60 • Ammunition cost primary mode: 1 • Ammo cost secondary mode: 3 • Ammunition item contains: 15 • Key: 3 #### Scavenger Rifle The Scavenger Rifle is best compared to a submachine gun (scatters strongly, comparatively slow spread of the bullets), which shoots ballistically in the alternative mode plasma bursts (grenade launcher, does not bounce). The grenade launcher reaches medium ranges at most. The primary mode scatters strongly especially at longer distances, the secondary mode has splash damage. • Starting ammunition: 30 • Maximum ammunition: 100 • Ammunition cost primary mode: 1 • Ammo cost secondary mode: 5 • Ammunition item contains: 30 • Key: 4 #### Stasis weapon Most similar to a shotgun in primary fire mode. At short range it is very effective, at long range not, because the fired vortices are relatively slow. In alternate mode, it fires five spreading beams, similar to the compression rifle or the U-Mod. The middle one hits as well as the I-Mod. • Starting ammunition: 15 • Maximum ammunition: 50 • Ammunition cost primary mode: 1 • Ammo cost secondary mode: 1 • Ammunition item contains: 15 • Key: 5 #### Compound Grenade Launcher The grenade launcher is named just right. The primary mode shoots ballistic grenades that also bounce off walls and other obstacles. The alternative mode is similar, except that the grenade doesn't bounce off walls and other obstacles, but remains a mine on the obstacle. However, it triggers after a short moment. The trajectory is flatter but straighter than in primary mode. The range is relatively limited. In Specialties mode the mines remain permanently active and are equipped with a laser. If the laser beam is crossed by a player, the mine triggers. This allows to effectively trap a room. The line of fire is straight. Mines can also trigger each other if they are placed too close to each other. The splash damage of both modes can also hit you. The grenade launcher is not automatically used when you pick it up. • Starting ammunition: 10 • Maximum ammunition: 30 • Ammunition cost primary mode: 1 • Ammo cost secondary mode: 1 • Ammunition item contains: 10 • Key: 6 #### Tetryon Pulse Disruptor The Tetryon Pulse Disruptor is most comparable to a machine gun in primary fire mode. High firepower, beam fire, but some dispersion. On long distances you hit very badly with it. The alternative mode is especially interesting when the target is around the corner, because the fired bullets bounce several times, similar to the grenades of the grenade launcher, only without the effects of gravity. But the fire rate is much higher. • Starting ammunition: 40 • Maximum ammunition: 120 • Ammunition cost primary mode: 1 • Ammo cost secondary mode: 2 • Ammunition item contains: 40 • Key: 7 #### Photon Burst This weapon corresponds to the classic rocket launchers found in Quake 3 Arena or Unreal Tournament 2004. The primary mode fires a torpedo, with relatively much damage and relatively high airspeed. Splash Damage is extremely high. The alternate mode is similar. The torpedo has more firepower, pursues its target with limited agility, but spreads slower. In both cases a dodge is still relatively well possible. The weapon is not selected automatically when you pick it up. • Starting ammunition: 6 • Maximum ammunition: 20 • Ammunition cost primary mode: 1 • Ammo cost secondary mode: 2 • Ammunition item contains: 6 • Key: 8 #### Arc Welder The arc welder fires a lightning bolt, with relatively high damage, so to speak. The alternate mode shoots a kind of ball lightning that deals high damage and has a larger cross section. At medium to long distances, the weapon is not very accurate. • Starting ammunition: 40 • Maximum ammunition: 120 • Ammunition cost primary mode: 1 • Ammo cost secondary mode: 5 • Ammunition item contains: 40 • Key: 9 #### Assimilator The assimilator is only available in assimilation mode for Borg players. Both modes assimilate the opponent. It is a pure melee weapon, without ammunition or cost. It is activated by pressing the 1 key. #### Borg Weapon The Borg weapon is used in the campaign by the Borg, in multiplayer only by Mods. The assimilation mod uses it for the Borg team. The primary mode fires small plasma balls, similar to the Scavenger Rifle, the secondary mode fires a kind of lightning bolt. • Starting ammunition: 100 • Maximum ammunition: 100 • Ammunition cost primary mode: 1 • Ammo cost secondary mode: 1 • Ammunition item contains: 0 (Weapon recharges by itself, there are no ammunition items) • Key: 2 ### Other items used actively #### Tricorder The Tricorder is only available with the Expansion Pack. With the primary mode you can scan objects. The alternative mode shows a radar. • Key: t. #### Hypospray The Hypospray as a usable item is a healing item in the Specialties mod, which can be used by players with the role of Medic on other players. The difference in healing for alternate and primary modes is the amount of health boost for the recipient. • Starting ammunition: 50 for primary healing and 30 for secondary healing. • Ammunition cost primary mode: 1 • Ammo cost secondary mode: 1 • Ammunition item contains: 0 (there's no ammunition for it) • Key: h #### Ultritium Mine The counterpart to the Redeemer of Unreal Tournament is a small explosive charge, which you first have to lay, and which you can then detonate remotely. But it can, like the Redeemer, be destroyed beforehand by the enemy without exploding. The Splash-Damage is very high and in a larger radius the mine will move the players on the map. • Respawn time: 1 minute #### Portable force field Force fields can only be crossed by players of the own team (if available). They remain in place for one minute. In Pinball Mod, the effect is changed so that nobody is allowed to touch the force field, otherwise they die immediately. The force field can be destroyed by weapons prematurely. A single photon torpedo with double damage, for example, destroys it instantly. • Duration: 25 seconds • Respawn time: 1 minute #### Emergency transporter The emergency transporter beams the player to a random spawn point on the map. In CTF mode it also drops the flag. • Respawn time: 1 minute #### Med kit Restores the player's health to 100. If he is already at 100, he gets 25 more. • Respawn time: 1 minute ### Passively used items There are various items that give you bonuses or special abilities. Some of them have a temporary effect. If you lose those, the person who collects the item will continue with the same countdown where the previous owner left off. #### Quantum Weapon Enhancer A classic double damage booster. The usual standard value is doubling the damage effect for the wearer, but this can be adjusted with cvars. • Duration: 30 seconds • Respawn time: 2 minutes #### Seeker Drone Fires at nearby enemies once every second. • Duration: 30 seconds • Respawn time: 2 minutes #### Jetpack The jetpack lets the player fly freely. Jumping acts as flying upwards, ducking as flying downwards. Otherwise the normal direction keys and the mouse are used. • Duration: 30 seconds • Respawn time: 2 minutes #### Speedboots Make the wearer twice as fast, not only when running but also at the fire rate. • Duration: 30 seconds • Respawn time: 2 minutes #### Cloaking field Makes the player almost invisible. • Duration: 20 seconds • Respawn time: 2 minutes #### Metaphasic Shields Makes the player invulnerable. • Duration: 20 seconds • Respawn time: 2 minutes #### Nano-regenerative shield Recharge the player's health in steps of 5 per second. • Duration: 30 seconds • Respawn time: 2 minutes #### Emergency Hypospray The emergency hypospray charges up to 25 health at a time, but is capped at 100 total health. If one already has 100 health, it is not even taken up. • Respawn time: 30 seconds #### Booster Hypospray The boosert hypospray recharges 5 health, up to a maximum value of 200 (for action heroes 300). Once the maximum value is reached, it is not taken. However, since (with the exception of action heroes) your health will automatically decrease by one per second, you'll almost immediately take one again. • Respawn time: 30 seconds #### Small shields Charges five shields to a maximum of 200. • Respawn time: 20 seconds #### shield armor dark Charges 50 shields to a maximum of 200. • Respawn time: 20 seconds #### Shield armor bright Charges 100 shields to a maximum of 200. • Respawn time: 20 seconds ### Shield damage vs. health damage All weapons cause damage, that's trivial. But not all weapons always cause the same type of damage. Apart from the obvious difference between area damage from grenades and Co. and targeted weapons, there's a small detail difference with the I-Mod which ignores shields completely (even portable force fields!). In general: First the shields are reduced. Only then the health is attacked. Shield damage looks like this from the attacker's point of view: You can see the impact cloud of the rifle and the movement effect on the player model, but not more. From the attacked player's point of view it looks like this: When the rifle hits 18 shields are taken off, but the health is not affected. This also applies to area damage if it does not use up all the shields: The damage to the shields here is 78. However, the weapon does not yet affect the health. Only with 0 shields the health is reduced. From the attacker's point of view this is how it looks (I-Mod ignores shields): You can clearly see the bright sparkle effects in addition to the other effects. From the attacked person's point of view it looks like this: The I-Mod does 23 damage to health, while the shields are not affected at all. However, you can also tell from the glittering weapon model that you are taking health damage yourself, without any value display at all. With shields you don't see any of this. The transition can be seen particularly well with the phaser, since it deals relatively little/slow damage: Or the values: First the remaining shields are used up, then the health. Especially for weapons with a lot of damage (or with a Quantum Weapon Enhancer active) it can happen that you remove the shields with a single hit and cause health damage. The animation then corresponds directly to the health damage. ## Recommendations/Achievements In EF there are various achievements that can be accomplished. Some of these are already displayed during the game, others are only announced at the end of the match. Here is a complete list of these achievements: ### During the match Symbol Title Description First Strike Who takes the first frag Impressive With the [#I-Mod] or the [#Phase Compression Rifle] two hits with the alternative mode (sniper) in a row or simultaneously. Excellent Two frags within a very short time. Ace 5 frags without being fragged yourself. Expert 10 frags without being fragged yourself. Master 15 frags without being fragged yourself. Champion 20 frags without being fragged yourself. - Denied An opponent grabs an item directly before you reach it. ### After the match Symbol Title Description Efficiency 50% accuracy during the match Sharpshooter At least five times “Excellent” Untouchable Not being fragged a single time Logistics Collect a lot of items Tactician Achieve at least one frag with every available weapon Demolitionist A lot of explosive weapons frags. ### After CTF matches Symbol Title Description MVP (“Most valuable Player”) The player who scored the most points for the team. Defender The one who shot down the opponent most often when carrying his own flag. Interceptor The player who returned his own flag the most. Warrior The player with the most frags. Carrier The one who delivered the enemies flag most often. Bravery The player most frequently fragged. ### Section 31 There is, based on existing graphics and sounds, another recommendation, namely “Section 31”. However, this is designed in the code in such a way that it can never be displayed. Based on the commented lines here (function CalculateSection31Award) it probably requires the following things at the same time: • At least 75% accuracy, • Untouchable, • Champion and • Sharpshooter. ## Maps, mods and models As with all popular games that make it possible, EF also offers maps, mods, or models (player skins) created by private individuals. Basically the same applies to all three: Download from the provider, read the Readme and act accordingly. If there is no readme or no installation instructions, copy the *.pk3 files into the baseEF directory of the EF installation. All maps and models, but also most mods, are created as *.pk3 files. A *.pk3 file is basically nothing more than a renamed *.zip file containing all the data needed to run the map, model, or mod. A few maps need the expansion pack for EF, because otherwise needed textures are missing or the map won't work. After you have copied the files into the proper folders, you should be able to select the maps or models directly in the game. A few maps are an exception, because they are only accessible with the command /map <mapname> (not in the selection menu). <mapname> is of course the name of the map you want to load. (This is because there is no map description included. This would be an *.arena file in the folder scripts, which describes (among other things) which game types are playable with it.) Often you can only tell if mods are used in the game when weapon skins are changed or something similar occurs. ### Mods Mods can enrich the gaming experience considerably, e.g. the pinball mod (the opponent must be shot out of the playing field instead of being fragged). However, some have the problem that the original game can no longer be played. Mods are not to be mistaken for modes, which are built in by default, e.g. the disintegration mode (only Phaser compression rifle, always on alternative fire mode, but unlimited ammo). Here are some videos about mods for EF 1: And some actual mods: Several mods are still used today permanently running on many servers. Below are some of them: ### pak92.pk3 Some of you may have wondered why version 1.37 is displayed, although you were 100% sure that you started the original binary (possibly cracked), which would be version 1.2. Under these circumstances, it makes sense to check the baseEF folder to see if the file pak92.pk3 is located there. This has the same effect. It is part of Thilo's work. There is a distinction between doing something in the binaries (or libraries) and precompiled QVMs (a kind of sandboxing method of Quake 3 to compile code portably). Some of the functionality is implemented in the QVMs that are shipped in pk3 files. Even without your binary being version 1.37 you will get a version 1.37 display through the pk3 archive. But it is obviously a bit confusing that the displayed version doesn't have to be the same as the binary version anymore. Some things that have been changed (probably based on Thilo's diffs): • Improved random functions in q_math, • Change in shield thickness (there was a bug here that caused the thickness to depend on how the shield was activated), • Prohibition of suicides in assimilation mode (if used correctly, it would prevent you from assimilating a Federation player, because he could kill himself quickly before, and spawn again), • Exclusion of forbidden characters in the nickname, • localhost doesn't need a password to join anymore and • Client-side ignore functions. ### Models In principle, models are skins for the character, weapons or even new crosshairs. But models have a drawback: If the server doesn't have them as well, the client switches to the standard model. So (after some tests with EF 1.2) you don't become invisible or something similar. If the server also has the model, it will be downloaded from the clients anyway and will be available for everyone. ### Maps The least problematic are maps. It is only important that everyone plays the same version and that additional *.pk3 files required by a map are present, too. Most of the time you will only find the latest version of a map anyway, or the older ones are marked as such. When choosing the maps for a dedicated server, it is important that as many people as possible have the maps (or not too many custom maps are needed), or can get them quickly (e.g. a put map pak on an FTP, because the standard download via EF simply takes really long, see also Accelerating Map Downloads) and that the maps are not all too computation-intensive. Especially on older computers, oversized or over-detailed maps can stutter, which is not very good for a fast game like EF. On current systems, however, this is no longer an issue. It is enjoyable when a map is not played for too long. Each player has one or the other map on which he/she will not get anywhere. Therefore the limits (time, capture, kills) should be chosen carefully and with consideration of active modes and mods. Rough guidelines are 30 kills/5 captures, 15-20 minutes time limit. Then there won't be anything like 100 kills 10 death or so. On some maps, for example, the one with the arc welder is simply almost unbeatable. So it's no fun to experience 100 kills first hand. Also it should be a quite varied selection of maps. First CTF and then DM on the same map is boring. Suitability for certain modes or game types should also be considered. Disintegration, for example, plays better on larger maps than on smaller ones. The number of players should also be considered. On a huge map with few players there is no fun, on a crowded map there is also no fun. However, the former can be compensated by filling the map with bots. The command to call maps (/map <mapname>) is applicable to all maps, but is only really necessary for a few. It is important that the name of the *.pk3 file in the maps folder of the *.pk3 file is used instead of the name of the *.pk3 file. With this name maps are also invoked for map cycles of a dedicated server. However, this means that the *.pk3 file can also have a completely different name than the actual map (e.g. pak0.pk3 from the base installation contains a variety of maps, not just one). When in doubt, check it first. It helps to name the *.pk3 the same way as the *.bsp. (If it doesn't contain multiple maps.) The case doesn't matter when calling this command. It may also be important whether a map can be played with bots (i.e. has waypoints). This can be recognized by the fact whether in the folder maps of the *.pk3 there is also an *.aas file with the name of the map. If this is not the case, bots cannot play on the map. #### Standard Maps As in most games, Eliteforce comes with a set of maps that everyone who has installed the game will have. In a broader sense, it can be considered standard maps if you take the Expansion Pack's maps into consideration. Many have them, but not necessarily everyone. Here is a list of the maps that come shipped with EF (in the pak0.pk3): Level Screenshot Mapname Game Types Recommended number of players Rec. Frag Limit ctf_and1 CTF, TDM, FFA 10 - ctf_kln1 CTF, TDM, FFA 10 - ctf_kln2 CTF, TDM, FFA 12 - ctf_voy1 CTF, TDM, FFA 8 10 ctf_voy2 CTF, TDM, FFA 8 15 hm_borg1 TDM, FFA 6 10 hm_borg2 TDM, FFA 8 20 hm_borg3 TDM, FFA 12 25 hm_cam TDM, FFA 6 20 hm_dn1 TDM, FFA 12 15 hm_dn2 TDM, FFA 16 20 hm_for1 TDM, FFA 8 10 hm_kln1 TDM, FFA 6 10 hm_noon TDM, FFA 4 10 hm_scav1 TDM, FFA 8 15 hm_voy1 TDM, FFA 12 15 hm_voy2 TDM, FFA 8 10 #### Expansion Pack Maps The following maps are regularly included in the Expansion Pack (in the pak3.pk3): Level Screenshot Mapname Game Types Recommended number of players Rec. Frag Limit ctf_breach CTF, TDM, FFA 12 20 ctf_dn1 CTF, TDM, FFA 8 15 ctf_for1 CTF, TDM, FFA 12 15 ctf_neptune CTF, TDM, FFA 6 10 ctf_oldwest CTF, TDM, FFA 6 15 ctf_reservoir CTF, TDM, FFA 8 15 ctf_singularity CTF, TDM, FFA 8 20 ctf_spyglass2 CTF, TDM, FFA 8 10 ctf_stasis CTF, TDM, FFA 4 10 hm_altar TDM, FFA 8 10 hm_blastradius TDM, FFA 8 15 hm_borgattack TDM, FFA 8 20 hm_for2 TDM, FFA 10 15 hm_raven TDM, FFA 4 10 hm_temple TDM, FFA 8 25 hm_voy3 TDM, FFA 6 20 #### Elite Force Player Maps There are some additional maps on the Expansion Pack CD. They are called “Elite Force Player Maps”, and are located as installer EliteForcePlayerMapsGM.exe in the directory Setup/PlayerMaps. This installer places only the file playermaps.pk3 in the BaseEF folder. This *.pk3 contains the following maps: Level Screenshot Mapname Game Types Recommended number of players Rec. Frag Limit borg210 TDM, FFA 8 20 ctf_ambushv2 CTF, TDM, FFA 8 25 ctf_thebunkerv2 CTF, TDM, FFA 6 20 hm_209 TDM, FFA - 30 shipwrecked TDM, FFA 8 10 #### Bonus Holomatch Map Pack There is a handful more maps created by Raven Software that were not shipped on the CDs. They were only available via the Internet, as map pak or single maps. They are available as files ctf_geothermal.pk3, ctf_spyglass.pk3 and stvef_mappack.zip. ( For example here and here.) In stvef_mappack.zip you can find the actual map file raven_trekmaps1.pk3. It contains the three maps ctf_canyon, ctf_space and hm_dn3. Level Screenshot Mapname Game Types Recommended number of players Rec. Frag Limit ctf_canyon CTF, TDM, FFA 10 20 ctf_geothermal CTF, TDM, FFA 10 20 ctf_space CTF, TDM, FFA 6 20 ctf_spyglass CTF, TDM, FFA 6 20 hm_dn3 TDM, FFA 6 20 #### Map creation Somebody else should write something about the actual creation of the maps. Nevertheless, here are some of the information I've come across. First of all the format of the map files: As mentioned above, these are basically *.zip files that contain textures and map geometry as well as bot data and possibly additional sounds. ##### Bots Maps don't have native bot support. You can easily find out if they support them by looking into the *.pk3 folder maps. (If this is not available, the *.pk3 is not a map file, but either a support file (e.g. with additional textures or sounds) or a model or bot.) If it contains an *.aas file with the same name as the actual map (*.bsp), somebody went to the trouble of giving the map bot support. In principle, this can also be retrofitted. Therefore you have to convert the *.bsp file from the *.pk3 with BSPC into a *.aas. A command line looks like this: bspc -bsp2aas <pk3-file>/maps/bspfile.bsp The file obtained can then be copied back into the *.pk3 folder maps. There are a number of other BSPC functions that are not explained here. For Windows, there is a BSPC GUI to make your work easier. Most of the time, however, on maps that don't have bot support, not only was the mapper too lazy to do it, but there are technical problems preventing them from retrofitting the waypoints. But you can still try it if you're not sure. ## Abbreviations The following abbreviations might be interesting: • CTF = Capture the Flag • FFA = Free For All (=Deathmatch) • TDM = Team Deathmatch • PIN = Pinball • DESI = Desintegration (everyone has only sniper rifle which can only fire in sniper mode) ## Screenshots Since some people like to keep statistics on LANs, or just like to have a look at some screenshots afterwards, there is the function either as a menu item when you press ESC during the game, or much easier, with the F11 key. I always recommend to do this at the end of a map, when the list with the points is presented. This is often most meaningful if you take a closer look. ## Demos In EF there is also the possibility to create and view demos. Demos are, so to speak, the life version of the stats. Demos can be created with the following console commands (you can reach the console with the ^-key in the upper left corner of your keyboard or with ~ in ioQuake3 derived versions of EF): • Preparation: /g_synchronousClients 1 • Record demo Demoname: /record Demoname • Disable synchronization: /g_synchronousClients 0 (otherwise the game stutters) • Stop recording: /stoprecord • Watch Demo demoname: /demo demoname The stored demos can be found in the directory baseEF\Demos of the EF installation (or your home folder, when using ioQuake derived EF versions). You can share them with other players. By the way, there is also a much more convenient way to view demos using the Demos command in the main menu of the Holomatch. Simply select and off you go. ## Cheats These cheats work only in single player (no, not even if you only add bots in multiplayer). If you enter them in the multiplayer, they go out as chat messages, which probably causes corresponding reactions by the other players… The cheats can only be used if you activate them. Either you already have sv_cheats 1 in your single player config, or you enter it into the console. Then the following codes work: sv_cheats: ### Cheat list Cheat Effect give # Give item with number # (see list) give weapons All weapons available give health # Sets health to the value # (1-200) give armor # Sets the armor to the value # (0-200) give weaponnum # Gives the weapon with the number # (see list) name # Set your own Nick to “# model # Set your own model to ”# setviewpos X Y Z (R) Sets you at position X,Y,Z, with the rotation angle R ui_closingcredits Show credits dir video Displays the list of available videos cinematic <movie> Plays the video <movie> give tricorder Gives you the Tricorder undying Health and armor set to 999 noclip You can fly and walk through walls notarget Enemy units no longer consider you a target map_brig Hidden level cg_thirdperson 1 Third person view on (0 for off) cg_thirdpersonrange # Setting the distance to the character devmap # Activate cheats on a server for the map # map # Starts the map # kill suicide quit End game god God mode ### items Number Item 1 Phaser 2 Phase Compression Rifle 3 Scavenger Rifle 4 Tetryon Pulse Disruptor 5 I-MOD 6 Tricorder 7 Health 8 Ammo 9 Weapons 10 All 11 Stasis Weapon 12 Grenade Launcher 13 Photon Burst 14 Arc Welder 15 Armor 16 Paladin Weapon 17 Desperado Weapon 18 Klingon Blade 19 Bot welder 20 Bot laser 21 Bot rocket 22 Forge proj 23 Forge psych 24 Parasite 25 Borg weapon 26 borg taser 27 Paladin weapon 28 All ## Config parameters This list contains frequently used config parameters. However, it is certainly not complete. Variable Meaning/effect com_zoneMegs "x" Probably(!) the memory in MB EF is allowed to use for items. com_soundMegs "x" Memory in MB that EF is allowed to use for sounds. com_hunkMegs "x" Working memory in MB that EF is allowed to use as a maximum. System limits such as the 2 GB limit under XP cannot be exceeded! m_filter "x" Mouse filter, if set to 1 instead of 0 (default), mouse movements will be more smooth in_joystick "x" Should a gamepad/joystick be used? (1=yes, 0=no) in_mouse "x" Should a mouse be used as an input device? (1=yes, 0=no) g_subtitles "x" Should subtitles be displayed? (2=in cinematics, 1=yes, 0=no) r_finish "x" Set to 1 if laggs occur due to problems with the input devices. This will make the FPS slightly less, but the timings will be fine again. r_ignorehwgamma "x" If set to 1, EF itself controls the gamma values (or you can adjust them from the game), otherwise it is the graphics card (is very useful under XP, because EF often ignores the brightness settings, so with original EF versions you better set it to 0). cg_autoswitch "x" Should the game automatically switch to weapons that have just been collected? (1=yes, 0=no) cg_drawAmmoWarning "x" Should there be a warning when the ammunition count is low? (1=yes, 0=no) cg_draw2D "x" Should 2D images be used instead of 3D rendered images for items? (1=yes, 0=no), also affects the HUD cg_drawCrosshair "x" Which crosshairs are displayed? (0=none, otherwise numbered up to 10) cg_crosshairSize "x" Size of the crosshairs, 24 is default cg_drawCrosshairNames "x" Should the player names be displayed at the crosshairs when both are close? (1=yes, 0=no) cg_drawFPS "x" Should the current FPS rate be displayed? (1=yes, 0=no) cg_drawGun "x" Should the model of the weapon currently in use be drawn? (1=yes, 0=no) If no, you have a little more overview and the FPS rate increases a little, but which weapon you are currently using, you have to find out another way. cg_forceModel "x" Are the same models used for all players in multiplayer? (1=yes, 0=no) Has advantages especially when people run around with models you don't have yourself. Otherwise they get random models, or your own model anyways. But it has the disadvantage that you can't distinguish individual players from each other anymore. cg_marks "x" Should hit marks remain on walls? (1=yes, 0=no) cg_shadows "x" Should shadows be displayed? (2=volumetric, 1=spherical, 0=none), see also r_stencilbits, mode 2 must be supported by the graphic card cg_simpleItems "x" Should items be displayed in 3D (1=no, 0=yes)? 2D looks worse, but increases the FPS com_FirstTime "x" Has the intro not been played yet? (1=yes, 0=no, if no, it will be played once after the start of the game) cg_bobup "0.00x" Determines how strongly the player “oscillates” when walking, 0 switches off the oscillation completely. cg_bobpitch "0.00x" Determines how strongly the player “swings” when walking, 0 switches the sway off completely. cg_bobroll "0.00x" Determines how strongly the player “wiggles forwards/backwards” when walking, 0 switches off the wiggle completely. cg_runpitch "0.00x" Determines how much the player “swings” when running, 0 switches the sway off completely. cg_runroll "0.00x" Determines how much the player “wiggles forwards/backwards” during the race, 0 switches off the wiggle completely r_allowSoftwareGL "x" Should the game be software rendered? (1=yes, 0=no), only makes sense if you actually have difficulties with normal rendering r_clear "x" Should gaps between textures be filled? (1=yes, 0=no) Looks better, but consumes more computing power. r_colorbits "x" Color depth, 16 or 32 (bit), see also r_depthbits r_depthbits "x" Similar to r_colorbits, only with 0 bit the setting for the Windows desktop is taken over. r_detailtextures "x" Should improved textures be used? (1=yes, 0=no) r_displayRefresh "x" Screen refresh rate, should be set to the same value as the maximum output of the monitor. On modern LCD monitors, the maximum refresh rate is 60, or 120 for 3D capable monitors. r_drawSun "x" Should sunlight be rendered? 1=yes, 0=no, Only applies to maps with sunlight on them. r_dynamiclight "x" Should dynamic lights be rendered (e.g. shimmering lights from explosions)? 1=Yes, 0=No r_ext_compress_textures "x" Should compressed textures be used? 1=yes, 0=no, switched off looks better, but puts a much heavier load on the system r_ext_multitexture "x" Should multi-texturing be used (multiple layers of textures simultaneously)? 1=yes, 0=no r_ext_texture_filter_anisotropic "x" Should anisotropic filters be used? 1=yes, 0=no, you should use it for optical reasons, everything further away will be displayed sharper then r_fastsky "x" Should sky and portals not be rendered instead of the visually more appealing variant? 1=Yes, 0=No r_gamma "x.y" Gamma brightness value, the default value is 1.0 r_lodbias "x" Model detail level, values between 0 and 2 are allowed, with 2 least detailed, but highest FPS rate. r_nocull "x" Should everything be rendered, or only visible parts? 0=all, 1=visible only r_nocurves "x" Should curves be rendered? 1=yes, 0=no, has a strong effect on appearance and performance r_norefresh "x" Should all screen updates be omitted? 1=yes, 0=no, should stay at 0, otherwise nothing else will happen. r_overBrightBits "x" total brightness, 0 = no additional brightening, 1 is normal  r_mapoverbrightbits brightness of the maps, 0=no additional brightening, 1 is normal r_picmip "x" Mipmap level, values from 0 to 4 are allowed, affects image quality, 4=fastest, 0=optically best, but slowest setting r_smp "x" Should multiple processors be used? 1=yes, 0=no r_stencilbits "x" template buffer, affects volumetric shadows (cg_shadows), should be set to 8 when used. r_subdivisions "x" Complexity of curves, 1 is the optically best, but slowest value, 999 is the fastest, but most angular value r_swapInterval "x" Vsync, should Game-FPS and actual (vertical) repetition frequency be adjusted? 1=yes, 0=no, 0 is actually only for benchmarks, since more than the physical repetition frequency is not displayed anyway r_texturebits "x" Should 16 or 32 bit textures be used? r_textureMode "x" texture mode, can have the values GL_NEAREST_MIPMAP_NEAREST (worst), GL_LINEAR_MIPMAP_NEAREST (linear, default), GL_NEAREST_MIPMAP_LINEAR (bilinear=second best) or GL_LINEAR_MIPMAP_LINEAR (trilinear=best) s_a3d_weapons "x" A3D weapon sounds (e.g. reverberation)? 1=Yes, 0=No s_enableA3D "x" A3D on? 1=Yes, 0=No s_khz "x" Sample rate, 22 or 11 (kHz) s_loadas8bit "x" Should 8bit samples be used? 1=yes, 0=no, should usually be off, even if it slightly reduces system performance s_volume "x" Volume from 0 to 1 s_musicvolume "x" Music volume from 0 to 1 s_volumeVoice "x" Voiceover volume from 0 to 1 s_doppler "x" Doppler effect, from 0 to 10, should normally be left at default value (= not in config or commented out) s_reflect "x" Audio reflections on? 1=yes, 0 =no s_occlude "x" Dampening/environmental influences on the sound? 1=yes, 0 =no s_geometry "x" A3D post-processing for geometry influences on? 1=yes, 0 =no s_geom_reverb "x" Geometry influenced reverberation? 1=yes, 0 =no s_mixahead "x.y" Pre-calculation of sound, the higher, the higher the system load s_numpolys "x" Maximum number of A3D polygons used for calculation, the higher, the better the 3D sounds, but the more system load, 0=off s_initsound "x" Should sound be used at all? 1=yes, 0=no (is not the same as volume at 0!) s_2dvolume "x" Volume of 2D sound from 0 to 1 cg_lagometer "x" Should the lagometer/netgraph be displayed? 1=yes, 0=no snaps "x" World updates sent to client per second, 30 is a good start value, but may need to be adjusted depending on your connection. rate "x" Data rate in bytes/sec., depends on own connection speed, can help with too high pings if you reduce the value. com_maxfps "x" Maximum frame rate, you should rather not use it, rather use cl_maxpackets. cl_maxpackets "x" packets per second sent to the server, 30 is for V90 modem, for DSL or dedicated lines you can certainly go further up here cg_deferPlayers "x" Delay of model shop? 1=yes, 0=no, delays the reloading of models when other players join, so it's not exactly that moment. The reload will take place at the next spawning. cl_timenudge "x" Simulate ping lagg, negative values can reduce problems when playing online (-½-use average ping) cl_packetdup "x" Package duplication, helpful in case of loss, because packages are sent multiple times cg_predictItems "x" item predictions? 1=yes, 0=no, should be left at 0 with good connectivity, because on 1 it sometimes results in incorrectly collected items at the client, which were not picked up at all cl_nodelta "x" Deactivate delta compression? 1=yes, 0=no, you should always leave if at 0 net_noipx "x" Should IPX be deactivated? 1=yes, 0=no, should be 1, if you can't use IPX (e.g. Win Vista and newer on 64 bit) net_noudp "x" Should UDP be deactivated? 1=yes, 0=no, should always be 0, because IPX doesn't work over the Internet anyway. cl_allowDownload "x" Should missing maps be downloaded automatically? 1=yes, 0=no name "x" Name of the player model "x" Model/Skin of the player cg_drawAttacker "x" Should the question be followed by the name of the person who asked the question? 1=yes, 0=no cg_drawIcons "x" Should icons for armor, health, and ammo be displayed in the HUD? 1=yes, 0=no cg_draw3dIcons "x" 3d-display of items on? 1=yes, 0=no cg_gibs "x" Splatter effects, 1 = yes, 0 = no com_blood "x" Blood on? 1 = yes, 0 = no ui_team_friendly "x" Friendly Fire on? 1 = yes, 0 = no ui_ctf_friendly "x" Friendly Fire for CTF? 1 = yes, 0 = no cg_drawtimer "x" Show timer 1 = yes, 0 = no cg_drawTeamOverlay "x" Should a team overlay be displayed? 1=yes, 0=no ## Commands in the game Command Effect set xyz blah If the variable xyz is set to the value blah, it can also contain other variables, which can then be used as substitutes, e.g. set a foo and set b "a bar" set g_synchronousClients 1 Synchronize client and server continuously /record demoname Starts a demo recording called demoname /disconnect Disconnect from the server /demo demoname Plays the demo with the name demoname. /rconpassword "password" Sets the rcon password for the client. Here it is important not to forget the / at the beginning, because otherwise the rcon password will be trumpeted as a chat message for all players(!). It's best to bind it on one of the keys. /rcon command Issues the command command on the server if you have previously authenticated yourself with rconpassword. ## Commands Commands are entered on the in-game console with a / first. On the server console itself (if you're using the GUI version) you don't need it. Command Effect cmdlist Print list of available commands cvarlist Output list of available cvars map xyz Switches to the map with the file name xyz. serverinfo Displays server settings such as protocol, name, limits, etc. meminfo Displays memory information status Display of player data, e.g. num, score, ping, name, address, port, rate dumpuser Displays player information such as name, sex, skill etc. kick ID Kick players with ID addip IP Block player with IP removeip IP Unblock player with IP g_banIPs show currently banned IPs addbot BOTNAME Add bot with name BOTNAME exec CONFIG Executes the config file CONFIG. killserver Ends the current map (not the server) svsay MESSAGE Send the text line MESSAGE to all players like a console message reconnect reconnect to the server password "xxx" Set password, e.g. to join a server vid_restart Restarts video output, useful if you have changed a video setting bind taste "befehl1; befehl2;" Automatic execution of commands and scripts on a single button echo "text" Outputs the text text. team x Change to Team x, with s=Spectator, r=Red, b=Blue condump <filename> Saves the previous console output to the specified file. writeconfig <filename> Writes the current settings to the specified file. dir <foldername> Displays the files (incl. in *.pk3 files) in the specified folder. path Lists the current search paths (also *.pk3 files) and the open files. map_restart Restarts the current map protocol Displays the protocol version of the current server. ## Variables Variables are usually set with set or a derivative thereof by the principle set variable "value". set variation Meaning set sets a cvar seta sets a cvar and marks it as archive (meaning it will be included in the config, in hmconfig.cfg in the respective mod folders or baseEF) sets sets a cvar marks it as server information sett sets a cvar marks it as a tool setu sets a cvar marks it as user information sv_ at the beginning usually stands for server variables, cl_ at the beginning usually stands for client variables. Here is a list of variables with their meanings: Variable Meaning rconpassword Sets the password for rcon commands server-sided rconAddress Variable for address of remote server sv_hostname Name displayed in the server list and when joining sv_maxclients Maximum number of clients allowed sv_maxPing highest permitted ping sv_minPing smallest permitted ping sv_allowdownload Are uploads to the clients allowed? 1=yes, 0=no sv_pure Do the files at the client have to have the same checksum and file sets as on the server? 1=yes, 0=no sv_killserver Are clients able to issue a killserver command? 1=yes, 0=no sv_mapChecksum Should client and server files be compared? 1=yes, 0=no sv_nopredict May the client use predictions? 1=no, 0=yes sv_privateClients May only clients with a password join? 1=yes, 0=no sv_privatePassword Password for server access sv_floodProtection Sets a protection against too many chat messages 0 = off, 1 = on) timescale Sets server timescale modifier sv_reconnectlimit Maximum number of reconnects for clients sv_serverid Sets a server ID (use is unknown) sv_showloss Should the loss to the server be displayed? 1=yes, 0=no sv_timeout Set server timeout sv_zombietime Sets the time after which inactive clients (zombies) are kicked. g_needpass Activates or deactivates the server password (0=off, 1=an) logfile 1 = logfile is created, 0 = no logfile g_log Sets the name of the log file, will be created automatically in the configuration directory (e. g. $Home/.stvef/baseEF or baseEF of the game)
net_port UDP port on which the EF server is to be accessible
g_motd Message of the day (supposedly a file can also be entered here, this is still to be tested)
cl_motd 0 deactivates “Message of the day” display (will be shown when loading the map on the client), default is 1.
g_allowvote Are votes allowed? 1=Yes, 0 =No
g_dmgmult Damage multiplier, default is 1.
g_gravity Gravity, default=800
g_speed Running speed, default=300
g_forcerespawn Should players be forced back into the game when fragged? 1=yes, 0=no
timelimit Maximum runtime of a map
fraglimit Frag limit, at which the map ends, applies to all players of a team together in TDM, in assimilation and elimination mode, has no effect on CTF
capturelimit Capture limit at which the map ends, only affects CTF matches
g_gametype Game type, 0=FFA, 1=1on1, 2=Single player, 3=Team Holomatch, 4=CTF
g_pModActionHero Mode Action Hero, one player is the Hero, has more health, more weapons, but is the preferred only target, because his frag counts 5 points, and the attacker himself becomes the Hero, 1=activated, 0=deactivated.
g_pModAssimilation Assimilation mode, Starfleet battles Borg. Either you play for Starfleet and try to eliminate the Borg Queen, or as Borg Drone/Queen, and assimilate the opposing team to win more drones and finally win the match, 1 = activated, 0 = deactivated.
g_pModDisintegration Disintegration mode, there is only one weapon that kills immediately, can be combined with g_pModElimination, 1 = enabled, 0 = disabled.
g_pModElimination Whoever was killed is out until the last player is determined to be the winner, 1 = activated, 0 = deactivated.
g_pModSpecialties Specialist mode, each player has a class with special abilities and weapons, 1 = enabled, 0 = disabled.
g_teamforcebalance Should the server automatically balance teams in terms of numbers? 1=yes, 0=no
g_teamautojoin Should a starting player be automatically assigned to a team? 1=yes, 0=no
g_friendlyfire Is friendly fire on? 1=yes, 0=no
g_warmup duration Warmup duration that is not evaluated, specification duration in seconds, default=5
g_dowarmup Should the warmup be turned on 1=Yes, 0=No
g_quadfactor Sets the amplification for “quad damage” to the specified factor.
g_filterban Activate bans
bot_minplayers Minimum number of players per team to be filled with bots if necessary
bot_nochat Should bots be prevented from getting chat messages out? 1=yes, 0 =no
g_holointro Should the holodeck intro be played when joining? 1=yes, 0 =no
g_weaponrespawn Time in seconds for collected weapons to reappear
sv_allowdownload Is downloading from the server allowed? 0=no, 1=yes, default, 2=?, 4=UDP downloads are disabled, 8=no client connection interruption during download
cl_allowdownload Are downloads allowed by the client? 1=yes, 0=no
sv_dlURL Web/FTP address from which maps are to be loaded instead of directly from the server.
g_knockback Recoil
cg_thirdperson 1/0 Activate/deactivate third person mode
cg_thirdpersonrange x Setting the distance to the character
cg_drawtimer 1 Display timer for remaining time (without limit the time played so far is displayed)

Variables that are unclear:

Variable Meaning
teamflags team game flag
dmflags deathmatch flags
sv_running server status

## Network/Internet Server

### Network/Net Settings

In the menu item Sound/Network there is a little thing that shows its charms especially in multiplayer: Data rate should be set to LAN/CABLE/xDSL so that the game can be played with maximum network performance. By the way, it can also speed up the map download, but you should take care of maps while using original EF before playing (it takes too long in vanilla EF).

If you want a more exact definition, you can also directly adjust the net settings. The default values are already OK for low-end connections such as 56k modems. But in times of broadband connections you can often avoid a lot of laggs by setting the values yourself. The following applies to all values: In case of doubt, it depends on your own Internet connection what values make sense. If, for example, you overdo it with the rate or the snaps, it is possible that you are provoking laggs because your own connection is overloaded. Nevertheless, here are a few guideline values that should give good results when bandwidth is not too low:

• snaps "40": number of times per second the world is updated from server to client. It makes little sense to enter more than the achievable FPS number here. But the upper limit is 125 anyway. The more often the world is updated, the smoother the game is.
• rate "25000": Bandwidth for the game in bytes/sec.. This also affects the speed at which maps can be downloaded. The more, the better. However, it also depends on the server how much it provides.
• cl_maxpackets "60": How often per second should the client refresh its status? Again, more than 125 makes no sense and more than the FPS number makes little sense. Especially here you can exaggerate if your upload is not enough to achieve this update rate.
• cl_packetdup "1": How often should packages be repeated? This is especially useful if you have a connection that is lossy (a lot of loss). Again, don't overdo it if you're not sure that the connection will provide it. Especially in conjunction with the other settings, this can overload the line very quickly, because with each additional repetition the other settings are doubled. But you never get beyond the rate.

(Source)

### Join Server

Currently the Mobile Infantrie offers three servers for EF:

• www.mobile-infanterie.de:27960: “EF Vanilla @ Mobile Infanterie”, only standard maps and modes/mod,
• www.mobile-infanterie.de:27961: “EF Classic @ Mobile Infanterie”, no mods, DM/CTF and other modes mixed,
• www.mobile-infanterie.de:27962: “EF Pinball @ Mobile Infanterie”, Pinball mod and
• www.mobile-infanterie.de:27963: “EF Teamelite @ Mobile Infanterie”, Team-Elite mod.

Joining servers is straightforward. The menu path is as follows:

• Multi MatchSearch for server, or
• Multi MatchSpecify Server.

The latter is recommended if you know the IP and port of the machine running an EF server on the LAN and especially if the server is not running on the standard ports 27960 to 27963. Then a server query fails in the LAN.

On the other hand, there are a few subtleties. Since you can play EF not only on the LAN, but also on the Internet, EF distinguishes between Internet1, Internet2, …, Local and Favorites. Internet1 to Internetx runs via Masterservers, which fortunately still run in part. Instead of the ingame search you can use the program Pathfinder when searching server for EF.

But for pure LAN servers you have to select Local. EF simply asks all computers in its own subnet whether servers are running on the computers in the network. (See the Local server queries via broadcast section for a description of how this works). If you don't get one listed despite a server actually running, you should check the computer with the server for its firewall settings (if there is one). Of course, the firewall must generally allow EF into the network. If the server port is in the above range, EF will find it in the local network. Otherwise it's a network problem and certainly has nothing to do with the game. The favorites should be self-explanatory.

It is still possible to enable/disable filters that facilitate the search:

• Game type (what kind of game should be played on the server)
• “Show full” (if yes, servers are also displayed on which there is no more free client slot)
• “Show Empty” (if yes, servers are also displayed on which there is no player at the moment)

You can also sort the list, but there won't be that many in the LAN.

If you have not received any answers to a request (no servers, although one is running), simply try again with the menu item Update. Small detail: If the server search is immediately finished again, but you don't get a game server, at least the query itself was probably answered. Otherwise (master server down) it takes a moment until EF has waited for the timeout. This can help to identify the actual problem. Should you find a game server in the Internet (or LAN) especially good, you can add it to your favorites using the menu function Add to favorites. This may save time because server queries can be omitted. If you click on a running server, the currently played map is displayed in the upper left corner.

### Setting up and using servers

#### Via the GUI

Above a lot is written about maps and their selection for servers. Here is a bit more about how to create a game server. Since the solo match (single player) is only a special case of the multi match (multiplayer), there are no separate explanations on that. For a LAN server there are basically two alternatives: Either you open a so-called dedicated server, or you open a so-called list server. There are again two methods for this: Either you use an extra program for it (which usually has better configuration possibilities for dedicated servers), or you use EF itself for it. Since there are many programs for it, I will only explain how to do this with EF itself. After all, everyone has that. But if one of you still wants to use a program for it, I can recommend the EF-Runner. But I won't explain it here additionally. It then creates the necessary config files, if necessary for several servers.

1. The menu path is as follows: Multi MatchCreate Server
2. Select game type:
• Free for all (FFA = DM)
• Team Holomatch (TDM)
• Tournament (1 on 1) (not necessarily available on the GUI)
• Capture the Flag (CTF)
3. Select map (this is the first one, i.e. the one that will be played directly at the beginning)
4. Select modes if necessary (Elimination, Specialist, Action Hero, Disintegration, Assimilation). Not all combinations of mode and game type are possible. For example, assimilation requires team deathmatch as game type.
5. Click on Continue
6. Enter the host name: The others will see it in the list after the server search.
7. In the field human below players you may change your own name if you haven't done so yet. (This does not exist, of course, if you start the server as dedicated.)
8. Select how many open slots or how many slots occupied by bots should be available.
9. HC skill: Level of difficulty of the bots
10. Set points and time limit
11. Set extended settings if necessary
12. Define Server: The Pure Server option is not the dedicated function, but a security function that does the following: If it is on, the server checks whether the client (= player) really has exactly the same files as on the server (sv_pure = 1). This means, for example, that you cannot cheat with modified *.pk3 files. But normally you don't need it on LANs. There you can see if someone is cheating. But that's sometimes the reason why you shouldn't change the original *.pk3 files, or compress them again, or something like that. The file may not be usable afterwards… Under Dedicated Server you have three options:
• NO (= No dedicated server, so = list server)
• LAN (only players from the local network may join the server)
• INTERNET (People from the Internet may also join, not recommended on LANs)

To use a dedicated server on your own computer and play on it parallel, you would have to start another instance of Elite Force to connect to the server. However, since this requires a fast computer, so that it doesn't cause any problems, it is recommended to use a computer that has the service running, or if none at hand, to start a list server. And the dedicated server created in EF has another limitation: You can only run one map at a time (or use voting), unless you know a bit about scripting (but that goes too far here). Programs like the EF-Runner can also create a mapcycle without any problems and this very comfortable.

#### Via Config File

There are basically two ways to automatically start servers without having to click through menus. One runs via a start script, i.e. under Windows a *.bat file, under Linux a shell script. Both use a server configuration file, which tells the server what it has to look like and what it has to do. A minimal server config could look like this:

seta hostname "My Server"
seta sv_maxclients "32"
seta fraglimit "30"
seta timelimit "15"
seta capturelimit "5"
seta g_friendlyfire "1"
map hm_voy1
echo "Runs!"
status

A slightly extended config could look like this (click to expand):

Spoiler

For a mapcycle, as shown in the second example, you have to define manually which map should be loaded after the current one and at the end the first and this cycle must be started again. You can also set the mode for the current map and other settings that should change when changing maps. This way you can switch between CTF and DM, depending on the map. There is one drawback of this method: You really should turn off the voting system. Otherwise, some player may make the server “take another turn”, essentially leaving the map cycle. You can continue it, by issuing /rcon vstr name, to continue with the section named name. But especially on dedicated servers running 24/7, the more elegant way is to turn of voting altogether.

In principle, the name for the config doesn't matter. However, when named autoexec.cfg the config is loaded automatically if you do not specify anything else. The manual specification can look like this: “C:\Program Files\Raven\Star Trek Voyager Elite Force\stvoyHM.exe” +seta dedicated 2 +seta sv_pure 0 +exec autoexec.cfg. This can either be put into a Windows shortcut as a start command (the path in which the program is to be executed must be adapted accordingly), or into the start script. For Linux, the case also looks like this: ./binaryname +seta dedicated 2 +seta sv_pure 0 +exec autoexec.cfg (from the directory where the EF server is located). There is not much more to do with an EF installation under Windows. But if you want to set up a bare server, you don't need all of it. You only need the directory BaseEF from the CD, which you have to rename to baseEF under Linux, otherwise the server won't find its files. In addition, there is the stvoyHM.exe, or a corresponding Dedicated Binary, which is not in baseEF, but one level higher.

Config files have to be stored in baseEF, even if you want to start the dedicated with active mods (the server generally searches there for its files, including the maps, before it starts). Some Dedicated Servers search under Linux in the folder ~/.stvef/baseEF. If you don't want to start a dedicated server with standard EF but with a mod active, you have to pass this to the server at startup, e.g. for pinball by +set fs_game pinball +set dedicated 2 +exec pinconfig.cfg. Besides exec the other parameters should also be set in a correspondingly started config. For the use of mods the specification fs_game is absolutely necessary as start parameter (therefore not to be set in the config). The name of the mod normally corresponds to the directory in which the mod data is stored. You could say that for standard EF the mod is baseEF (and doesn't have to be specified separately), because the data is searched for in this directory. Under Windows you don't need to do much more aside from providing the script with a suitable config name if necessary. Under Linux you don't have to do much, just make the dedicated binary executable. For further settings in the config, see the Config Parameters.

Here is a brief overview of which game types and which modes belong to which config variables:

##### Game Types
Name g_gametype
Free for all (DM) 0
Tournament 1
Solo* 2
Team Deathmatch 3
Capture the Flag 4

If other numbers are used, the game mode is set to FFA.

* Note: Solo is only here for the sake of completeness and is not actually a game type for servers. This mode is set when starting a solo match via GUI in Elite Force, i.e. without other human players. In principle this mode can also be used via console parameters or in a config, but then it is not possible for other players to join the game. Accordingly, it cannot be reached via network (not even via localhost / 127.0.0.1).

Mode Variable
Assimilation g_pModAssimilation = "1"
Elimination g_pModElimination = "1"
Specialties g_pModSpecialties = "1"
Action Hero g_pModActionHero = "1"
Disintegration g_pDisintegration = "1"

#### Permitted combinations of game type and mode

Not all combinations of game type and mode are allowed. Below is an overview of which combinations of modes are allowed with game types and with modes among each other.

##### Game Type and Mode
Game Type Assimilation Specialties Disintegration Elimination Action Hero
Free for all no yes yes yes yes
Team Deathmatch yes yes yes yes no
Tournament no yes yes yes yes
Capture the flag no yes yes no no
##### Modes with each other
Assimilation Specialties Disintegration Elimination Action Hero
Assimilation yes yes no no no
Specialties yes yes no yes no
Disintegration no no yes yes no
Elimination no yes yes yes no
Action Hero no no no no yes

#### Accessibility

For EF, if you have created a server yourself, you only need to open port 27960 (UDP) in a firewall (or alternatively the port you have chosen yourself). You shouldn't have to share a specific port to join. However, you have to distinguish between LAN server and Internet server when creating the server. LAN servers are, as the name says, only accessible via LAN, not via the Internet. In principle, you can also run multiple servers by selecting multiple ports. Some ports can be searched automatically by EF, so that even a second server running in parallel does not have to be entered manually in EF. The automatically scanned UDP ports for LAN search are 27960-27963, which of course must also be forwarded if you are behind a firewall or NAT.

### Masterservers

The Eliteforce master server is automatically notified of newly accessible Internet servers as soon as they start. But only if you set the server mode to Internet, e.g. via +set dedicated 2 when starting on the console. With +set dedicated 1 the server is started, but not announced. Clients download the known game server addresses from the master server. In the config files of the client (hmconfig.cfg) and server (depending on the name you just gave them), the master servers to be used are set via seta sv_master1 "blah" to sv_master5…'. A list of currently available servers is also visible here.

#### Current Master Servers

Here is a list of the currently running master servers of the community:

• master.stvef.org (2019-06-09), IP 74.91.116.133
• efmaster.tjps.eu (2019-06-09), IP 176.9.53.212
• master.stef1.daggolin.de (2019-06-09), IP 185.7.199.7

These should be entered in both, the server and client configs. To set up your own master server, this project could be helpful. But under Debian Stretch x64 I could not compile the code, apparently because of a problem that was already known in 2007. The default port for this is 27953 UDP. Alternatively, this project could be usable for EF. In order to check whether a master server is at all responsive/available, it may be helpful to use this tool. The command is then qstat -efm <servernameorip>.

#### Former Master Servers

• master.stef1.ravensoft.com (2017-02-03), IP 104.40.23.123
• master.gamespy.com:27900
• efmaster.kickchat.com (2017-03-03), IP 176.9.53.212

Logically, the GameSpy server no longer exists after the shutdown of the network. However, it should never have worked because of the problem described in the Masterserver Query Bug section.

#### Masterserver Query Bug

In the original Eliteforce game up to and including version 1.2 there is a bug which allows to announce a dedicated server with a port number for the master server. For example, a game server can be made known via the default master server master.gamespy.com:27900. However, the clients with version 1.2 or older cannot reach the corresponding master server at all, because they always try to do so on port 27953, no matter what is written in the config file. Therefore it is also advisable to configure master servers, which should (also) list EF servers, only to listen on port 27953. Newer versions based on ioQuake3 are not affected by this problem and can also reach the 1.2 servers that have made themselves available via a different port.

#### Technical concept of the master server

In principle, the concept of the master server is quite simple: a dedicated server accepts requests as to which game servers it knows. This list is then returned to the requesting client. This is what happens if you use the entries “Internet 1” to “Internet 5” (or more?) in the server search.

On the other hand, the master server must first know about the existence of a game server (listen and LAN servers are not listed, only Internet servers, which is configured in the settings of a server by the variable definition dedicated = 2). To do this, a game server with the appropriate settings reports to the master server via a so-called “heartbeat”. This contains only the information “Huhu, here I am, please add me to your list”. But the master only accepts servers that are actually reachable. He checks this by checking the status of the server that is currently reporting after a message like this (provides the number of players, version, etc…). If he does not receive an answer, he does not record the server. This must be taken into account, for example, when operating a server behind a firewall or NAT. If the server port is closed, the master server does not reach it, so it will not appear in the list.

Strictly speaking, only the servers that correspond to the version of the requester are reported back, possibly restricted to no full or empty servers. Ultimately, the concept is very simple and has some minor vulnerabilities. For instance, the protocol (just like the game protocol) is based on UDP. This means that if a request or response is lost, no one will notice. If necessary, everything is completely OK at both ends, but you still don't get a server listed as a client. How exactly this works technically is described below.

#### The Protocol Behind it

The protocol is largely identical to that of Quake III Arena. However, there are some minor changes.

In the following, server communication strings are shown that all start with four times 0xff, the character queue ÿÿÿÿ. If the reader gets this character queue wrong (actually looks like four y with dots on top), please don't get confused. They are four times the ASCII character no. 255 (all 8 bits set to 1) in a row, no gaps.

##### Announce Game Server to Masterserver (Heartbeat)

A game server may announce itself to the master server by simply sending the string ÿÿÿÿ\heartbeat\27960\gamename\STEF1\. The digit series 27960 corresponds to the port of the reporting server and can deviate accordingly. The master server will then attempt to query the server status of the sender. If this succeeds, the server will be added. The IP, the port and the protocol of the game server, as well as the information whether it is empty or full, are stored information. This means that the client is only informed about the servers it can play on. For Eliteforce 1.2 or newer the protocol number is 24 (or for older versions like 0.28 it can also be 22). On the other hand, the client already specifies whether it wants to receive full and/or empty servers when the master server queries it. If the request is filtered, it will be answered accordingly.

After that, no more things happen. There will be no response to the game server. The master also checks if the game server is still running. For this purpose there is a simple replacement mechanism: When a server is stopped (command quit) it sends a last heartbeat and then goes offline. Since the master server does not receive an answer when querying the server status, it assumes that the server is dead and does not return it in client responses.

The game server, on the other hand, reports to the master server at regular intervals, like when the status changes from empty to not empty or when the map changes. This also has the effect that a message possibly not received by the master server will (hopefully) be received after some time, and the game server will then be listed.

The game server also reports for the transitions Empty → Not Empty and Full → Not Full, and vice versa. You can also send a heartbeat manually on the console (e.g. via rcon). So there are all in all eight situations in which a heartbeat is sent:

1. server goes online for the first time,
2. server goes offline,
3. server status changes from empty to occupied,
4. server status changes from occupied to empty,
5. server state changes from only occupied to full,
6. server state changes from full to only occupied,
7. console command heartbeat is issued and
8. server routinely gives a sign of life every few minutes.
##### Withdraw Game Server from Master Server (Heartstop)

Apparently there is an additional mechanism in Eliteforce which is probably intended to explicitly withdraw from the master server. This is done with the following string: ÿÿÿÿheartstop\27960\gamename\STEF1\. Also here the digit series 27960 is the port of the logging out game server. This logout is actually not necessary and deviates from the original Quake 3 implementation, see previous section Announce Game Server to Masterserver (Heartbeat).

##### Server List Query

The query of the game servers known to the master server by a client is initiated as follows: ÿÿÿÿtservers xx, with xx as a numeric specification of the game protocol version. For Eliteforce since version 1.2 this is 24. Version 0.28 still had 22 as specification. Furthermore, the query can be extended by the extensions full (also returns full servers) and empty (also returns empty servers) (separated by space 0x20, ASCII character no. 32). A query that returns all Eliteforce 1.2 servers that the master server knows would look like this: ÿÿÿÿgetservers 24 empty full.

##### Server List Response

The answer to the client then looks like this: ÿÿÿÿgetserversResponse \addressport1\addressport2\…\addressportn\EOT. The block ÿÿÿÿgetserversResponse  and the block \EOT are mandatory. In between (if there are known servers) are the addresses and ports of the known servers. Each server block has the form \ipPort. Here ip means eight bytes of the IP in hex representation. The first address block corresponds to the first hex pair. The address 192.168.0.1 becomes c0a90001. The block Port is specified directly after it. This is the server port as two bytes little endian unsigned short, or short, as you would write the hex number on paper. The default port 27960 then becomes 6d38, for example. Both values (IP blocks and port) are displayed with leading zeros to keep the number of characters at eight resp. four. The entire server would be represented as follows: \c0a900016d38. The total answer for the servers 192.168.0.1:27960, 192.168.178.1:27961 and 123.34.56.78:9012 would look like this: ÿÿÿÿgetserversResponse \c0a900016d38\c0a9b2016d39\7b22384e2334\EOT. Please note again that only those servers are displayed that have the same version as the client (EF 1.2 and newer: 24) and the empty or full ones only if the client explicitly requests this. Other servers are not reported back.

##### Query a Game Server's Status

As described above, the master server queries the reporting game server at least once before adding it, instead of simply adding it untested. The corresponding query to the game server looks like this: ÿÿÿÿgetinfo xxx. Whereby xxx already works like it is written here. For a real status query, a challenge number (sequence of digits) may also be there. For the master server, however, this is irrelevant.

##### Answer Game Server Status Query

The game server then replies with all kinds of information about itself. From the basic structure it looks like this:

ÿÿÿÿinfoResponse "Values"

The values between the " characters usually contain more information than is necessary for the master server. Their structure is always \Identifier\Value. The last identifier-value pair there is always \challenge\xxx, the already mentioned challenge. With master server queries the value xxx is to be understood literally, with real status queries from clients it can look different. Already encountered values look like this:

• game: Which mod is played, e.g. standard baseEF, or also pinball.
• voip: Which voice over IP codec is used, e.g. opus.
• g_needpass: Does the server require a password for access? 1 = yes, 0 = no.
• pure: Value of the sv_pure variable on the server. If 1, the client is only allowed to have the same *.pk3 files as the server has.
• gametype: Which game type is set, e.g. 4 for CTF. Corresponds to the server variable g_gametype. See also section Game Types.
• sv_maxclients: What is the maximum number of clients that can be connected? Digit sequence. Is used to determine the state full (full) for the query on the master server.
• g_humanplayers: How many human players are actually playing on the server? Digit sequence.
• clients: How many players are currently on the server? Also contains the bots, unlike g_humanplayers. Is used to determine the state full (full) and empty (empty).
• mapname: The technical(!) name of the map currently being played, e.g. hm_voy1.
• hostname: What name was given to the server? E.g. EF Classic @ Mobile Infantry.
• protocol: Which version does the game server have? For EF from 1.2 on it is 24, but old versions also have 22 (version 0.28) or 23 (version 1.1).
• gamename: Which game is played? For EF this is “EliteForce”.

In the standard implementation, it is not necessary for the master server to test the game servers again before sending the client list. Since a logout does not necessarily have to arrive at the server (UDP), it may be useful to send a query to the servers at regular intervals and to sort out servers that are no longer accessible.

### Local Server Queries via Broadcast

In general, no master servers are required in the LAN, since the servers are simply detected via broadcast messages. For this purpose, the query described in section Query a Game Server's Status is sent to the broadcast address 255.255.255.255 instead of to a specific server. As a result, the request package arrives at all participants. If a server is in the same subnet, it will act as addressed and respond if an Internet or LAN server is running. All servers with ports between 27960 and 27963 are queried here as well.

If a game server is behind a firewall, NAT or desktop firewall that blocks either the game server port or broadcast requests, the server will not appear in the server browser. Servers accessible on ports other than 27960 to 27963 will also not be visible. Therefore it is recommended to stay in this range of ports when not using a master server.

### Requesting Server Details

The above mentioned queries are all to be seen in the context of the identification of existing servers. However, the game servers are able to provide further information to the client, e.g. who is currently there or what map limits are set. The corresponding request looks like this: ÿÿÿÿgetstatus. The answer has the following form: ÿÿÿÿstatusResponse \Description1\Value1\Description2\Value2…\Description\Value. The line break after Response is character 0x0a, or ASCII no. 10. The value pairs are very similar to those of a server status query. The list of available identifiers contains, among others, the following value pairs:

• protocol: 24, the network version of the server.
• difficulty: The level of difficulty of the bots.
• unlagged: The server has implemented the “unlagged” mode. When this identifier appears, it is usually set to 1.
• sv_maxPing: Maximum ping allowed by players. If the value is 0, there is no limit.
• sv_minPing: Minimum allowed ping from players. If the value is 0, there is no limit.
• sv_dlRate: How many kB/sec. can be expected for the download from the server at most.
• sv_minRate: The minimum number of bytes/sec. used for the connection.
• sv_maxRate: The maximum number of bytes/sec. used for the connection.
• sv_hostname: The name set for the server, e.g. EF Classic @ Mobile Infantry.
• sv_dlURL: An extension of newer versions of the servers: On which address map or mod downloads can be done alternatively, if the client does not have a file. Not used by original EF.
• sv_allowDownload: Are map downloads allowed? 1 = yes, 0 = no.
• g_speed: What running speed is set? Default is 300.
• g_friendlyfire: Is friendly fire on? “1” = yes, “0” = no.
• sv_floodProtect: Has the server activated the flood protection? “1” = yes, “0” = no.
• sv_maxclients: The maximum number of players that can play on the server.
• fraglimit: How many kills of a player will end a DM round.
• timelimit: How many minutes does a map take to complete at most?
• capturelimit: After how many captures/points of a team a CTF map is terminated.
• dmflags: Unclear, there might be modifications for the DM mode. Default seems to be 0.
• g_maxGameClients: Unclear, from the name probably a limit, how many players are allowed to play on the server. But this is already done by sv_maxclients.
• g_gravity: How strong is gravity on the map? Default is 800.
• g_weaponrespawn: After how many seconds does a weapon reappear at a location after it was taken from there.
• version: Long variation of the server version, e.g. Lilium Voyager HM 1.39_GIT_9fcb8a0-2018-03-06 linux-x86_64 Apr 30 2018.
• com_gamename: What game is played there? For EF: EliteForce.
• com_protocol: Which communication protocol is used by the server? E.g. 24 or 26.
• g_gametype: Which Mode is played, for example, 4.
• mapname: Which map is played (technical name), e.g. hm_noon.
• sv_privateClients: How many private client slots are set? Default is 0.
• bot_minplayers: To how many players per team does the server fill the teams with bots? Default is 0.
• betadate: Unclear. One value received is Feb 22 2004/16:52:14.
• gamename: Which Game is played? E.g. “PiNBALL 2.0.0” or “baseEF”.
• g_pModDisintegration: Is disintegration mode activated? 1 = yes, 0 = no.
• g_pModElimination: Is the elimination mode activated? 1 = yes, 0 = no.
• g_needpass: Does the server require a password to join? 1 = yes, 0 = no.
• g_allowVote: Does the server allow voting? 1 = yes, 0 = no.

In addition, there are a few technical variables that are also sent:

• Friendly fire: A free text variable (without technical function) (text).
• Administrator: Contains the name of the admin, if set (text).
• Email: Mail address of the admin, if set (text).
• url: Web page to server, if set (text).
• Location: Location of the server, if set (text).

At the end of the answer there may be, separated by a line break (0x0a), a list of current players on the server, in the following form: Number1 Number2 "Nickname" + (0x0a). Number1 is the number of questions, Number2 should be the ping of the player, "Nickname" is the name chosen by the player. The line break at the end applies to every player, including the last one. The answer also ends with a line break.

There is one thing in EF that is a little ambivalent: EF can download maps and mods from Internet or LAN servers (if the servers are configured to allow this). On the one hand, this has the advantage that you don't have to search somewhere for a long time and download the maps manually and move them to the correct directory. EF takes care of this. The downside, however, is that you can get all sorts of things put into your installation in this way. Among other things also files which are not allowed on other servers because of sv_pure = 1 (which keeps you locked out there). So if you want to play it safe, you have to set the parameter cl_allowDownload to 0 in your config. However, this means that on servers that use maps, models or mods that you don't have, you immediately drop off when connecting. This may even happen without a corresponding error message (see also the section Problems with Map Downloads). If in doubt, it makes sense to check the logs to see where the problem lies.

Usually custom maps, mods and models (i.e. everything that is not included with EF by default) are provided by the server. Whether they are downloadable or not depends primarily on the server setting and the client setting. On the server sv_allowDownload must be set to 1 (or higher), on the client cl_allowDownload as well. Otherwise the client downloads nothing, or gets nothing from the server. But this ingame-download is quite slow by default. You can change it with variables like cl_chunksperframe xx on the client side, but it never gets really fast. Therefore, the ioQuake-based binaries for EF offer the possibility to redirect map downloads to other HTTP/FTP servers, which then also allow download rates as usual from a web server.

To do this, sv_dlURL must be set on the server side (as well as sv_allowDownload "1" of course), e.g. sv_dlURL "http://your.website/folder". Then the download will be redirected to the corresponding directory. On the web server, of course, the required files should also be found in the corresponding folder and should be accessible and the same files. Correspondingly, to stay with the example sv_dlURL "http://your.website/folder", it means, for example, that the files must be in the folder folder/baseEF (upper and lower case is important!). So, as if the files are in the local game directory, with their corresponding parent folders baseEF or pinball. Otherwise the client won't find the files and the connection will simply be terminated without a sound. Also important: The curl download only works if the server not is called via https, but with http. An alternative is ftp. The original version 1.2 cannot download via Curl Maps, so only the slow ingame download remains.

sv_allowDownload allows multiple options:

• sv_allowDownload 0:Don't allow any downloads
• sv_allowDownload 1: Allow downloads
• sv_allowDownload 4: Disable UDP downloads
• sv_allowDownload 8: Do not ask the client to disconnect when using HTTP/FTP downloads.

If you are a server operator, worried that others will make use of your own repository, you can instruct the web server to only allow downloads from your own EF server and teach EF to report to the web server: HTTP_REFERER "ioQ3://{SERVER_IP}:{SERVER_PORT}" on the EF server. Apache's mod_rewrite can now allow exclusive access to the EF server based on the HTTP_REFERER. In this way, others cannot use the upload.

The maximum bandwidth for UDP downloads can be set using sv_dlRate. However, the highest achievable rate is still 1 MByte/s per client. Curl downloads can still be faster.

Apparently there are certain difficulties when you take the server and a client from Thilo or Lilium Voyager. If files are missing on the client but map downloads are not allowed (default value, if nothing else is set in the config), you will suddenly end up in the main menu. The error message of the missing *.bsp file known from version 1.2 does not appear. If you need the map urgently, you should set the parameter cl_allowDownload to 1 in the config.

In both cases you can start Eliteforce from the console to narrow down the error. Additional information will be displayed there. In the jumble of messages you will normally also find the message that a certain map or other file (e.g. player model) was not found.

A special combination with Thilo's Binaries or Lilium Voyager can make it impossible to download maps, although both client and server allow it: If the server has set sv_pure = 1, and the client is missing currently needed files, but it also has other files that the server does not know, nothing will be downloaded. You are kicked out of the game as described above, allegedly because a file is missing, but it is not downloaded. This can only be solved by either setting sv_pure to 0 on the server, or by the client moving the additional files to another folder.