User Tools

Site Tools


en
en:games:star_trek_-_voyager_eliteforce

Table of Contents

Star Trek: Voyager - Elite Force

Multiplayer Information

  • Internet play: yes
  • LAN play: yes
  • Lobby search: yes
  • Direct IP: yes
  • Play via GameRanger: No
  • Coop: yes
  • Singleplayer Campaign: yes
  • Hotseat: no

Downloads

Game Info

Star Trek Voyager Eliteforce is a beautiful first person shooter, thematically located in the Star Trek Voyager universe. It was developed by Raven Software, published by Activision on 20th of 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 are out 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 goal 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.40 resp. 1.05 (cMod). 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.
1.05 x86 x64 24 26 ioEF:cMod HM v1.05 linux-x86_64 May 25 2019 Current stable version of cMod, based on ioQuake 3, maintained by a certain Noah "Chomenor" Metzger. The platform identification (linux) may of course be different for Windows of MacOS.

* 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 ioEF or Lilium Voyager as well. The *.pk3 files belong into the baseEF subdirectory of the EF installation, the rest into the root directory. With ioEF 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 ioEF 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:
      1. Open Task Manager
      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 run1).
    • 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 & stuff 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.

Troubleshooting

  • Reboot your Computer and try again
  • Remove all Mods/Maps/Skins and try again
  • Remove/rename your config file (see sections Location of the config files/mods/maps and Name of the Configuration Files)
  • Rename the game executable to quake3 or quake3.exe
  • Make sure you have the latest Graphics Drivers installed
  • Un-Install and install the Game again in a different Folder
  • Enable Vertical Sync/V-Sync/Monitor Sync in Video/Advanced Settings
  • Disable Antialiasing in Video/Advanced Settings
  • Disable OpenGL Extensions in Video/Advanced Settings
  • [For Laptops] Change the Powersaving Options of your Graphics in the Energy Options of Windows
  • Change the Powersaving Options of your Processor in the Energy Options of Windows

Your CPU should not go under 75% to provide a smooth gaming experience.

Replacement Binaries/Newer Versions of EF

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. A brief outline of practical changes:

ioEF

So to say the very first incarnation of ioQuake3 based EF versions. It already contained many improvements but is not maintained any more today. Today it's better to use Lilium Voyager or cMod right away, simply because that's where the work that Thilo has invested, is being continued but more recent problems are fixed as well. See also pak92.pk3.

Here is also a short interview with Thilo.

The mod in version 1.37 can still be found on ModDB, although there was a newer version 1.38 as a release candidate available at one time.

Lilium Voyager

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”. It has the advantage, that many security bugs are fixed (especially interesting, if you are running an internet server) and adds some new features, including accelerated map downloads and IPv6 connectivity.

Where to get compiled binaries

The source files can be found here. You can also find them precompiled in the Downloads above. Older versions are available here.

Building Lilium Voyager

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 in article Building Lilium Voyager.

cMod

There is another variation of EF based on ioQuake3 source, the cMod. At this point, some more information should be added here. The original resources can be found here. According to the maintainer of the project, Noah “Chomenor” Metzger, the goal is not so much in a conservative direction as is with Lilium Voyager. So there are more experimental features included.

Especially arguable is the decision to once again save config and downloaded files to the game's folder. Original ioQuake3 was patched to store this kind of data inside the home folder of the user under which it is run. This of course also goes for running servers. This makes totally sense in terms of security and multi user usability. However the original EF was based on an earlier version of ID Tech's engine, which stored all this data inside the game folder as well. At least under Windows 7 and above, both ways can be combined by placing EF's folder inside the Programs (x86) folder and not giving writing access to the game's folder, which in turn will make Windows treat EF as legacy software. Thus, making all saves being stored in the home folder again. But this is not the goal of this change.

vitaVoyager

Apparently there is also a fork of Lilium Voyager for the Playstation Vita. Up to this point, there is not much information to go on, except for the source of this information: https://wololo.net/talk/viewtopic.php?t=49863#p424868.

Location of the config files/mods/maps

Standard Location

