An Interest In:
Web News this Week
- March 31, 2024
- March 30, 2024
- March 29, 2024
- March 28, 2024
- March 27, 2024
- March 26, 2024
- March 25, 2024
Triggering SFX & Derp Wars (a Dope Wars clone) [Live Coding Recap]
Streamed: 11/05 on Twitch
Watch Twitch VOD (replay)
The first goal of the night was getting a random soundbite to play during streams when certain trigger words are said.
Example: Someone in chat says wow in a sentence and a random clip of Owen Wilson sayin wow plays.
Then we started work on a clone of Dope Wars (which we named Derp Wars).
Wait... Dope Wars?? What!?
In what might have amounted to the best/worst idea I've ever had, chat & I started working on a clone of Dope Wars (aka Drugwars). Dubbed Derp Wars by viewers, the plan is to use the game in educational content. Expect a full tutorial on DEV as well as a YT post coming up in the next week or so! :D
Language(s) Used: Python
Tech & lib(s) used: VSCode, TwitchIO
Project Repository DeepThonk
Code & notes from stream down below! :D
During the stream we...
continued working on the random sfx feature we started last stream
realized we need Honk The Planet
t-shirts
made a note to get the Big Dict() Energy
t-shirts done too
created a class for interfacing with the server
got random sfx working and CELEBRATED (wow)
freaked out because we thought the streamdeck broke
started working on Derp Wars
got a basic MVP working!
raided @HighGai, a rad Japanese/English streamer
Here's some code we wrote during the stream...
In the bot app, we listen for message events
. When a message event comes through, we tokenize the content, check to see if a trigger word was said, then emit a websocket event to the server to play the sound if it does.
# in events.pyrandos = server_interface.get_randos() # get sfx trigger words from server@bot.listen("event_message")async def rando_sfx(ctx): 'listens for certain words then triggers a sfx from them' # make sure bot ignores itself author = ctx.author.name.lower() if author == twitch_bot_nick.lower(): return # listen for trigger words in messages for word in randos: if word.lower() in ctx.content.lower().split(' '): # emit ws event to call the sfx from teh server await emit_rando_sfx(word.lower()) log.debug(f"WE HEARD A WORD!! ({word})") # it's bird
The function that emits the ws is pretty simple. It just talks to the Flask server that hosts the browser source that queues and plays the audio.
# in server_interface.pyasync def emit_rando_sfx(word): 'tell teh server a rando sfx word was said' await sio.emit(event='rando', data=word)
When the server receives the ws, it's all like "Aiight, I'll let the page know." Then it finger guns into infinity.
# in server.py (the Flask app)@socketio.on('rando')def sfx_event(word, methods=['GET', 'POST']): 'Recievs SFX requests from bot app & triggers SFX on the Browser Source' word_said = str(word) # i'm tellin ya, it's bird. # choose a random file in directory random_file = random.choice(os.listdir(f'static/sfx/randos/{word_said}/')) # emit play rando sfx to the webpage thingy socketio.emit('rando triggered', [word_said, random_file]) log.debug(f"RANDO Triggered => {word_said}")
From that point, the web page just listens for the websocket and queues up the audio to play.
// in sfx.jssocket.on( 'rando triggered', msg => { addToQueue(`/static/sfx/randos/${msg[0]}/${msg[1]}`); })
There are a few tweaks we need to make to the code to make it flawless. For instance, since were tokenizing/splitting with spaces, this code wont work with trigger words next to punctuation of any kind. Well tackle those issues on an upcoming stream. :)
Live Coding Schedule
That pretty much wraps things up for this stream. If you have any questions about the code, Python, or any of the tech used in general - swing by during a live stream and say hello!
Follow on Twitch
I stream Python coding & lame jokes on Twitch every Tuesday, Thursday, & Saturday around 7pm PST.
For the most up to date schedule, check my pinned post on Twitter.
Original Link: https://dev.to/ninjabunny9000/triggering-sfx-derp-wars-a-dope-wars-clone-live-coding-recap-oi5
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To