|
|
||
|---|---|---|
| files | ||
| scripts | ||
| default-config.ini | ||
| docker-compose.yml | ||
| Dockerfile | ||
| LICENSE | ||
| README.md | ||
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.