Even though it may be a bit confusing in 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. The worst case scenario here is an NTFS file system which prevents the game from saving the settings at all. With the binaries of ioEF 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. The following list considers the main mod, baseEF to be the target of the savings. For other mod names change the baseEF part into the name of the folder the mod requires.

OS EF 1.2 and older Lilium Voyager cMod ioEF
Windows up to Win Vista Game folder %appdata%\Lilium Voyager\baseEF Game folder %appdata%\STVEF\baseEF
Windows from Win 7 on %UserProfile%\AppData\Local\VirtualStore\<name of your EF game folder>\ (only when stored in folders Program Files or Program files (x86) of your Windows drive) %appdata%\Lilium Voyager\baseEF Game folder %appdata%\STVEF\baseEF
Linux untested (requires Wine) ~/.local/share/lilium-voyager/baseEF Game folder or ~/.stvef/ (if no write access to game folder) ~/.stvef/baseEF
MacOS untested ~/Library/Application Support/Lilium Voyager/baseEF Game folder ~/Library/Application Support/STVEF/baseEF

Custom location

On ioQuake derived versions (Lilium Voyager, cMod, ioEF) there is also the possibility to explicitly tell the game, where to look for and place player's data. This is done by setting the variable fs_homepath during server or client start. For example

./liliumvoyhm.x86_64 +set fs_homepath ~/my_ef_folder

makes the game look for data in the folder my_ef_folder in the current user's home folder (for Linux systems). This way it is possible, to kind of have multiple EF installations separately, e. g. with different (incompatible) mods active while actually having it installed just once. Files present inside the games installation folder, e. g. *.pk3 files, are always found as well. So for running different mods with the same installation it is advisable, to strictly separate the configurations and mod files in different folders, while having only the basic game with only its original files inside the installation folder.

Name of the Configuration Files

EF Variation Holomatch Config Singleplayer Config
Vanilla hmconfig.cfg efconfig.cfg
ioEF hmconfig.cfg -
Lilium Voyager hmconfig.cfg -
cMod cmod.cfg -

cMod Config File Renamed

cMod tries to behave in a similar fashion as original EF 1.2, meaning, it stores the config and downloaded files in the game folder. It does not store the config in the baseEF folder and the configuration file is called cmod.cfg. So depending on the circumstances, it might also be, that this file is saved in another location, as is described for Standard EF from Win 7 on.

IPv6

If you are hosting a match on a computer with IPv6 address, the game also waits for connections via your IPv6 stack, when using Lilium Voyager. If a player decides to connect to that server via IPv6, he has to enter the address in the fashion [block1:block2:…:blockn] into the specify server fields. Notice the brackets around, they are required. The :: abbreviations are also allowed.

Settings

For this information, see the article Star Trek: Voyager – Elite Force Settings.

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

Recommendations/Achievements

Maps, Mods and Models

As with all popular games that allow modding, EF 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:

You can activate mods either with the console of from the menu:

When in the main menu, click on Mods, and you get a list of mods you can activate:

Simply select the mod to be activated and click on Load mod. The default Mod is Elite force : Holomatch. Activating a mod from the console works by adding +set fs_game <modname> to the execution command.

Several mods are still used today, running permanently on many servers. Below are a few 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

See article Star Trek: Voyager – Elite Force Maps on this subject.

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)

Voting System

EF does, just like Quake 3 does, utilize a voting system, which allows players to call votes for game type, maps and kicking players. This does however require the server to allow that. Especially when using a map cycle, it is recommended to not allow voting, as after a map vote, the map cycle will not continue on its own.

To activate voting on the server, set g_allowvote to 1, which is the default.

After that, the principle is always the same. callvote [command] calls for a vote, whereas [command] can be one of the following list:

  • map_restart: either restart the current map without new loading, or (if a previous vote or map cycle set it) load the next map.
  • nextmap: Sets the next map. When the current round is finished, the map set by this command will be started.
  • map [mapname]: Switches directly to the map given by [mapname].
  • kick [playername]: Asks whether the player with the nick defined by [playername] should be kicked from the server.
  • clientkick [number]: Same as kick, just this time with the players number [number]. To get the number of a player, use /serverstatus.
  • g_gametype [number]: Switch the game type, e. g. from DM to CTF. The change will take effect only after a changing the current map. See also section Game Types on this subject.

