Wave-Survival-Shooter auf OpenArena-Basis – Railgun & Lightning Gun gegen steigende Bot-Wellen, Highscore-Jagd, kompletter Neon-Look.
Spielen:
scripts/start-quake3e.sh(Startmenü: PLAY = Ghost, DAILY / GHOST / ARENA)
Direkt:--daily·--ghost·--arena <name>
oder:openarena +set fs_game neonarena +g_gametype 14
NeonArena hat 14 Arenas mit unterschiedlichen Themen und Spielstilen:
| Arena | Map | Beschreibung | Schwierigkeit |
|---|---|---|---|
| Neon Arena | oa_shine | Standard Arena — ausgeglichenes Gameplay | ⭐ |
| Boss Rush | oa_dm3 | Nur Bosse — jede Welle ein Boss | ⭐⭐⭐ |
| Ghost Protocol | oa_shine | Ghost-Kit nur — Loadouts und Fähigkeiten testen | ⭐⭐ |
| Ironman | oa_minia | Hardcore, ein Leben — dunkler Look, gleiche Map wie Frostbite | ⭐⭐⭐⭐ |
| Catacombs | oa_rpg3dm2 | Enge Gänge und dunkle Ecken — kurze Reichweite, hoher Schaden | ⭐⭐⭐ |
| Bleed Chamber | slimefac | Dunkle Kammer — Sichtbarkeit ist die Herausforderung | ⭐⭐ |
| Node Control | oa_dm1 | Multi-Level Arena mit Plattformen und Brücken — vertikales Gameplay | ⭐⭐⭐ |
| Desert Storm | islanddm | Offene Fläche — Long-Range Combat | ⭐⭐ |
| Vortex Ring | oa_dm6 | Vertikale Arena — LOWGRAV-Modifier zentral | ⭐⭐⭐⭐ |
| Frostbite | oa_minia | FROST-Modifier, Eis-Look, langsame Drones — nicht Ironman | ⭐⭐ |
| Skybridge | suspended | Schwebende Plattformen, Fall-Schaden, niedrige Gravity | ⭐⭐⭐ |
| Underhive | am_underworks | Enge Korridore — Lightning Gun, aggressive Drones | ⭐⭐⭐ |
| Reactor | hydronex | Industrie-Arena, enge Gänge um den Kern | ⭐⭐ |
| Overgrowth | am_galmevish | Vegetation — Ghost-Kit an, Cloak stärker | ⭐⭐ |
Starten mit: scripts/start-quake3e.sh --arena <name> (z.B. --arena catacombs)
- Wave-Survival: Bis zu 20 Wellen; Welle N spawnt N+1 Bots. Ein Leben — tot ist tot. 12 s Pause zwischen Wellen.
- Waffen-Identität: Spawn mit Railgun + Lightning Gun + Gauntlet. Andere Waffen-Pickups werden ignoriert – Rail/LG-Pickups dienen als Ammo-Nachschub.
- Ghost-Kit (optional,
g_neonwave_ghost 1/--ghost): StarCraft-inspirierter Loadout — Rail-Snipe, Cloak-Drain, EMP-Round, Lockdown, Tac-Nuke-Calldown, Detector ab Welle 8. Drei Kits perL/loadout next(Infiltrator / Saboteur / Spectre). Siehe Ghost-Reference. - Skill-Kurve: Bot-Skill steigt mit der Welle (1 → 5).
- Wellen-Modifier (ab Welle 5, auch in Boss-Wellen): 15 Modifier mit Synergie-/Anti-Synergie-System (ab Welle 8). Siehe Modifier-Reference.
- Combo-System: Kills innerhalb von 3 s ketten sich zu einer Serie. Ab Best-Serie 5 gibt es Bonus-Upgrade-Punkte (+1 pro weitere 5er-Stufe).
- Upgrade-System: Gesammelte Punkte in der Pause ausgeben — F1 = HP (bis 8), F2 = DMG (bis 7, +10 %/Level), F3 = SPD (bis 7). Kosten: 1 Punkt für Level 0-3, 2 Punkte für Level 4+. HUD zeigt Punkte + Level live.
- Perk-System: 3 Angebote pro Pause, 1/2/3 wählen. 6 Perks: PIERCE, CHAIN, DASH, OVERCHARGE, SECOND WIND, SKIP. Ghost würfelt CHAIN nicht (Lightning Gun); PIERCE bleibt.
- Run-Statistik & End-Screen: Bei Victory/Game Over Overlay mit überlebten Wellen, Kills, bester Combo und Laufzeit.
- Benannte Drones: Killfeed zeigt
Drone W3-1stattsarge. - Belohnungen: In der Wellen-Pause fallen Mega Health + Heavy Armor + Rail/LG-Ammo an deiner Position.
- Highscore: Beste Welle persistent (
g_neonwave_best). Game-Over-Screen mit Welle/Best; FIRE startet neu. - Daily Challenge: Gleicher Tag = gleiche Herausforderung (FNV-1a-Hash über Datum bestimmt Boss-Rotation und Modifier-Reihenfolge).
- Seasonal Challenge: Wöchentlich rotierende Ziele (
g_neonwave_seasonal 1) — 16 Challenges, Fortschritt + Titel-Reward, lokale Top-5-Rangliste. - Controller: Aim-Assist und
[JOY]-HUD beiin_joystick 1. Analog-Stick, UI-Navigation und Rumble über Quake3e-SDL2 (M13). Pad-Binds fürs Ghost-Kit. - Wellen-Jingles: Sound-Signal bei Wellenstart und -clear.
- Neon-Look: Dunkle Skybox, Neon-Grid auf oa_shine, Cyan-Rail/LG mit D-Lights, Drohnen-Cyan-Shell (Boss magenta), Rail-Impact-Burst, LG-Sparks, Muzzle-Flare, pulsierende Boss-Gefahr-Vignette, Energy statt Blut, Vignette-HUD.
- Coop: Bis 4 Spieler, Wave-Clear erfordert alle Drones tot + mindestens ein Human lebt. Tote Spieler respawnen am Wellenstart oder können als Spectator zuschauen.
- Wave-Select: Wähle die Startwelle (1, 5, 10, 15, 20) per
waveselectin der Konsole. - Achievements: Erfolge wie FIRST VICTORY, SURVIVOR, SHARPSHOOTER, COMBOMASTER, SPEEDRUNNER, HARDCORE werden beim Freischalten im HUD angezeigt.
- Boss-Reference — Alle 13 Boss-Typen mit Phase-2-Verhalten
- Modifier-Reference — Alle 15 Modifier + Synergien
- Perk-Reference — Perk-System mit allen 6 Perks
- Ghost-Reference — StarCraft Ghost-Kit (Loadouts, Cloak, EMP, Lockdown, Nuke, Detector)
- Ghost-Roadmap — Kit G1–G12; nächster Hebel ist Playtest-Balance
- Architektur — Code-Struktur, Modul-Grenzen, Build-System
- Test-Suite — Headless-Suite (116 Tests: 1–118 inkl. 9b, ohne 85–87)
- Engine-Integration — Quake3e, Renderer, Bloom, Installation
curl -sL https://raw.githubusercontent.com/bumblei3/neon-arena/main/scripts/install.sh | bashOder manuell:
git clone https://github.com/bumblei3/neon-arena.git
cd neon-arena
./scripts/install.shStarte mit: neonarena — Startmenü PLAY / DAILY / GHOST / ARENA.
- PK3 aus den Releases
herunterladen und nach
~/.openarena/entpacken (es entstehtneonarena/). openarena +set fs_game neonarena +g_gametype 14 +map oa_shine
OpenArena 0.8.8 (oder kompatibel) muss installiert sein.
Nach dem ersten Start einmal vid_restart in der Konsole (~), damit r_mapoverbrightbits 1 die Map dunkler zieht und Neon besser knallt. Zurück zur hellen Map: seta r_mapoverbrightbits 2 + vid_restart.
NeonArena profitiert stark von einer modernen Renderer-Pipeline: das gesamte Neon-Feeling (Additive-Elemente, cyan/magenta Glow, HUD-Vignette) kommt in voller Wirkung zum Tragen, wenn Bloom aktiv ist. Der empfohlene Weg dafür ist die Quake3e-Engine – einer modernen Q3-Engine mit OpenGL2- und Vulkan-Renderer inkl. Bloom-Unterstützung.
Die klassische OpenArena-Engine bleibt ausdrücklich voll unterstützt. Quake3e ist die grafisch stärkste Variante, kein Ersatz für den Normal-Pfad.
- Engine-Binary besorgen:
- CI-Artifact aus dem Release oder dem neusten
main-Lauf (Artifactneonarena-engine,dist/neonarena-engine-linux64.tar.gz), entpackt nach~/quake3e-engine/. - Selbst bauen:
git clone --depth 1 https://github.com/ec-/quake3e && cd quake3e && make ARCH=x86_64– das Binary landet inbuild/release-linux-x86_64/.
- CI-Artifact aus dem Release oder dem neusten
- OpenArena-Basisdateien bereitstellen:
baseoa/*.pk3aus der OpenArena-Installation nach~/quake3e-engine/baseq3/kopieren oder das Engine-Patch verwenden:patches/engine-quake3e-oa.patchsetzt das hardcodedBASEGAMEvon"baseq3"auf"baseoa"(im CI-Build automatisch angewendet), damit Quake3e OA-Content direkt ausbaseoa/lädt.
- NeonArena-Mod installiert (siehe Build-Abschnitt): die PK3(s) liegen in
~/.openarena/neonarena/.
Launcher probed GPU einmal und schreibt ~/.openarena/neonarena/gfx-auto.cfg
(low/med/high). Neu probe: scripts/start-quake3e.sh --gfx-reset.
scripts/start-quake3e.sh
# oder direkt:
~/quake3e-engine/quake3e.x64 \
+set cl_renderer vulkan \
+set r_bloom 1 \
+set fs_basepath ~/quake3e-engine \
+set fs_homepath ~/.openarena \
+set fs_game neonarena \
+g_gametype 14 \
+map oa_shinecl_renderer vulkan→ Vulkan-Renderer (modernster Pfad).cl_renderer opengl→ OpenGL2-Renderer, ebenfalls mit Bloom.r_bloom 1aktiviert Bloom. Ohne Bloom ist der Effekt deutlich blasser – Neon glüht nur mit Bloom richtig.
Auf GNOME/Wayland läuft Quake3e sauberer über SDL2s native Wayland-Backend statt dem
Xwayland-Compat-Layer (vermeidet Flicker/Resolution-Fallback nach Standby). Das
scripts/start-quake3e.sh erzwingt es per --wayland (oder NW_WAYLAND=1):
scripts/start-quake3e.sh --wayland --daily
# bzw. direkt:
SDL_VIDEODRIVER=wayland ~/quake3e-engine/quake3e.x64 +set cl_renderer vulkan +set r_bloom 1 \
+set fs_basepath ~/quake3e-engine +set fs_homepath ~/.openarena +set fs_game neonarena \
+g_gametype 14 +map oa_shineVoraussetzung: die Engine wurde mit SDL2+Wayland-Unterstützung gebaut (CI-Engine-Artifact
enthält libwayland-dev, also Wayland-tauglich). Falls Wayland nicht startet, fällt SDL2
automatisch auf X11 zurück.
Quake3e bietet zusätzliche Bloom-CVars, die eingestellt werden können, wenn Neon zu stark / zu schwach überblitzt:
r_bloom– Bloom an/aus (1/0).r_bloom_intensity– Endgültige Bloom-Blend-Faktor, Standard 0.5. Höher = stärkerer Bloom, niedriger = dezenterer Bloom.r_bloom_threshold– Farb-Schwellenwert für die Bloom-Extraktion, Standard 0.6. Höher = weniger Bloom, niedriger = stärkerer Bloom.r_bloom_modulate– Farbmodulation: 0 = aus (Standard), 1 = self-modulate (color × color), 2 = Intensity-modulate (color × luma).r_bloom_threshold_mode– Extraktionsmodus: 0 = beliebiger Kanal ≥ Schwellenwert, 1 = Durchschnitt ≥ Schwellenwert, 2 = Luminanz ≥ Schwellenwert.
Weitere Grafik-CVars:
r_ext_multisample– MSAA Anti-Aliasing (0/2/4/6/8). Bessert Kanten in geometrischen Details (Grid-Linien, Wände).r_hdr– HDR-Framebuffer (0/1). 16-bit Farbtiefe, bessere Bloom-Precision, aber schlechtere Performance.
Empfehlung: erst mit r_bloom 1 spielen, dann nur nachregulieren, wenn konkrete Elemente (z.B. Rail-Impact, Vignette, HUD) über- oder unterbelichtet wirken.
Bloom ist für NeonArena besonders sensitiv, weil das Look-Pack auf additive, leuchtende Elemente setzt. Beim Wechsel auf Quake3e + Bloom sollte visuell geprüft werden:
- Skybox / Umgebungslicht:
anoice1-Skybox dunkel-genug, Neon-Punkte schlagen korrekt an. - Boden-Grid (
grid.tgaadditive Schicht): leuchtet, ohne ins Histo zu überlaufen. - Railgun / Lightning Gun:
railCore,lightningBoltNewetc. bleiben additiv und gut sichtbar. - Drohnen-Shell + Boss-Shell:
neonarena/droneShell,neonarena/bossShell(und optionalbossShellPulse) lesen sich mit Bloom nicht „matschig". - HUD:
neon_vignette,neon_bar,crosshaira, Combo/Feedback-Overlays im cgame bleiben lesbar und wirken nicht durch Bloom verwaschen. - Energy-Blood / Impact-Puffs: additive Spurt/Glow-Elemente wirken explosionsartig, nicht verbrannt.
Falls ein Element unter Bloom schlecht wirkt, liegt die Ursache meist in einem der Look-Pack-Blocks (z. B. zu starker additive rgbGen const, Kombination mit bereits hellem Basis-Textur) – das lässt sich in assets/scripts/neon-look.shader nachjustieren (Blend-Modus, Konstanten, tcMod-Skaling).
.github/workflows/engine-quake3e.yml baut bei jedem Push auf main (und optional manuell) die Quake3e-Engine mit dem OpenArena-Kompatibilitäts-Patch und veröffentlicht das Binary als Artifact neonarena-engine. Der Pfad wird automatisch mitgepflegt, sobald der Upstream-Quake3e-Build kompatibel bleibt.
Der Patch patches/engine-quake3e-oa.patch ist kein Mod-Patch – er wird nur beim Engine-Build angewendet (nicht beim Mod-Bau build-mod.sh).
- Ich habe nur OpenArena-0.8.8, kein Quake3e? Dann läuft NeonArena normal auf der OpenArena-Engine – der Mod ist voll funktionstüchtig, nur ohne Bloom.
- Bloom bringt nichts bei meinem OpenGL-Renderer? Quake3e mit
cl_renderer openglliefert ebenfalls Bloom (OpenGL2). Der Vulkan-Pfad ist der mit Abstand stärkste, aber OpenGL2+Bloom ist besser als kein Bloom. - Kann ich Bloom nur für NeonArena aktivieren?
r_bloomist eine Cvar der Quake3e-Engine, nicht des Mods. Sie gilt global pro Lauf. - Mod- und Engine-Updates gleichzeitig? Mod-Updates (PK3, QVMs) kommen aus dem normalen Mod-Build. Engine-Updates kommen aus dem
engine-quake3e-CI-Pfad oder eigenem Quake3e-Build. Beide Pfade sind unabhängig.
Voraussetzungen: build-essential, bison, flex, zip (+ installiertes
OpenArena zum Testen).
git clone --recurse-submodules https://github.com/bumblei3/neon-arena.git
cd neon-arena && ./build-mod.sh # baut + installiert nach ~/.openarena/neonarenaGamecode-Änderungen werden im Submodule committed und gepusht
(cd oa-gamecode && git push), danach der neue Stand im Parent-Repo
festgehalten (git add oa-gamecode && git commit).
build-mod.sh— baut QVMs + native Module, installiert nach~/.openarena/neonarena/Makefile.local— Build-Konfiguration (NEONARENA_MOD, lcc-Toolchain)oa-gamecode/Makefile— OpenArena-Makefile mit NeonArena-Erweiterungen
oa-gamecode/
├── code/game/
│ ├── g_neonwave.c # Hauptlogik (Waves, Modifier, Boss, Perks, Records)
│ ├── g_neonwave.h # Defines (NW_MOD_*, NW_BOSS_*, NW_PERK_*)
│ ├── g_ghost.c # Ghost-Kit (Loadouts, Cloak, EMP, Nuke, Detector)
│ ├── g_seasonal.c # Wöchentliche Challenges + Leaderboard
│ ├── g_cmds.c # upgrade, waveselect, loadout, cloak/emp/lockdown/nuke
│ └── g_main.c # CVar-Registrierungen
└── code/cgame/
└── cg_draw.c # HUD, Modifier-Anzeige, Codex, Ghost-Leiste
Siehe Architektur für Details.
Ein Tag v* triggert automatisch:
- Build der QVMs und PK3-Dateien
- Vollständige Test-Suite (116 Tests)
- Erstellung eines GitHub Releases mit
neonarena.pk3undneonarena-qvm.pk3
GAMEVERSION in code/game/g_local.h muss mit dem Tag übereinstimmen.
GNU GPL v2 (kompatibel mit OpenArena).
Feedback willkommen! Probleme, Ideen und Feature-Requests:
- Issues: https://github.com/bumblei3/neon-arena/issues
- Discord: (Link folgt)
- Email: (optional)
Jede Rückmeldung hilft, NeonArena besser zu machen. Egal ob Bug-Bericht, Balancing-Vorschlag oder Lob — ich höre zu.
Version: v0.90 | Letzte Aktualisierung: 2026-09-09