A self-contained, ready-to-play ut99 dedicated server in a docker container.
Find a file
Antoine Mazeas 4f566bf57c Enable local stats logging by default
Signed-off-by: Antoine Mazeas <antoine@karthanis.net>
2021-11-17 11:21:08 +01:00
files Rewrite the docker image configuration (#1) 2021-11-16 17:10:11 +00:00
scripts Rewrite the docker image configuration (#1) 2021-11-16 17:10:11 +00:00
default-config.ini Enable local stats logging by default 2021-11-17 11:21:08 +01:00
docker-compose.yml Rewrite the docker image configuration (#1) 2021-11-16 17:10:11 +00:00
Dockerfile Enable local stats logging by default 2021-11-17 11:21:08 +01:00
LICENSE Rewrite the docker image configuration (#1) 2021-11-16 17:10:11 +00:00
README.md Rewrite the docker image configuration (#1) 2021-11-16 17:10:11 +00:00

ut99ds

A self-contained, ready-to-play ut99 dedicated server in a docker container.

Features:

  • Official dedicated server binaries v436
  • OldUnreal patch for linux v469b
  • All four Bonus Packs
  • A number of popular community maps
  • Some popular mutators (see Mutators)

Build

docker build -t <imagename> .

Note: the example compose file docker-compose.yml expects an image tag of karthanistyr/ut99ds:469b.

Usage

Using docker run

docker run --name ut99ds -p 7777:7777/udp -p 7778:7778/udp -p 8777:8777/udp -v utlogs:/utlogs -v utcustom:/utcustom karthanistyr/ut99ds:469b

Using docker compose

Assuming use of the provided compose file docker-compose.yml:

docker compose up

Note: the example compose file docker-compose.yml expects an image tag of karthanistyr/ut99ds:469b.

This will create and run the container, exposing the game server on port 7777.

Some volumes will be created (also see Volumes):

  • utlogs: log files, prefixed with the timestamp for when the server process was initiated.
  • utcustom: a repository for additional custom content (maps, mods, mutators)

Environment Variables

Variable Type Default Description
UT99_MAP String CTF-Face The default map to load when the server starts. Should be in accordance with UT99_MODE when applicable.
UT99_MODE String Botpack.CTFGame The default game mode to load when the server starts. Should be in accordance with UT99_MAP when applicable.
UT99_MUTATOR_LIST String undefined Comma-separated list of active mutators specified by class name. Example: BotPack.InstaGibDM,MapVoteLAv2.BDBMapVote,FlagAnnouncementsV2.FlagAnnouncements
UT99_SERVER_URL String undefined The effective URL parameter to the ucc utility. If specified, it will override all of UT99_MAP, UT99_MODE, UT99_MUTATOR_LIST.
UT99_INI_PATH String /utconfig/ut99ds.ini Path to the .ini file for the server's runtime.

Volumes

Optional but recommended.

Logs

Logs are located internally in /utlogs. To make them persistent, it should perhaps be mounted as a docker volume.

Commands

  • docker run: -v utlogs:/utlogs
  • docker compose:
services:
  ut99ds:
    volumes:
      - utlogs:/utlogs
volumes:
  utlogs:

Custom content

The core components shipped with the docker image are immutable by design. To add other maps, mods and mutators, the files should be added into the /utcustom directory.

The server's .ini file must have the following paths in the Core.System section

[Core.System]
...
Paths=/utcustom/System/*.u
Paths=/utcustom/Maps/*.unr
Paths=/utcustom/Textures/*.utx
Paths=/utcustom/Sounds/*.uax
Paths=/utcustom/Music/*.umx
...

A standard UT99 directory layout may be replicated under /utcustom to host the various maps, mods and mutators:

/utcustom
├── Maps
├── Music
├── Sounds
├── System
└── Textures

Commands

  • docker run: -v utcustom:/utcustom
  • docker compose:
services:
  ut99ds:
    volumes:
      - utcustom:/utcustom
volumes:
  utcustom:

Mutators

CustomCrossHairScale

This mod is loaded permanently. It allows to scale the crosshair as it might be too big on some resolutions. Any player can just go to their console (tab) and execute the following command: mutate ch_scale 1

FlagAnnouncementsV2

This mod is added as a mutator. So it must be added to the mutators list to work. When this mod is enabled, there is a voice that tells if and which flag is taken/dropped/returned. Further configuration can be done in the System/FlagAnnouncements.ini file.

KickIdlePlayers2

This mod is added as a mutator. So it must be added to the mutators list to work. When this mod is enabled, inactive users will be kicked from the server. Further configuration can be done in the System/KickIdlePlayers2.ini file.

MapVoteLAv2

This mod is added as a mutator. So it must be added to the mutators list to work. When this mode is enabled, a map vote / kick screen will come after each map so the users can vote for the next map. Further configuration can be done in the System/MapVoteLA.ini file.

NoSelfDamagev03

This mod is added as a mutator. So it must be added to the mutators list to work. When this mod is enabled, self damage (for example from rocket launchers) can be disabled. Further configuration can be done in the System/NoSelfDamage.ini file.

WhoPushedMe

This mod is added as a mutator. So it must be added to the mutators list to work. When this mode is enabled, detects if someone is killed because someone else pushed/hit them and they fell to their death and grants the killer the corresponding points (or negative points when a teammate is killed).

ZeroPingPlus103

This mod is added as a mutator. So it must be added to the mutators list to work. When this mod is enabled, the clientside calculates if a hit was a hit or not and tells this the server, effectively leading to 0 ping.

Acknowledgements

This work was inspired by Roemer/ut99-server.

Maps, mods and mutators are credited to their original creators.