All changes will only take effect, when there were more than 50% of the participants voting for yes. In order to vote, you have to use the command vote, followed either by yes or no. By default, vote yes is bound to key F1 while vote no is bound to key F2.

If you are playing with no other human players on a server (so alone or only bot players besides you), then votes are always passed. When the score board is shown between maps, votes cannot be called for.

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

EF also has the ability to record and replay demos. Demos are, so to speak, the life version of the stats. They show you the exact series of evens from the players angle, who recorded that demo. Demos can be created with the following console commands (by default you can reach the console via the ^-key in the upper left corner of your keyboard (vanilla EF) or with ~ for 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.

You can also play stored demos via the corresponding entry in the main menu:

Simply select the desired demo and click on Engage.

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 will work:

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

Cheat 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

Walk Through

At this point, a whole walk through of this game would require an entire article by itself. There are still some websites serving WTs so for now I limit myself to some sources:

Config Parameters

Variables

Variables or “Cvars” are usually set with set or a derivative thereof by the principle set variable "value". The following variations of set are available:

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 of a variable name usually stands for server variables, cl_ at the beginning usually stands for client variables.

See also article Star Trek: Voyager - Elite Force Cvars on this topic.

Commands in the game

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

Remember: If you want to use these commands from within a config file, you must write protect it, as EF will strip these commands away from the config.

Network/Internet Server

Network/Net Settings

Behind the Configuration menu item Sound/Network you will find the setting Data rate: It 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 while using original EF you should take care of maps before playing (it takes too long to download them with vanilla EF).

If you want a more exact definition, you can also directly adjust the net settings in the config, which in general gives you better results in performance. 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 which values actually 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 your 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 allow for it. Especially in conjunction with the other settings, this can overload the connection very quickly, because with each additional repetition the other settings are doubled. But you never get beyond the rate2).

Join Server

Currently the Mobile Infantrie offers four servers for EF:

Address Name Description
www.mobile-infanterie.de:27960 EF Vanilla @ Mobile Infanterie Only standard maps and modes/mod, allowes for votes.
www.mobile-infanterie.de:27961 EF Classic @ Mobile Infanterie No mods, DM/CTF and other modes mixed, no votes allowed.
www.mobile-infanterie.de:27962 EF Pinball @ Mobile Infanterie Pinball mod, no votes allowed.
www.mobile-infanterie.de:27963 EF Teamelite @ Mobile Infanterie Team-Elite mod, no votes allowed.

Joining servers is straightforward. The menu paths are 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 on LAN.

Simply enter the IP or domain name and the proper port and hit Engage.

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 works 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 on 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. Also it is important to know, which network card is actually used. EF uses the main network card of your system. If you only have one, that's not a problem. But once you have different network cards in use, or utilize VPN software, that sets up its own virtual network cards, then this can be an issue. See also Network Card Metric on this subject. 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 Refresh button.

Small detail: If the server search is immediately finished (no delay), but you don't get a game server listed, probably at least the query itself was answered. Otherwise (master server down) it takes a moment until the timeout has passed. 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 Add to favorites button. 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. The list of favorites looks like this:

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 the fromer: 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

So from this menu:

