Backend: Match-Lobbys, Map-Veto, Echtzeit und CS2-Serveradapter

Express + Socket.IO + SQLite. Veto-Engine mit konfigurierbaren Map-Pools
und validierten Abläufen, rollenbasierte Berechtigungen, Server-Lebenszyklus
mit Demo-, Docker- und Static-Pool-Adapter (RCON), automatisches Herunterfahren.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
SPP UserandClaude Opus 5.5 committed 2026-10-25 16:50:22 +01:00
commit 104aa1a67b
27 files changed
+6355

No files matched your search

+41
View File
@@ -0,0 +1,41 @@
{
"$comment": "Map-Pools und Veto-Abläufe. Schritte: ban:X, pick:X, side:X, decider. X = erstes Team (startet das Veto), Y = zweites Team. 'side' folgt immer auf einen Pick bzw. auf 'decider' und bezieht sich auf diese Map. Ungültige Abläufe werden beim Start gemeldet und das Format ist dann nicht auswählbar.",
"pools": {
"competitive": {
"label": "Competitive 5 gegen 5",
"teamSize": 5,
"gameType": 0,
"gameMode": 1,
"maps": [
{ "id": "de_ancient", "name": "Ancient", "color": "#3f8f5a" },
{ "id": "de_anubis", "name": "Anubis", "color": "#c79a3d" },
{ "id": "de_dust2", "name": "Dust II", "color": "#d3a45c" },
{ "id": "de_inferno", "name": "Inferno", "color": "#c4573a" },
{ "id": "de_mirage", "name": "Mirage", "color": "#b98a4a" },
{ "id": "de_nuke", "name": "Nuke", "color": "#4a8fbf" },
{ "id": "de_train", "name": "Train", "color": "#7a7f8a" }
],
"flows": {
"bo1": ["ban:X", "ban:Y", "ban:X", "ban:Y", "ban:X", "ban:Y", "decider", "side:X"],
"bo3": ["ban:X", "ban:Y", "pick:X", "side:Y", "pick:Y", "side:X", "ban:X", "ban:Y", "decider", "side:X"],
"bo5": ["ban:X", "ban:Y", "pick:X", "side:Y", "pick:Y", "side:X", "pick:X", "side:Y", "pick:Y", "side:X", "decider", "side:Y"]
}
},
"wingman": {
"label": "Wingman 2 gegen 2",
"teamSize": 2,
"gameType": 0,
"gameMode": 2,
"maps": [
{ "id": "de_inferno", "name": "Inferno", "color": "#c4573a" },
{ "id": "de_nuke", "name": "Nuke", "color": "#4a8fbf" },
{ "id": "de_overpass", "name": "Overpass", "color": "#5f8f7a" },
{ "id": "de_vertigo", "name": "Vertigo", "color": "#8a74b8" }
],
"flows": {
"bo1": ["ban:X", "ban:Y", "ban:X", "decider", "side:Y"],
"bo3": ["ban:X", "pick:Y", "side:X", "pick:X", "side:Y", "decider", "side:X"]
}
}
}
}