BattleField Vietnam Linux Dedicated Server

This allows you to create a dedicated BattleField: Vietnam server on a Linux/Unix Machine.

*Note: If, as you begin downloading this file,...


Do not refresh or leave this page!

File Description

This allows you to create a dedicated BattleField: Vietnam server on a Linux/Unix Machine.

*Note: If, as you begin downloading this file, it starts writing text to your browser, be sure to right-click and choose "save as..."

Read More

Download '' (103.43MB)

Release notes: Battlefield Vietnam free dedicated Linux server version 1.0
Battlefield Vietnam is a registered trademark of Digital Illusions CE AB.
(c) 2004 Digital Illusions CE AB

Quick start

- Run the server installer and follow the instructions.

        Please note that if you choose to install the server over an existing
        installation the existing installation directory will be removed!

  $ sh

- Modify mods/bfv/settings/serversettings.con to your taste.

  $ cd /path/to/installation/bfv
  $ vi mods/bfv/settings/serversettings.con

- Modify mods/bfv/settings/maplist.con to your taste.

  $ cd /path/to/installation/bfv
  $ vi mods/bfv/settings/serversettings.con

    Please see the information below to understand the new map list format.

- Run the server from within the top-level directory by typing
  ./ [arguments] from a shell.

  $ cd /path/to/installation/bfv
  $ ./ +statusMonitor 1

- If you are starting the server from a remote connection you will need to
  encapsulate it inside a "screen" session to let it stay behind when you log
  out from the shell.

  Example (to start the server):
  $ cd /path/to/installation/bfv
  $ screen ./ +statusMonitor 1
  Now press Ctrl-A followed by Ctrl-D to detach the screen session, leaving it
  running in the background. You can now log out without affecting the server.

  Example (to reconnect to the server status monitor):
  $ screen -r

  Please see the man page for screen to learn more about what it can do.

More information

Welcome to the Battlefield Vietnam dedicated server. For
patch-specific information please refer to the generic read me file
included with both the Linux and win32 distributions.

we've made every attempt to incorporate Andreas's work on the 1942
dedicated servers into this branch of the Battlefield tree, but some
things may be missing.

For discussion with the developers and other users of this server
please subscribe to the bf1942 mailing list. To join the list, send a
message to <> and follow the instructions
given to you in the reply.

If you prefer to use a forum, there is one set up at the distribution
site for the open beta series at
. You can report bugs both in the forum and on the mailing
list. Please don't send bug reports in private mail, use the forum or
the list instead.

[ Yes, I'm serious that you should use this list and site until an
  official list is created by the powers that be. ]

DICE would like to thank Ryan C. Gordon for his work on the earlier
Linux releases and the bf1942 Linux community for their test feedback,
bug reports and patience. dpc would like to thank DICE and especially
Andreas Fredriksson for his patience.

The file case confusion problem solved

The Linux server will read lower-case filenames ONLY. All file names
encountered at runtime are lower-cased before a filesystem access is
attempted. You should therefore make sure all files are lower-case
when installing third-party modifications and maps.

To aid you with this there is an included bourne shell script called which recursively changes the case of files and
directories from the directory where it's run.

You can simulate the actions of the script with these options:
 $ ./ --pretend

When you're certain it looks good run the conversion:
 $ ./ --verbose

Banning by unique identifiers (CD key hashes)

This release of the dedicated server includes a system to ban players
by their unique CD key hash. The system is similar to the current
IP-based banning system but uses the following new console commands:

admin.banPlayerKey <player number>
admin.addKeyToBanList <key>
admin.removeKeyFromBanList <key>

Banned player keys are stored together with the IP-based bans in the
banlist.con file. IP-based bans continue to work if you would still
like to use them.

Please note that the PunkBuster system also has a CD key hash banning
system that works separately from the built-in system.

supporting bf1942 1.6 style maplist.con

the old maplist.con format was as follows:

    game.addLevel <map_name>
    game.setCurrentLevel <map_name>

where <map_name> was a map from the current mod using the current game
play mode (set elsewhere).

starting w/ version 1.6 (i think) the bf1942 maplist.con format is as

    game.addLevel <map_name> <game_play_mode> <mod_name>
    game.setCurrentLevel <map_name> <game_play_mode> <mod_name>

this allows what some people refer to as a map cycle where not all
levels need to have the same game play mode. this is considered to be
better by the server admins on the mailing list, and since i've never
done it who am i to argue.

anyway, we (the glorious bfv team) have added a variant of the bf1942
format to the linux dedicated server builds starting w/ five-by-five
from whence it will percolate into better clients and win32 servers
everywhere. the format is the same, but there are a few subtleties due
to the fact that there will be old style maplists out there and that i
cannot wave ma baguette magique and 'fix' all of the client cd's that
have already been burned (i do have a nice pair of ruby slippers
though; there's no place like home, there's no place like home, ...).

the first thing is that we still accept the old format w/ the
following proviso, unsupplied information defaults to the current game
state set in serversettings.con. for example:

    game.addLevel hue gpm_coop bfvietnam
    game.addLevel hue

will set the first map in the list explicitly to be
<hue:coop:bfvietnam>. it is unknown from looking at the addLevel
command alone what game mode and mod are being set as they will
inherit from the game settings. the maplist.con file will *ALWAYS* be
written out in the new format.