You end up here:

  1. 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)
  2. Select a map (this is the first one, i.e. the one that will be played directly at the beginning, and is played over and over until someone successfully calls for a vote for another map)
  3. 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.
  4. Click on Continue. You will enter this menu:

  1. Enter the Host name: The others will see this name in the list when searching for servers.
  2. 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 Server.)
  3. Select how many open slots or how many slots occupied by bots should be available.
  4. HC skill: Level of difficulty of the bots, where Cadet is the easiest ranging to Captain being the most difficult level.
  5. Set Point Limit and Time limit
  6. 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 a player cannot cheat with modified *.pk3 files. But normally you don't need it on LANs. But that's sometimes the reason why you shouldn't change the original *.pk3 files, or recompress them again, or something like that. The file may not be usable afterwards…
  7. 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)
  8. Set Advanced settings if necessary:

  • Auto join team: Does the server put a connecting player into a team automatically?
  • Auto balance: Does the server rebalance the teams, if a team has more players than the other?
  • Falling Damage: Will a player suffer damage, when falling off from a heightened position?
  • Weapon respawn: Number of seconds after picked up weapons will reappear on their pick up spot.
  • Max clients: The maximum number of players that are allowed to connect to the server at the same time.
  • Run speed: How fast players can walk.
  • Knockback: How powerful are pushing effects like explosions?
  • Damage mulitplier: You can increase the damage dealt by any weapon with this factor.
  • Minimum players: If there are not enough human players per team, the server automatically fills it wit bots until the number of players has been reached. In teamless modes, the number counts for all players on that server.
  • Class change timeout: Number of seconds a player has to wait, until he can change his class in specialties mode. This also counts from the first joining of he match, where you automatically have class assigned.
  • Adjust item respawn:
  • Holodeck intro: A small intro, that is played just before actually entering the match.
  • Force player respawn: Players cannot stay in score screen suspension after being fragged indefiniteley, when turned on.
  • Respawn invulnerability: The number of seconds during which a fragged and rejoined player cannot be hit.
  • Warmup: Number of seconds a warm up period is applied before the actual match begins.
  • Blue team group: Selection of what kind models will be used for blue team's bots. Possible values:
    • None,
    • Female,
    • Proton,
    • Male,
    • Starfleet,
    • Borg,
    • BorgFemale,
    • BorgMale,
    • Aliens,
    • HazardTeam,
    • Klingons and
    • Romulans.
  • Red team group: Same as for Blue.
  • Specialties: Do players have special classes like sniper or infiltrator?
  • Desintegration: One hit instantly kills.
  • Eliminiation: Fragged players stay out of the match until another round starts.
  • Action Hero: One player get's all weapons of the game and starting ammunition, has a maximum or 300 health, constantly replenished. Fragging the hero makes a player the hero himself and getting 5 points. Normal frags give 1 point.

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)

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 restarting the cycle at the end. 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.

Important: If you use command such as vstr or map, or in general, all commands other than set derivatives, you must write protect your config. As EF will overwrite the config after using it, but stripping it of any of these commands, you will end up with pure settings, possibly destroying your work. By default, the EF server will not run any map. You can enter that in the console opening after starting the server. But for dedicated servers this is not recommended. Before you have a map running (map command), the server is not accessible from the outside, so not even rcon access is possible.

In principle, the name for the config doesn't matter. However, when named autoexec.cfg the config is loaded automatically. This special config file is used always. It might contain default definitions (e. g. having the same rcon password for all servers). 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 my_config.cfg. This command 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 resp. ~/.local/share/lilium-voyager/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 (but 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…. This works for EF since version 0.28, so actually for all versions. A list of currently available servers is also visible here.

And here is a project that apparently makes it possible to set up a master server (untested!): https://github.com/GSIO01/efmaster

Current Master Servers

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

  • master.stvef.org (2020-08-19), IP 74.91.116.133
  • efmaster.tjps.eu (2020-08-19), IP 176.9.53.212
  • master.stef1.daggolin.de (2020-08-19), IP 51.75.78.236
  • ipv6.tjps.eu (2020-08-19), IP 2a01:4f8:150:73c1::3)

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 master server listening on 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 3 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: ÿÿÿÿgetservers 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 Infantrie.
  • 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, you can also add non-functional variables that are also sent, still:

  • 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).
  • Clan: Name of the clan.

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.

Map Downloads

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.

Accelerating Map Downloads

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(s)/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: In earlier versions the cURL download only worked if the server was not called via https, but with http. So if the cURL download fail with a version 1.39 of Lilium Voyager or older variations like ioEF, please use HTTP only or upgrade to a newer version of ioQuake derived EF. In any case, 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.

Problems with Map Downloads

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.

sv_pure and Map Downloads with Newer Clients

A special combination with ioEF 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.

Ports

In addition to the ports 27960-27963 (UDP) already mentioned, ports 26000, 27500 and 27910 (UDP) could also be used.

See also

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
en/games/star_trek_-_voyager_eliteforce.txt · Last modified: 2020-09-20-19-12 by 7saturn