StreamTanks v0.3.0 — Scenario Lab, Custom Neon Palettes & Multi-Framerate Physics Parity
StreamTanks v0.3.0 is a major milestone release delivering deep aesthetic customization for streamers, critical multi-framerate physics and crater parity, automated match pacing, and a brand new developer/QA toolchain: Scenario Lab.
🌟 What's New in v0.3.0
1. 🎨 Customizable Neon Battlefield Colors (%terraincolor & %tankcolor)
Make the StreamTanks overlay uniquely match your stream's aesthetic and branding:
- Terrain Glow Customization (
%terraincolor <hex|preset>): Change the neon outline glow and ambient terrain fill. Supports built-in color presets (cyan,green,purple,orange,yellow,red,white) or any custom hex code (e.g.%terraincolor #ff0055). Reset anytime with%terraincolor reset. - Tank Chassis & Tread Glow (
%tankcolor <hex|preset>): Fully customize the neon highlight glow of tanks on the battlefield with matching presets and custom hex support (%tankcolor reset).
2. 🧗 Tactical Terrain Climbing (%terrainclimb on|off)
Control how tanks navigate rugged landscapes:
- Configure whether tanks can scale steep cliffs, sheer drops, and crater walls or get realistically blocked by insurmountable vertical slopes.
- When set to
off(default), tanks must strategically blast away crater edges or maneuver through gentle terrain slopes.
3. ⏱️ Automated Match Flow & Auto-Round Improvements
- Zero-Wait Auto-Round: Auto-round scheduling now dynamically triggers and re-arms when the server boots, when idle players join the lobby, and whenever settings change.
- Instant Lobby Awakening: Viewers joining an empty or idle lobby will immediately wake the battlefield without needing manual streamer intervention.
4. 🎛️ Streamlined Commander Admin Console (/admin)
- Zero-Config Twitch Extension Setup: Simplified the Twitch Extension card in the Commander Dashboard, removing manual C&C URL entry so streamers can link their channels effortlessly.
- Real-time settings synchronization, match rollover controls, and instant kick/delete moderation tools.
5. 🎯 Multi-Framerate Physics Parity & Ground-Truth Crater Synchronization
- Framerate Parity: Resolved discrete Euler integration differences between the Go server (60Hz ticker) and client displays running at high refresh rates (144Hz, 120Hz, 60Hz).
- Surface Clamping: Crater centers are now clamped directly to the terrain surface (
groundY := getTerrainHeight(...)) instead of underground penetration points. Go backend craters and browser overlay craters now match pixel-for-pixel regardless of monitor refresh rate. - Deterministic Blast Ordering: Shell detonations and player kill order now execute in deterministic alphabetical sequence, eliminating race conditions when multiple artillery rounds explode on the exact same frame.
- Parity Verified: 5,000 randomized multi-framerate simulations verified 0.0% terrain drift and 0.0% kill mismatch.
6. 🔬 Scenario Lab & Visual Frame Replayer (npm run lab)
A brand new standalone differential physics testbench and visual replay suite:
- Visual Replayer (
http://localhost:8105): 1920x1080 canvas replaying server vs client trajectories frame-by-frame with timeline scrubbing, ghost overlays, and variable playback speeds (0.1x to 2x). - Scenario Library with Pixel Diff Sorting: Scenarios are automatically sorted by visual discrepancy (
MaxPixelDiffdescending) with glowing neon badges (Δ X.Xpx) highlighting terrain and position drift. - Persistent V8 / Node.js Worker Pool: High-performance multi-core fuzzer scaled across all CPU cores (
runtime.GOMAXPROCS(0)) running hundreds of scenarios per second without child process startup latency. - Flakiness & Parity Audit CLI: Run
go run ./cmd/scenariolab -replay <scenario.json> -runs 100to automatically audit simulation determinism and calculate statistical failure rates across iterations.
7. 📚 Official Documentation Portal
- Launched official GitHub Pages documentation portal featuring:
- Streamer Setup & OBS Configuration Guide
- Viewer & Player Chat Command Guide
- Full Command Reference & Permission Matrix
- Embedded 24/7 Live Stream Showcase
📦 Closed Issues & Commits
- #80: Prevent tanks from climbing steep walls and crater edges (
%terrainclimb) - #81: Customizable terrain color with presets and hex support (
%terraincolor) - #82: Customizable tank color with presets and hex support (
%tankcolor) - #83: Trigger auto-round on server startup, idle player join, and setting changes
- #84: Scenario Lab differential fuzzer, visual replayer, and crater parity reconciliation
- #79: Simplify Admin Console Twitch Extension card and remove C&C URL input
- #78: Remove
st_cc_serverfrom GoReleaser release archives - #35: Replace real-time sleeps in tests with a mock Clock interface
🚀 Getting Started
For Streamers (OBS Studio)
- Download
StreamTanks_windows_amd64.zip(or your OS archive) from the release assets below. - Run the executable:
./StreamTanks -channel <your_twitch_channel> -addr :8102
- Add
http://localhost:8102as an OBS Browser Source (1920x1080). - Access your Commander Dashboard at
http://localhost:8102/admin.
For Twitch Extension Deployment
Download extension.zip from the release assets below and upload it directly to your Twitch Developer Console version assets.
For Developers & Contributors
Launch Scenario Lab to test and replay physics scenarios:
npm run labOr run the high-speed differential fuzzer:
npm run fuzz