Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
November 8, 2019 10:37 pm GMT

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

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To