Skip to content

Commit 8ef3c15

Browse files
committed
Add Docker configuration for bot training
- Configure server for duel mode with bot support - Add AGENT_BOT_NAME environment variable - Add stress test script for stability verification
1 parent 64d9bd1 commit 8ef3c15

File tree

4 files changed

+49
-1
lines changed

4 files changed

+49
-1
lines changed

docker-compose.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,17 @@ services:
3333
- QLX_REDISADDRESS=redis
3434
- QLX_OWNER=76561197984141695
3535
- QLX_AGENTSTEAMID=76561197984141695
36+
- QLX_AGENTBOTNAME=anarki
3637
- MAP=campgrounds
38+
- GAMETYPE=duel
39+
# ===== ISOLATION TESTING FLAGS =====
40+
# Set to "1" to enable, "0" to disable
41+
- QL_AGENT_ENABLE=1
42+
- QL_AGENT_ENABLE_STATE_LOOP=1
43+
- QL_AGENT_ENABLE_SET_USERCMD=1
44+
- QL_AGENT_ENABLE_EVENTS=1
45+
- QL_AGENT_ENABLE_ADMIN=1
46+
- QL_AGENT_ENABLE_COMMANDS=1
3747
depends_on:
3848
redis:
3949
condition: service_healthy

docker/server.cfg

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Quake Live Server Configuration for Agent Training
22
set sv_hostname "AgentTraining"
3-
set sv_maxclients 2
3+
set sv_maxclients 8
4+
set teamsize 1
45
set fraglimit 0
56
set timelimit 0
67
set g_inactivity 0
@@ -14,10 +15,21 @@ set qlx_redisAddress "redis"
1415
set qlx_redisPort "6379"
1516
set qlx_agentSteamId "76561197984141695"
1617

18+
// Bot settings
19+
set bot_enable 1
20+
set bot_minplayers 0
21+
1722
// Duel settings
1823
set g_warmupDelay 0
1924
set g_warmupReadyPercentage 0
2025
set g_levelStartDelay 0
2126

27+
// Disable ALL voting and map changes
28+
set g_allowVote 0
29+
set g_voteFlags 0
30+
set g_allowSpecVote 0
31+
set sv_mapPoolFile ""
32+
set g_mapRotation ""
33+
2234
// Item pickup logging - enables console messages when items are picked up
2335
set g_logItemPickup "1"

docker/start.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,18 @@ until redis-cli -h ${QLX_REDISADDRESS:-redis} ping 2>/dev/null; do
1010
done
1111
echo "[start.sh] Redis is ready!"
1212

13+
# Clear any stale Redis keys from previous runs
14+
echo "[start.sh] Clearing stale Redis keys..."
15+
redis-cli -h ${QLX_REDISADDRESS:-redis} DEL ql:agent:last_state ql:agent:frame ql:agent:debug ql:agent:usercmd 2>/dev/null || true
16+
1317
# Set default map
1418
MAP=${MAP:-toxicity}
1519
GAMETYPE=${GAMETYPE:-duel}
20+
AGENT_BOT=${QLX_AGENTBOTNAME:-anarki}
21+
BOT_SKILL=${BOT_SKILL:-5}
1622

1723
echo "[start.sh] Starting Quake Live server on map: $MAP ($GAMETYPE)"
24+
echo "[start.sh] Agent bot: $AGENT_BOT, Skill: $BOT_SKILL"
1825

1926
# Run with minqlx
2027
# +dedicated 1 enables dedicated server mode

stress_test.sh

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!/bin/bash
2+
echo "Starting 50-restart extended stress test..."
3+
crashes=0
4+
for i in $(seq 1 50); do
5+
if [ $((i % 10)) -eq 0 ]; then
6+
echo "=== Progress: $i/50, crashes: $crashes ==="
7+
fi
8+
redis-cli -h 127.0.0.1 PUBLISH ql:admin:command '{"command":"restart_game"}' > /dev/null 2>&1
9+
sleep 3
10+
if ! docker ps | grep -q ql-server; then
11+
crashes=$((crashes + 1))
12+
echo "CRASH at restart $i (total crashes: $crashes)"
13+
docker logs ql-server 2>&1 | tail -10
14+
cd /c/Users/kylec/QuakeLiveInterface && docker-compose up -d > /dev/null 2>&1
15+
sleep 10
16+
fi
17+
done
18+
echo "=== 50-restart test complete: $crashes crashes ==="
19+
docker ps --format "{{.Status}}" --filter "name=ql-server"

0 commit comments

Comments
 (0)