From time to time I play Unreal Tournament 2004 with my kids. Aging game, being older than either of them, is not an obstacle to having fun. However, the inability to host a networked game is. As Windows updates and firewall rules change, we end up figuring out who gets to host the game every few months. Well, no more!
To solve my issues, I decided to go with Laclede's LAN Unreal Tournament 2004 Dedicated Freeplay Server. This neat docker package has everything you need to host games on Linux infrastructure and, as often happens with docker, is trivial to run. If this is what you need, stop reading and start gaming.
But I wanted to go a small step further and set up this server to run on Kubernetes. Surprisingly, I didn't find any YAML to do the same, so I decided to prepare one myself.
skopeo copy docker://lacledeslan/gamesvr-ut2004-freeplay:latest docker-archive:gamesvr-ut2004-freeplay.tar
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: default
name: ut2004server
labels:
app: ut2004server
spec:
replicas: 1
selector:
matchLabels:
app: ut2004server
template:
metadata:
labels:
app: ut2004server
spec:
containers:
- name: ut2004server
image: lacledeslan/gamesvr-ut2004-freeplay:latest
workingDir: "/app/System"
command: ["/app/System/ucc-bin"]
args:
[
"server",
"DM-Antalus.ut2?AdminName=admin?AdminPassword=admin?AutoAdjust=true?bPlayerMustBeReady=true?Game=XGame.XDeathMatch?MinPlayers=2?WeaponStay=false",
"nohomedir",
"lanplay",
]
envFrom:
resources:
requests:
memory: "1Gi"
cpu: "500m"
---
apiVersion: v1
kind: Service
metadata:
namespace: default
name: ut2004server
labels:
app: ut2004server
spec:
type: LoadBalancer
selector:
app: ut2004server
ports:
- name: game
protocol: UDP
port: 7777
targetPort: 7777
- name: web
protocol: TCP
port: 8888
targetPort: 8888
Happy gaming!
PS: While the server image has been available for a while now and it seems that nobody minds, I would consider downloading an image copy, just in case.