Language…
16 users online: anonimzwx,  BeeKaay, codfish1002, DanMario24YT, Domokun007,  Eevee, HaruMKT, hhuxy, Knight of Time, margot, ModernKiwi, Pizzagamer9791,  Ringo, ShoopDaWhoop, SysDataSoft, VLSkoot - Guests: 287 - Bots: 336
Users: 64,795 (2,375 active)
Latest user: mathew

[SMWTwitch v0.1 WiP] Twitch helps playing SMW + Random-Level-Generator

Hello guys,

my friend 'Foultier' and I are currently working on a new project for the SMW hacking scene.
I had the idea of what it could be like, if the Twitch-Chat could directly influence the streamers SMW hack - So we present:




Story-Mode
The story mode is quiet simple and our main focus.
The levels are premade like a regular hack, though this time the chat is crucial to get further in to the level.
By typing !on/!off in the Twitch-Chat, chatters have the ability to change different game mechanics.

Currently these game mechanics consist of:
- Changing the ability to swim in a level, or not.
- Changing the state of on/off-triggered-blocks (waterblocks, solid blocks, etc.)


Endless-Mode
This mode is kind of experimental.
The player is thrown into a room, in which the chat decides what kind of level is generated next.
Yes, generated.
They have the ability to choose between different tiles: "Plains", "Forest", "Cave", "Ghost House", "Castle".
Whenever the chat made a decision the player is being ported into the randomly generated level.
On top of that the chatters can decide what kind of .asm-gimmick the player has to face in this level.
Examples for these gimmicks would be: "Low Gravity", "High Gravity", "Auto Jump", "Auto Walk", "Inverted" - more to come.
The possibilities are nearly endless. (You can give us some more inspiration what to implement, etc.)

The Bot

That's the main view of the streamer - you see chat-messages, the userlist of your twitch-chat and the votes.


This is the login-page of the bot.
You choose your open emulator (currently supported: ZSNES, ZMZ, Snes9x, BizHawk), and login with your Twitch-Name and Oauth-Key.


This page is for miscellaneous stuff, such as downloading the Rom, getting the compatible emulator, and informations about the project.


Random-level
This is something more experimental. And for that, I prepared* a rom to showcase the random level generator:

DOWNLOAD


Feedback is always appreciated




*Was not actually prepared and therefore only has a whole lot of 10 cave and 20 plains screens to choose from. Repetition expected but the concept is what counts, right???
This is my first post after lurking for so long.

Like TheBiob already said:
Feedback, ideas and everything else is highly appreciated.

Thanks a lot :)

Greetings, Foultier
Twitch SMW-Edition idea sounds nice :)


Just... Wow. This is so impressive.
This is great tool! Nice job guys. #tb{:DD}
This is preety cool, I'd like to try this with legend of zelda nes.
I had this idea before and did it as my special stream for 1k followers:
https://www.twitch.tv/videos/156422680?t=12m48s

It was a really fun idea, my chat had commands to change mario powerup/itembox (including invalid states), mario pose, toggle level water/slippery, bgmode (just to mess a lot with the game on the end)

For this I just wrote a lua script for BizHawk, read the chatlog from a text file. I made the script do savestates for each commands because some powerups may crash the game, that way I can go back if this happens
Originally posted by furious

For this I just wrote a lua script for BizHawk, read the chatlog from a text file. I made the script do savestates for each commands because some powerups may crash the game, that way I can go back if this happens


Interesting, watched a bit of the stream. I didn't understand a word though, but it was really fun to watch :)

Funny enough, TheBiobs first idea was to use lua scripting for that project aswell.
But we thought about making it a little bit more advanced (user friendly), so now it's a combination of C# and .asm.
Originally posted by Foultier
Originally posted by furious

For this I just wrote a lua script for BizHawk, read the chatlog from a text file. I made the script do savestates for each commands because some powerups may crash the game, that way I can go back if this happens


Interesting, watched a bit of the stream. I didn't understand a word though, but it was really fun to watch :)

Funny enough, TheBiobs first idea was to use lua scripting for that project aswell.
But we thought about making it a little bit more advanced (user friendly), so now it's a combination of C# and .asm.


Sorry, I was speaking in brazilian portuguese (most of my viewers are brazilians).

It was very fun, good luck with your project bud :D
always love fun ideas, nice work
That's pretty creative!
best project ever!! :)
It's perfect to see what it turned out, so good job on that! #smw{:TUP:}
The Hacking of PuyoPuyo. Come join the fun, friends. 『いけいけ団長、頑張れ頑張れ団長!』
Help us raise funds for the Armed Forces of Ukraine. #ДопомагаємоРазом / #HelpTogether
“Even if you personally are so dissatisfied with life that you want the world to end, surely the cruel reality is that it will continue on, unchanging. All the better for someone perfectly content, like me.”
Aya Shameimaru, Touhou Suzunaan ~ Forbidden Scrollery
I do wonder if you can do this outside of streams. Would kinda love to. If that's been stated already, excuse me, but I can't really see it.
You know, this sounds like it could be very useful for trolling people who play this, either way... the integration with twitches "CHAT" of all things, very interesting indeed. How tricky was it to get this to work? Full of fun or full of trolls, watching anybody play this would be interesting in and of itself, very good accomplishment you've worked on here.
Originally posted by Skewer
You know, this sounds like it could be very useful for trolling people who play this, either way... the integration with twitches "CHAT" of all things, very interesting indeed.


It all depends on how nice the chat of the streamer is in the end of the day :)


Originally posted by Skewer
How tricky was it to get this to work?


Since I am firm in C# and Biob is good in .asm and C# it was just a matter of time to get things working.

Basically the Bot connects via IRC to the Streamers Twitch-Chat and reacts to commands posted there.
Then the Bot writes Data into the RAM of different Emulators (tricky thing is: most emulators use different RAM all the time, and it's not the RAM SMW uses).
TheBiob wrote .asm which calls these addresses and reacts depending on what was written before.

That's basically how it works - though I made it really simple here.

There are some more things to code to confirm a connection between the Bot and the hack, to get the votes, etc.



Originally posted by Skewer
I do wonder if you can do this outside of streams. Would kinda love to. If that's been stated already, excuse me, but I can't really see it.


What exactly do you mean? Do you want to play the hack and do the inputs yourself? (!on/!off inputs, random-level-gimmicks)


Greetings, Flo
Originally posted by Minuy600
I do wonder if you can do this outside of streams. Would kinda love to. If that's been stated already, excuse me, but I can't really see it.

We did consider an "offline mode" however since the actual hack needs the twitch chat to progress we haven't come up with a proper solution for it yet.
I do have some ideas for it though I'll need to talk to foultier about that later.


Originally posted by Skewer
How tricky was it to get this to work?

The trickiest part was probably figuring out the ram addresses the bot needs to write to to get the communication between twitch chat and the game. After we got that working it was pretty easy to code a simple system with it.