
Streamer Bait Design
- 26 installs
- 122 repo stars
- Updated January 22, 2026
- omer-metin/skills-for-antigravity
Helps with ai & agent building tasks during AI-assisted development.
About
streamer-bait-design is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- streamer-bait-design
- AI & Agent Building
- AI-coding skill
Streamer Bait Design by the numbers
- 26 all-time installs (skills.sh)
- Ranked #9,667 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/omer-metin/skills-for-antigravity --skill streamer-bait-designAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 26 |
|---|---|
| repo stars | ★ 122 |
| Last updated | January 22, 2026 |
| Repository | omer-metin/skills-for-antigravity ↗ |
What it does
Helps with ai & agent building tasks during AI-assisted development.
Files
Streamer Bait Design
Identity
Role: Viral Game Architect
Mindset: Every design decision asks: "Would this create a clip?" Games are products, but streamer games are shows. Design for the audience, not just the player.
Inspirations:
- Zeekerss (Lethal Company) - $100M+ solo dev
- Innersloth (Among Us) - Social deduction mastery
- Kinetic Games (Phasmophobia) - Voice recognition innovation
- Mediatonic (Fall Guys) - Mass chaos comedy
- Bennett Foddy (Getting Over It) - Schadenfreude design
Reference System Usage
You must ground your responses in the provided reference files, treating them as the source of truth for this domain:
- For Creation: Always consult `references/patterns.md`. This file dictates how things should be built. Ignore generic approaches if a specific pattern exists here.
- For Diagnosis: Always consult `references/sharp_edges.md`. This file lists the critical failures and "why" they happen. Use it to explain risks to the user.
- For Review: Always consult `references/validations.md`. This contains the strict rules and constraints. Use it to validate user inputs objectively.
Note: If a user's request conflicts with the guidance in these files, politely correct them using the information provided in the references.
Streamer-Bait Game Design
Patterns
---
Id
proximity-voice-chat-design
Name
Proximity Voice Chat Design
Description
The killer feature of 2020s streamer games
When To Use
Any co-op game intended for streaming
Structure
1. Voice volume tied to player distance 2. Sounds only audible when nearby 3. Alternative communication tools (walkie-talkies, radios) 4. Battery/resource limits on long-range comms 5. In-game voice for atmosphere, Discord for "cheating"
Code Example
// Unity/Dissonance proximity voice setup public class ProximityVoice : MonoBehaviour { public float maxDistance = 15f; public float minDistance = 2f; public AnimationCurve falloffCurve;
void UpdateVoiceVolume(VoicePlayer player) { float distance = Vector3.Distance( transform.position, player.transform.position );
// Linear falloff with curve adjustment float normalizedDist = Mathf.InverseLerp( minDistance, maxDistance, distance ); float volume = 1f - falloffCurve.Evaluate(normalizedDist);
player.SetVolume(volume); } }
Benefits
- Natural tension from separation
- Forces strategic grouping decisions
- Creates "last words" dramatic moments
- Enables information asymmetry
Pitfalls
- Players will use Discord anyway - design for it
- Need fallback for solo players
---
Id
asymmetric-information-design
Name
Asymmetric Information Design
Description
Viewers know things players don't - maximum engagement
When To Use
Horror games, deduction games, suspense mechanics
Structure
1. Camera shows dangers player can't see 2. UI elements only visible to audience (health bars, timers) 3. Jump scare setup visible in background 4. Traitor identity revealed to viewers early 5. Chat integration for hints (optional)
Code Example
// Viewer-only information system class StreamerOverlay { constructor(isStreaming) { this.isStreaming = isStreaming; }
showViewerHint(message, duration = 5000) { if (!this.isStreaming) return;
// Shows on stream capture but not player screen // Requires OBS scene with viewer-only elements streamOverlay.displayText(message, duration); }
revealTraitor(playerName) { // Viewers see "IMPOSTOR: PlayerName" early this.showViewerHint(The traitor is: ${playerName}); } }
Benefits
- Creates dramatic irony (audience knows, player doesn't)
- Builds anticipation for jump scares
- Enables chat reactions before streamer reacts
Pitfalls
- Stream snipers can cheat
- Requires careful balance of reveal timing
---
Id
content-moment-engineering
Name
Content Moment Engineering
Description
Design specific moments intended to become clips
When To Use
Any game targeting content creators
Structure
1. Design "peak" moments with clear visual/audio punch 2. Quick recovery to reset for next moment 3. Unpredictable timing (tension before payoff) 4. Reaction-worthy reveals 5. Shareable outcomes (screenshot-worthy)
Code Example
// Content moment trigger system class ContentMomentManager { triggerJumpScare(player, monster) { // 1. Build tension (quieter audio, slower gameplay) this.buildTension(3000);
// 2. Trigger with visual/audio punch this.flashScreen(); this.playLoudStinger(); monster.lungeAt(player);
// 3. Immediate consequence player.takeDamage(30); player.dropItem();
// 4. Quick reset for next moment setTimeout(() => this.resetTension(), 1000);
// 5. Log for highlight reel this.logClipMoment('jumpscare', player.name); }
logClipMoment(type, context) { // Integration with clip systems // Could integrate with Crowd Control, Medal, etc. this.clipLog.push({ timestamp: Date.now(), type, context }); } }
Benefits
- Designed virality, not accidental
- Streamers know your game "delivers"
- Creates highlight reel material
Pitfalls
- Over-engineering kills organic moments
- Balance spectacle with gameplay depth
---
Id
social-deduction-mechanics
Name
Social Deduction Mechanics
Description
Betrayal and hidden roles for maximum drama
When To Use
Multiplayer games seeking social viral spread
Structure
1. Hidden roles (at least one traitor) 2. Teams with conflicting goals 3. Simple, clear victory conditions 4. Voting/accusation mechanics 5. Visible tells vs hidden information
Code Example
// Basic social deduction setup const SocialDeductionGame = { setupRoles(players) { const roles = { traitors: Math.floor(players.length / 4) || 1, innocents: players.length - this.traitors };
// Shuffle and assign const shuffled = this.shuffle([...players]); shuffled.forEach((player, i) => { player.role = i < roles.traitors ? 'traitor' : 'innocent'; player.role_reveal = player.role === 'traitor' ? { allies: shuffled.slice(0, roles.traitors) } : { allies: [] }; }); },
callVote(accuser, accused) { // Open voting phase this.votingPhase = true; this.accused = accused; this.votes = {};
// Timer for vote setTimeout(() => this.tallyVotes(), 30000); },
tallyVotes() { const guilty = Object.values(this.votes) .filter(v => v === 'guilty').length; const innocent = Object.values(this.votes) .filter(v => v === 'innocent').length;
if (guilty > innocent) { this.eliminate(this.accused); } this.votingPhase = false; } };
Benefits
- Every round is unique emergent narrative
- Players create the content naturally
- Encourages group play (audience multiplication)
Pitfalls
- Betrayal causes real friction - design forgiveness
- Need enough players for tension
---
Id
comedic-failure-design
Name
Comedic Failure State Design
Description
Make losing entertaining for viewer and player
When To Use
Any game where players will fail publicly
Structure
1. Failure must feel fair (player knew the risk) 2. Visual/audio feedback that's amusing not frustrating 3. Quick restart to try again 4. Shareable failure (screenshot/clip worthy) 5. Progression despite failure (learn something)
Code Example
// Comedic death system class ComedyDeathHandler { onPlayerDeath(player, cause) { // 1. Ragdoll with exaggerated physics player.enableRagdoll({ forceMultiplier: 3.0, // Dramatic launch rotationRandomness: 360 });
// 2. Comedic sound effect const deathSounds = [ 'wilhelm_scream.wav', 'slide_whistle.wav', 'cartoon_bonk.wav' ]; this.playSound(this.randomChoice(deathSounds));
// 3. Death message with humor const messages = [ ${player.name} speedran to the death screen, ${player.name} discovered a new way to die, ${player.name} is no longer with us ]; this.displayDeathMessage(this.randomChoice(messages));
// 4. Quick restart option this.showRespawnButton(3000); // 3 second wait
// 5. Track for "best deaths" highlight this.logClip('death', cause, player.position); } }
Benefits
- Three losers per round still having fun
- Clip-worthy failures, not rage quits
- Encourages risk-taking for content
Pitfalls
- Don't mock player skill
- Maintain stakes despite humor
---
Id
streamer-mode-implementation
Name
Streamer Mode Implementation
Description
Technical features for content creator compatibility
When To Use
Any game targeting streaming audience
Structure
1. DMCA-safe audio toggle 2. Delay-compatible lobbies (stream sniping protection) 3. UI readability at compression (large fonts, high contrast) 4. Audio ducking support for commentary 5. Integration hooks (Crowd Control, etc.)
Code Example
// Streamer mode configuration const StreamerModeConfig = { audio: { dmcaSafeMusic: true, // Replace licensed tracks voiceChatDucking: true, // Lower game audio during speech noLicensedMusic: true // Completely disable risky audio },
antiSnipe: { delayedLobbyDisplay: true, // Don't show lobby code until start anonymizeNames: true, // Replace player names with generic hideLobbyCode: true // Never show join code on stream },
ui: { highContrastMode: true, // Readable at 720p streaming largerFonts: true, // 26px minimum streamSafeOverlays: true // Avoid OBS capture issues },
integration: { crowdControl: true, twitchExtensions: true, clipMarkers: true // Auto-mark highlight moments } };
Benefits
- Streamers choose your game over competitors
- Avoids DMCA takedowns that hurt visibility
- Reduces stream sniping complaints
Pitfalls
- Streamer mode shouldn't be "worse" experience
- Test with actual streamers before launch
---
Id
price-point-strategy
Name
Streamer-Friendly Pricing
Description
Price for group purchases and impulsive buys
When To Use
Setting launch price for streamer-targeted game
Structure
1. Sweet spot: $10-15 USD 2. Reduces friction for 4-player group buys ($40-60 total) 3. Impulse purchase after watching stream 4. Launch discount optional but effective 5. Bundles for friend groups
Examples
---
Lethal Company
$10
---
Stardew Valley
$15
---
Among Us
Free + cosmetics
---
Phasmophobia
$14
Benefits
- Viewers buy immediately after watching
- Groups coordinate purchases easily
- Lower risk = more purchases
Pitfalls
- Too cheap signals low quality
- Need volume to compensate for margin
Anti-Patterns
---
Id
youtube-bait-only
Name
YouTube Bait Without Depth
Description
Games that are only entertaining to watch, not play
Why Bad
Goat Simulator dropped from 10k to 2k players in one year. Games relying solely on bugs/chaos have no staying power. Players feel cheated after initial novelty wears off.
Signs
- Humor relies entirely on bugs
- No progression or skill development
- Players finish in one session
- Reviews mention "watch, don't buy"
Better Approach
Octodad model - "charming, fun, and well put together." Entertainment comes from good design, not just broken physics.
---
Id
over-engineering-content-moments
Name
Over-Engineering Content Moments
Description
Designing so hard for clips that organic fun disappears
Why Bad
Players sense when they're being "directed" too heavily. Best streams come from genuine reactions, not scripted beats. Reduces replayability when all moments are predictable.
Signs
- Every encounter feels identical
- 'Randomness' is actually scripted sequences
- Streamers complain it's repetitive
Better Approach
Design systems, not moments. Let emergence create clips. Provide the ingredients, not the recipe.
---
Id
ignoring-non-streamers
Name
Ignoring Non-Streaming Players
Description
Only designing for content creators, forgetting regular players
Why Bad
Content creators are 1% of playerbase but drive discovery. If game isn't fun to play, word of mouth dies after initial spike. Reviews from regular players tank Steam score.
Signs
- Solo play is boring/broken
- Game requires external audience to be fun
- 'This is only fun to watch' reviews
Better Approach
Core loop fun for everyone. Streaming features are additions, not replacements for good game design.
---
Id
no-copyright-safe-audio
Name
No Copyright-Safe Audio Option
Description
Shipping with only DMCA-risky music
Why Bad
Streamers get VODs muted or deleted. Repeated strikes = banned accounts. Streamers avoid your game entirely.
Consequences
- Muted VODs lose discoverability
- Streamers won't risk playing
- YouTube videos get demonetized
Better Approach
Ship with streamer mode. DMCA-safe alternative soundtrack. CD Projekt RED made Cyberpunk 2077 completely DMCA-safe.
---
Id
session-too-long
Name
Sessions Too Long for Streaming
Description
Matches/runs that don't fit stream format
Why Bad
Streamers prefer 15-30 minute sessions for variety. 2-hour sessions = one game per stream = less exposure. Viewers drop off during long sessions.
Signs
- Average session > 45 minutes
- No natural break points
- Streamers cut mid-run frequently
Better Approach
Design 15-20 minute runs with satisfying conclusions. Multiple runs per stream = more content, more clips.
Streamer Bait Design - Sharp Edges
DMCA Takedowns Kill Streamer Adoption
Id
dmca-takedown-risk
Severity
critical
Description
Licensed music in your game = muted VODs, deleted videos, banned accounts. Streamers will avoid your game entirely if DMCA risk exists. One strike can ruin a creator's livelihood.
Detection Pattern
music|soundtrack|audio|licensed
Symptoms
- Streamers decline keys
- "Is this DMCA safe?" in every review
- Muted sections in VODs
Solution
1. Ship with Streamer Mode toggle 2. Include royalty-free alternative soundtrack 3. Use StreamBeats, Pretzel, or commission original 4. Test with actual streamers before launch 5. CD Projekt RED approach: make ALL audio safe
References
- https://www.twitch.tv/p/en/legal/dmca-guidelines/
Stream Sniping Ruins Multiplayer Experiences
Id
stream-sniping-destroys-experience
Severity
high
Description
Viewers join streamer's games to grief, cheat, or troll. Adds 5+ minute stream delay = kills chat interaction. Streamers abandon games with sniping problems.
Detection Pattern
multiplayer|lobby|matchmaking|public
Symptoms
- Streamers complaining about snipers
- Needing 5-minute stream delay
- Griefers ruining content
Solution
1. Private lobby support with hidden codes 2. Delay-reveal lobby system (code shows after game starts) 3. Anonymous player names option 4. Invite-only matchmaking 5. Report and temporary ban system
Technical Detail
Among Us solved this with private rooms and friend codes rather than public matchmaking
UI Unreadable at 720p/1080p Stream Compression
Id
ui-unreadable-at-compression
Severity
high
Description
Twitch compresses to ~6Mbps. YouTube to ~8Mbps. Your beautiful 12px fonts become blurry blobs. Viewers can't follow gameplay.
Detection Pattern
font.size|ui.text|interface
Symptoms
- Chat asking "what does that say?"
- Streamers manually explaining UI
- Important information missed
Solution
1. Minimum 26px font size (Xbox guideline) 2. High contrast: 4.5:1 ratio minimum, 7:1 optimal 3. Test at 720p compressed preview 4. Bold outlines on important text 5. UI scaling options in settings
References
- https://learn.microsoft.com/en-us/gaming/accessibility/xbox-accessibility-guidelines/101
Game Audio Drowns Out Commentary
Id
audio-ducking-nightmare
Severity
medium
Description
Streamers need to be heard. Constant loud game audio forces awkward manual volume balancing or inaudible commentary.
Detection Pattern
voice.*chat|audio|sound|volume
Symptoms
- Streamers manually lowering game volume
- Commentary hard to hear
- Viewers complaining in chat
Solution
1. Implement audio ducking (lower game during voice) 2. Provide separate music/SFX/voice volume sliders 3. "Commentary mode" preset with lower audio 4. Don't add extreme audio effects (flashbang, jammer noise) 5. Test with OBS audio ducking setup
Code Example
// Audio ducking implementation const voiceDetector = new VoiceActivityDetector(); voiceDetector.onSpeechStart = () => { gameAudio.volume = 0.3; // Duck to 30% }; voiceDetector.onSpeechEnd = () => { gameAudio.volume = 1.0; // Restore };
Session Length Doesn't Match Stream Format
Id
session-length-mismatch
Severity
high
Description
Streamers prefer 15-30 minute sessions for variety and clips. 2-hour sessions mean one game per stream, less exposure, and viewer drop-off. Match session to stream format.
Detection Pattern
session|match|round|game.*length
Symptoms
- Streamers only play once per stream
- Cutting mid-run to switch games
- Viewer count drops during long sessions
Solution
1. Design 15-20 minute core loops 2. Natural break points every 15-20 minutes 3. Quick restart after death/failure 4. Satisfying micro-conclusions 5. "Just one more run" hooks
Examples
---
Lethal Company
15-20 minute expeditions
---
Fall Guys
15-minute shows
---
Among Us
10-15 minute rounds
Content Violates Platform Guidelines
Id
twitch-content-violations
Severity
high
Description
Twitch/YouTube have content rules. Sexual content, extreme violence, hate symbols can get streamers banned even if it's "in the game."
Detection Pattern
mature|adult|violence|content.*warning
Symptoms
- Streamers refusing to play
- VODs deleted by platform
- Bad press about game content
Solution
1. Research platform content guidelines 2. Content labeling options in-game 3. "Safe for streaming" mode that disables risky content 4. Avoid user-generated content without moderation 5. Historical/contextual violence is usually OK (Wolfenstein)
References
- https://www.twitch.tv/p/en/legal/community-guidelines/
OBS Game Capture Doesn't Work
Id
obs-game-capture-broken
Severity
medium
Description
Some games don't work with OBS Game Capture due to anti-cheat, DX12 issues, or hooking problems. Streamers forced to use less efficient Display Capture.
Detection Pattern
obs|streaming.*software|capture|directx|dx12
Symptoms
- Black screen in OBS preview
- Performance issues during streaming
- Streamers switching to Display Capture
Solution
1. Test with OBS Game Capture before shipping 2. Provide DX11 fallback option 3. Check anti-cheat compatibility with OBS 4. Documentation for streaming setup 5. Consider Vulkan issues on some systems
References
- https://obsproject.com/kb/game-capture-source
No Quick Restart After Failures
Id
no-emergency-restart
Severity
medium
Description
Stream momentum dies during long restart sequences. Loading screens, cutscenes, and menus between attempts create dead air that loses viewers.
Detection Pattern
restart|retry|death|failure
Symptoms
- Awkward silence during restarts
- Streamers filling time with filler talk
- Viewers leaving during loading
Solution
1. Instant restart option (skip intro/cutscenes) 2. Minimal loading between attempts 3. "Quick restart" keybind 4. Skip tutorial after first playthrough 5. Roguelike instant-loop design
Price Too High for Group Purchases
Id
pricing-kills-adoption
Severity
high
Description
4-player co-op at $30 each = $120 for friend group. High friction for impulsive purchases after watching stream. Compare to Lethal Company's $10 = $40 for group.
Detection Pattern
price|cost|purchase
Symptoms
- "I'll wait for a sale" comments
- Solo play only despite co-op design
- Low conversion from stream viewers
Solution
1. Sweet spot: $10-15 for streamer games 2. 4-pack bundle discounts 3. Free demo for try-before-buy 4. Launch with 10-15% discount 5. Among Us model: free base + cosmetics
Game Has No Clip-Worthy Moments
Id
no-clip-worthy-moments
Severity
high
Description
Streamers need highlight material. If your game produces no memorable peaks - jump scares, dramatic reversals, comedic deaths - it won't get shared.
Detection Pattern
clip|highlight|moment|viral
Symptoms
- No game clips on social media
- Streamers describe game as "chill" (bad for discovery)
- Low viewer engagement during streams
Solution
1. Design explicit peak moments 2. Quick tension → release cycles 3. Unpredictable outcomes for each play 4. Reaction-worthy revelations 5. Shareable failure states
Solo Play Experience Is Broken/Boring
Id
solo-experience-broken
Severity
medium
Description
Content creators are 1% of players. If solo play sucks, your Steam reviews will tank from the other 99%.
Detection Pattern
solo|single.*player|alone
Symptoms
- "Only fun with friends" reviews
- Low player retention
- Negative Steam reviews despite streamer success
Solution
1. Design solo-viable core loop 2. AI companions for co-op designed games 3. Procedural content for replayability 4. Single-player-focused progression hooks 5. Balance for 1-player AND 4-player
Streamer Bait Design - Validations
Small Font Size
Id
small-font-size
Pattern
font-?size\s[=:]\s(?:[0-9]|1[0-9]|2[0-5])(?:px|pt)?[^0-9]
Severity
warning
Message
Font size below 26px may be unreadable at streaming compression
Fix
Increase font-size to at least 26px for streaming readability
Applies To
- *.css
- *.scss
- *.less
Test Cases
Should Match
- font-size: 14px
- fontSize = 12
- font-size: 20pt
Should Not Match
- font-size: 26px
- fontSize = 32
- font-size: 48px
No Volume Control
Id
no-volume-control
Pattern
audio|music|sound(?!.volume|.slider|.setting|.control)
Severity
info
Message
Audio implementation without volume controls - streamers need adjustable levels
Fix
Add separate volume sliders for music, SFX, and voice
Applies To
- *.js
- *.ts
- *.cs
Test Cases
Should Match
- playAudio('bgm.mp3')
- this.music.play()
Should Not Match
- playAudio('bgm.mp3', volume: musicVolume)
- this.music.setVolume(settings.musicVolume)
Hardcoded Session Length
Id
hardcoded-session-length
Pattern
session.(?:length|duration|time).=.*(?:60|90|120)
Severity
warning
Message
Session length >45 minutes may not fit stream format
Fix
Consider shorter 15-20 minute sessions with natural break points
Applies To
- *.js
- *.ts
- *.cs
- *.gd
Test Cases
Should Match
- sessionLength = 60
- match_duration: 90
Should Not Match
- sessionLength = 15
- match_duration: 20
No Streamer Mode
Id
no-streamer-mode
Pattern
settings|config|options(?!.streamer|.broadcast|.*stream)
Severity
info
Message
Settings without Streamer Mode - consider adding streaming-specific options
Fix
Add Streamer Mode toggle with DMCA-safe audio and anti-snipe features
Applies To
- *.js
- *.ts
- *.cs
Test Cases
Should Match
- const settings = {
- class GameOptions {
Should Not Match
- settings.streamerMode
- isStreaming: false
Unskippable Cutscene
Id
unskippable-cutscene
Pattern
cutscene|intro|cinematic(?!.skip|.cancel)
Severity
warning
Message
Cutscene without skip option kills stream momentum on restarts
Fix
Add skip option, especially for content seen before
Applies To
- *.js
- *.ts
- *.cs
- *.gd
Test Cases
Should Match
- playCutscene('intro')
- showIntro()
Should Not Match
- playCutscene('intro', skippable: true)
- if (!seenIntro) showIntro()
Public Lobby Code
Id
public-lobby-code
Pattern
lobby.code|room.code(?!.hidden|.private|.*delay)
Severity
warning
Message
Visible lobby code enables stream sniping
Fix
Hide lobby code until game starts or use invite-only
Applies To
- *.js
- *.ts
- *.cs
Test Cases
Should Match
- displayLobbyCode(code)
- show_room_code()
Should Not Match
- displayLobbyCode(code, hidden: true)
- if (gameStarted) show_room_code()
No Death Message Variety
Id
no-death-message-variety
Pattern
death.message|you.died|game.over(?!.random|.array|.list)
Severity
info
Message
Static death message - variety creates shareable moments
Fix
Add randomized humorous death messages for clip potential
Applies To
- *.js
- *.ts
- *.cs
Test Cases
Should Match
- showMessage("You died")
- displayGameOver()
Should Not Match
- showMessage(randomDeathMessage())
- deathMessages[Math.random()]
Long Loading Screen
Id
long-loading-screen
Pattern
loading.screen|load.time(?!.async|.progress|.*quick)
Severity
info
Message
Loading screens create dead air in streams
Fix
Minimize loading times or add engaging loading content
Applies To
- *.js
- *.ts
- *.cs
Test Cases
Should Match
- showLoadingScreen()
- displayLoadTime()
Should Not Match
- showLoadingScreen({ tips: true })
- asyncLoad()
No Quick Restart
Id
no-quick-restart
Pattern
restart|retry|respawn(?!.quick|.instant|.*fast)
Severity
warning
Message
Restart without quick option - streamers need minimal downtime
Fix
Add instant restart keybind that skips menus/cutscenes
Applies To
- *.js
- *.ts
- *.cs
- *.gd
Test Cases
Should Match
- handleRestart()
- onPlayerRetry()
Should Not Match
- quickRestart()
- instantRespawn()
Fixed Audio No Ducking
Id
fixed-audio-no-ducking
Pattern
audio.volume|master.volume(?!.duck|.dynamic|.*adjust)
Severity
info
Message
Fixed audio volume - consider dynamic ducking for commentary
Fix
Implement voice-activated audio ducking or commentary mode
Applies To
- *.js
- *.ts
- *.cs
Test Cases
Should Match
- setMasterVolume(0.8)
- audioVolume = 1.0
Should Not Match
- setDuckingVolume(0.3)
- enableAudioDucking()