the second thing may be more confusing. evolution (gpm_evol) is a new
game play mode that already does a form of map cycling (see the actual
game readme or docs for actual information on how this works) and is
(currently) treated specially by the system. part of this special
handling is that it handles tracking the current score and the next
map separately. this special handling means that the map list will
contain either evolution or other game play mode data w/ no mixing
allowed since we don't want to make evolution unhappy by presenting it
w/ map data that it doesn't understand. the first mode set will 'win'
and maps specified w/ the 'wrong' mode will be dropped silently.

the third and final thing, is the handling and verification of
mods. as there are no bfv mods and i'm adding this feature today
(modulo a delay when i went to the movies) currently there is no
checking that the mod's level actually can handle a specific game play
mode. i don't know if this is even a problem, but i could imagine that
evolution could get grumpy running in some random mod. if you specify
a mode for a mod, we will try to set it and run, and bad stuff may
happen. this is a bug, and will be revisited for 1.1.

Known issues

To work around bugs in some implementations of pthreads (the standard
system threading library on Linux) the server allows you to explicitly
set the stack size to use for new threads. If you need to change this
limit you can do so with the BFV_STACKSIZE environment variable by
exporting it to the server's environment:

$ export BFV_STACKSIZE=`expr 4 \* 1024 \* 1024`
$ ./ +statusMonitor 1

This example sets the stack size to four megabytes.

You can also combine the two lines:
$ BFV_STACKSIZE=`expr 4 \* 1024 \* 1024` ./ +statusMonitor 1

If you see errors about thread creation you might need to use this option.

Option summary

The following options are unique for the dedicated server:

+statusMonitor        1

Enables the curses status monitor which enables you to work with the
in-game console directly at the server.

+priorityDaemon 1

Enables sending priority change requests to the external root daemon
(bfpridaemon) which changes the server niceness while loading. Use
this option (and run the external daemon) to reduce the CPU stress
when running multiple servers on the same machine.

The priority daemon itself is distributed as source code and can be
found under the `bfpridaemon' subdirectory of the installation. Use of
this code is at your own risk and there is no warranty what so ever.

Please note that the following options are deprecated and do not
effect the server in any way: +restart, +dedicated and +game.

Have fun with your Linux server!

dpc (changes made herein are mine but the original thanks go to)
Andreas Fredriksson <>

Licensing information

The Battlefield Vietnam dedicated server is linked with the GNU C and
C++ libraries which are under the LGPL license. By linking dynamically
we ensure that you as a user can use this software with other versions
of these libraries.

A statically linked binary also linked with these libraries is
supplied purely for convenience should you not be able to run the
dynamically linked binary.

The LGPL license text is included with this release and can be found
on the web at

Please note that the Battlefield Vietnam dedicated server itself is
not covered by the LGPL license.

Revision history

Changes in this release:

1.0  five-by-five
    - the map id isn't the map name. so i added the map name back to
      the event log.
      (thanks to forrest thiessen)
    - if we get a log message, we dont have the console running, then
      don't spew it since it is going to log anyway.
      (thanks to some forum poster who's name i don't have handy)
    - added back some more micro-fp-optimizations that exist in the
      win32 build, but i never really got around to before.
    - implemented a variant of the bf1942 maplist format. see the note
      above for the details.
      (thanks to andreasf for most of the changes although i did season
       to taste, and the bf list for nagging me to get off my fat ass)
    - write .pid file to +overlayPath (if set) or the settings path
      otherwise. previously this was written to the installation root
      which is what the client wants (don't ask me why).
      (thanks to christopher kunz)

1.0 goes fourth
    - <sigh> the gameserver's notion of address includes the port
      which doesn't make inet_addr happy and nobody does any error
      checking. this fixes services binding to the server ip.
      (thanks to kingsley foreman)
    - <sigh> win32's accept seems to have the connected socket inherit
      status from the listening socket. this fixes hanging on remote
      console connecting.
      (thanks to kingsley foreman)
    - fixed readme to not have info about updated maplist.con. for
      some reason i thought that we had the same format as 1.6, and
      had left this text in.
    - fixed -m mode from remote console since i was thinking about
      remote console stuff and it turned out to be easy.
    - fixed .static build (well, mostly be re-installing the whole
      damn tool chain)
    - added dummy maplist.con and serversettings.con files as defaults

1.0 the trifecta
    - fix bash-itis in license script
      (thanks to steven hartland)
    - <sigh> nuke should have been dead password file grovelling
      (thanks to andrew a. chen)
    - <sigh> i seem to have dropped custom ports along the way
      (thanks to incist)
    - merged the rest of 1.6's xml logging (that i had on my mental
      list of things to forget)
      (thanks to forrest thiessen)
    - evolution mode is a special case everywhere
    - random avoiding proliferating nan's and inf's
    - server may have a default (system dependent ip) but if the user
      wants to bind to a specific one please do it.
      (thanks to kingsley foreman)
    - more stripping crap invisble to the naked eye
    - one would think that a parameter named 'block' would mean that
      the socket is being put into blocking mode espcially since the
      function is called setBlockingMode, but then you wouldn't
      be thinking like a windows programmer. this fixes the remote
      console hang on non-win32 boxen
      (thanks to kingsley foreman)

1.0 le deuxieme
    - don't assume . is in the path for the license script
      (thanks to kingsley foreman and steve getman)

1.0 the original sin
    - initial release so there've been a lot

Executable MD5 Checksums

94069b96fa4cf1a6b129ac1e98cdde80  ./Build/bfv_linded.static
13a7ef846c20e03b1e2748779ee32ad9  ./Build/bfv_linded.dynamic

Read More

Comments on this File

There are no comments yet. Be the first!

Electronic Arts/DICE

50 XP

Registered 17th March 2004

70 Files Uploaded

Share This File
Embed File