Releases: mrpoundsign/StreamTanks
Release list
StreamTanks v0.3.1 — Security Hardening, Claim Protection & Go Modernization
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 fuzzv0.2.2
Changelog
- 5572b9f Fix cache issues for UI positioning
- 9f18756 Fixes #69: Make Protractor & Left Tactical UI position configurable
- adf7a0e Fixes #69: Make Protractor & Left Tactical UI position configurable
- eb4cc4f Fixes #70: Require explicit join for active matches, restore idle roaming, and add %leave command
- 20c74fa Implement leaderboard score decay, bounty system, and elimination skull (Closes #22)
- e275d67 Require explicit join for active combat and allow idle chat roaming (Closes #70)
- a9bec23 feat(app): persist player tank emote preferences across games in SQLite (Closes #76)
- 6a1ae8f feat(game): add %kick command and wire Admin Console Kick button (Fixes #66, Fixes #67)
- 84d0799 feat(game): retain leaving players until game over and add protractor leave button
- 75507ab feat(overlay): multi-column post-game casualty board layout (Closes #75)
- 9a37fca feat(overlay): rocket SVG projectile wrapper with emote sticker and exhaust trails (Closes #73, Closes #74)
- 113fa5c feat: Add 1-time shield ability, bot shield AI, and protractor cleanup
- e27b171 feat: persist channel name and configure via admin console (Fixes #71)
- a0b0b22 fix(overlay): render custom emote on projectiles and enable chat in preview (Fixes #72)
- 460837a refactor(game): extract processCommand into dedicated command handlers (Closes #53)
- e03d6d8 test(app): add concurrent test for clearAppliedCraters (Closes #43)
- 835f4bc 🧹 Refactor boolean arg parsing to reduce duplication
v0.2.1
StreamTanks v0.2.0 — Twitch Extension, C&C Relay Server, & Combat HUD Polish
StreamTanks v0.2.0
StreamTanks v0.2.0 marks a monumental milestone: introducing the official Twitch Extension and a high-performance Command & Control (C&C) relay server (st_cc_server). Stream viewers can now aim with an on-screen semi-circular protractor, set power, move, and fire directly from desktop and mobile Twitch apps in real-time. This release also brings visual polish to the OBS overlay, active tank indicators, casualty recaps, scrolling leaderboard tickers, and major performance optimizations.
🕹️ Highlights
1. Official Twitch Extension (ext-web)
- Desktop Video Overlay (
video_overlay.html): Transparent 1920x1080 overlay sitting right above the Twitch video player.- Interactive Protractor: Viewers click and drag a cyan neon needle along the 180° protractor arc with dynamic degree readout.
- Tactical Controls: Adjustable power slider, movement buttons (
< MOVE L,MOVE R >), and immediate action feedback ("LOCKED: FIRE 45° @ 80%"). - Streamer Controls: Broadcasters and moderators can start matches directly from the video HUD.
- Dedicated Mobile View (
mobile.html):- Touch-optimized SVG protractor with degree tracking.
- Custom vertical touch-drag power gauge column.
- Generous touch targets for deployment, repositioning, and firing.
- Zero-Setup Configuration (
config.html): Extension connects automatically via standard Twitch JWT authentication. - Extension Asset Package: Packaged directly in the release as
extension.zipfor Twitch Developer Console upload.
2. Command & Control Relay Server (st_cc_server)
- Cloud-hosted WebSocket relay (
wss://st-cc.poundsigndesign.com) bridging local broadcaster game instances and Twitch viewers. - Secure Streamer Pairing Flow: Streamers claim their channel with a unique one-time in-chat verification code (
%claim <code>), authenticated against Twitch IRC. - Stateless Twitch JWT Validation: Authenticates viewer identity and channel roles (broadcaster/moderator) with low latency.
- Cross-Platform Pre-built Binaries: Released for Linux, Windows, and macOS (amd64 / arm64).
3. StreamTanks Local C&C Integration
- Outbound WebSocket client in
streamtanksconnects seamlessly to the C&C relay server. - Streamers pair with
%claimand host tokens are persisted securely in SQLite settings. - Real-time bi-directional synchronization: relays viewer chat commands to the game loop and broadcasts live game state, round countdowns, and active player lists to viewers.
4. In-Game OBS Overlay & Visual Polish
- Active Tank Avatar Markers: Large avatars and floating nameplates mark the player currently taking action or firing.
- Post-Game Casualty Recap: Summary board displaying total human and bot casualties at the end of each match.
- Scrolling Leaderboard Ticker: Expanded leaderboard layout featuring a scrolling ticker for ranks 4–8 to showcase more community participants.
- Streamlined Top HUD: Clean top status bar displaying current phase, remaining round time, and winner celebrations.
5. Performance & Engine Optimizations
- Optimized Terrain Destruction: Refactored
applyCraterheightmap deformation to eliminate redundant square root calculations during explosions. - Standardized Project Layout: Reorganized codebase into
cmd/,internal/app/, andweb/packages. - Extended Test Suite: Expanded Go tests covering C&C client connections, HMAC authentication, and claim challenge flows, plus frontend Vitest suites for terrain calculations.
📦 Closed Issues
- #38: Post-game casualty recap with player vs bot font sizing
- #39: Widen leaderboard and add scrolling ticker for ranks 4-8
- #40: Move winner avatar into top HUD box and remove redundant celebration text
- #42: C&C host authentication via in-chat claim, DB settings, and admin console UI
- #55: Optimize game state broadcast payload for Twitch extension
- #56: Interactive protractor overlay & mobile UI for Twitch extension
- #57: Command phase tank avatar markers & enlarged names to OBS overlay
- #58: Active tank battlefield detection and synchronized input countdown
- #59: Vertical power slider alongside protractor for mobile UX
- #60: Reorganize Desktop Overlay: Top Action Bar & Tactical Firing Panel
- #61: Extend protractor aiming hit area 50% inward on desktop and mobile
🚀 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 :8102Add http://localhost:8102 as an OBS Browser Source (1920x1080) and manage your match via the admin console at http://localhost:8102/admin.
For Twitch Extension Deployment
Download extension.zip from the assets below and upload it directly to your Twitch Developer Console version assets.
StreamTanks v0.0.2 — Commander Admin, AI Bots, & Synchronized Terrain
StreamTanks v0.0.2
StreamTanks v0.0.2 brings a massive set of features, gameplay enhancements, architecture upgrades, and streamer tools. This release introduces a dedicated web Commander Admin dashboard, an intelligent AI Bot fill system, synchronized multi-client destructible terrain, granular permissions, and major quality-of-life improvements.
🕹️ Highlights
1. Dedicated Commander Admin Dashboard (/admin)
- Accessible at
http://localhost:8102/adminfor live match orchestration. - Match Controls: Start rounds, adjust input timer duration, toggle bouncy walls, schedule automated rounds, and tune terrain bounds on the fly.
- Live Roster: Monitor active tanks, health, angles, power, and bot indicators in real-time.
- Leaderboard Management: View persistent rankings with one-click player deletion and leaderboard wipe actions.
- Cyberpunk dark UI with auto-reconnecting WebSocket synchronization.
2. AI Bot Fill & Intelligent Round Pacing
- Automated Bot Fill: When starting a match with few stream viewers, StreamTanks can automatically populate remaining slots with bot tanks (
%botfill on|off,%minplayers <N>, default: 5 players). - Dynamic Slot Priority: When viewers join via
%join, bot tanks are culled/replaced so real humans always get priority. - Customizable Bot Points: Award configurable leaderboard points for destroying bot tanks (
%botpoints <N>, default: 1 point; human victory awards 5 points). Bots are excluded from leaderboard rankings. - Smart Turn Truncation: When playing against bots, if humans were inactive in the prior round, the input countdown snaps to a brisk 10 seconds to keep stream action fast and engaging.
- Authoritative Fallback: Safe action-phase timer ensures the match progresses seamlessly even if client rendering hangs.
3. Authoritative Multi-Client Terrain Synchronization
- Server-authoritative heightmap generation ensures every connected OBS browser source renders the exact same battlefield layout.
- Real-time crater deformation and terrain destruction stay synchronized across all overlays.
- Configurable vertical terrain boundaries (
%terrain <min%> <max%>and%terrain reset). - Ceiling and floor bounce support in bouncy mode for wild ricochet shots.
4. Streamer Permissions & Management Commands
- Role-Based Permissions: Restrict game start and settings commands by Twitch chat role (
%perm <start|config> <broadcaster|mod|vip|sub|all>). Defaults to broadcaster-only. - Leaderboard Management: Clear the entire leaderboard with
%clearleaderboardor delete a specific player record with%deleteplayer <user>. - Flexible Auto-Round: Run continuous rounds automatically (
%autoround <minutes>,-1for instant restart after match ends, or0to disable).
5. Codebase Modernization & Architecture
- TypeScript Migration: Overlay client fully migrated to TypeScript with strict type checking and bundled via
esbuild. - Modular Go Backend: Monolithic code refactored into domain-separated packages (
game.go,terrain.go,storage.go,ws.go,bot.go,types.go). - Robust Test Suite: 36 comprehensive Go tests covering command parsing, concurrency safety, bot lifecycles, and physics clamping.
📦 Closed Issues
- #17: Synchronize map terrain and player positions across clients
- #18: Dedicated
/adminweb dashboard with live command console - #19: Configurable min/max screen height percent for terrain
- #20: Command to clear leaderboard from SQLite and connected overlays
- #21: Command to delete individual player from leaderboard
- #23: Award points per kill, fast-forward inactive players, and 10s minimum input window
- #26: Broadcaster-only startgame and configuration permissions
- #27: Clamp fire shot power to max 100 and angle to [0, 180]
- #28: Bounce projectiles off ceiling and floor in bouncy mode, safe emote rendering
- #29: Bot fill system with player replacement, bot points, and custom auto-round
- #30: Streamline admin panel layout by removing redundant bottom console
- #31: Award 5 points for human match victory and display AI defeat message on bot win
- #33: Synchronize round timer and truncate inactivity window against bots
🚀 Getting Started
Download the appropriate binary for your platform from the release assets below:
- Windows:
StreamTanks_windows_amd64.zip - Linux:
StreamTanks_linux_amd64.tar.gzorStreamTanks_linux_arm64.tar.gz - macOS:
StreamTanks_darwin_amd64.tar.gzorStreamTanks_darwin_arm64.tar.gz
Launch StreamTanks:
./StreamTanks -channel <your_twitch_channel> -addr :8102Open the overlay in OBS Studio browser source at http://localhost:8102 (1920x1080) and manage your match via the admin console at http://localhost:8102/admin.
StreamTanks v0.0.1 — Initial Release
🎮 StreamTanks v0.0.1 — Launch Release!
StreamTanks is an open-source, interactive Twitch chat artillery game and OBS browser overlay. Stream viewers join the battlefield via Twitch chat commands, pilot neon artillery tanks, aim angles and shot power, maneuver across dynamic destructible terrain, and compete for the stream leaderboard!
✨ Highlights & Features
- 🚀 Single Self-Contained Binary: All web frontend assets (HTML, JavaScript, CSS) are compiled directly into the binary via
//go:embed. No web server setup or dependencies required! - 🎨 Neon Cyberpunk Aesthetic: Designed specifically as a transparent 1920x1080 OBS Studio browser overlay with glowing neon terrain, aiming protractors, and explosive particle physics.
- 💥 Dynamic Destructible Hills: Projectiles carve craters out of rolling hills in real-time, changing lines of sight and causing tanks to tumble down cliff faces.
- ⚡ Bouncy Walls Mode: Optional
%bouncywalls onadds frantic ricochet physics with a +10% speed boost to bouncing bullets and a +50% speed boost to tanks that ram the edges! - 🏆 Embedded SQLite Leaderboard: Player win statistics are tracked locally in
streamtanks.dband persist automatically across stream sessions and server restarts. - ⚙️ On-Screen Live Config Modal: Streamers and moderators can toggle
%configdirectly on the stream to view and modify game settings live. - 🛡️ OBS Reconnection Resilience: If the server stops or restarts during stream, the browser overlay hides transparently, polls in the background, and seamlessly reloads when the server comes back online.
- 🧪 Offline Debug Mode: Test everything offline without connecting to Twitch by launching with
-debug. A floating command console and practice target bot let you experiment immediately.
🕹️ Twitch Chat Command Quick Reference
| Command | Description | Example |
|---|---|---|
%join [emote] |
Join the battlefield (supports Twitch & channel emotes) | %join Kappa |
%startgame |
Starts a match from the waiting phase | %startgame |
%fire <angle> <power> |
Locks in cannon aim angle (0°–180°) and power (1–100) | %fire 60 75 |
%left / %right |
Maneuvers your tank across the hills | %left |
%config |
Displays on-screen stream configuration modal | %config |
%bouncywalls on|off |
Toggles bouncy screen walls (+10% bullet speed, +50% tank speed) | %bouncywalls on |
%speed <0.1 - 3.0> |
Adjusts physics and animation speed (default: 0.5x) |
%speed 0.8 |
%commandtime <seconds> |
Configures input countdown timer (5s–120s, default: 20s) |
%commandtime 15 |
%autoround <min|-1|off> |
Schedules automated match starts (-1 immediate, off manual) |
%autoround 3 |
%idlemessage on|off |
Toggles visibility of the idle waiting HUD and leaderboard | %idlemessage off |
%prefix <symbol> |
Customizes command prefix (e.g. !, ?, tank!) |
%prefix ! |
🚀 Getting Started
- Download and extract the archive for your operating system below (e.g.
StreamTanks_windows_amd64.zip). - Run the executable from your terminal or command prompt:
(Or run
./StreamTanks -channel your_twitch_channel
./StreamTanks -debugto test offline). - In OBS Studio, add a new Browser Source:
- URL:
http://localhost:8102 - Width:
1920 - Height:
1080
- URL:
- The background is completely transparent—your stream game or camera will show through clearly behind the battlefield. Have fun!