The Making of TPE

In the Fall of 2015, PumpMagic was streaming on the twitch channel "TwitchPlaysPaperMario". At the time, I had joined the stream out of curiosity since Paper Mario was one of my favorite games growing up. I believe I joined near the ending of the game during the second time they were doing it in the history of the channel.

Over time, I became more and more active on the stream, intrigued by the system of macros that the other players had created and were storing on a google doc. I noticed that they were copying and pasting the macros into chat, and immediately saw an opportunity for a simple but useful Python script I could create that would allow users to "invoke" macros from a chatbot I created so they wouldn't have to copy and paste so much. It quickly became very useful.

In later runthroughs of the Paper Mario games, notably Paper Mario TTYD, the chatbot grew more and more complex. At the time, my scripting skills were fairly novice, however, and I was only hardcoding macros into the code manually. But at some point, I devised a system for select users to create and store macros on their own. I would add a list of usernames that were allowed to use the system, and over time it grew very large and it became apparent that I needed a more organized system.

In the meantime, the activity on TwitchPlaysPaperMario was somewhat dwindling, so I decided to try a TwitchPlays stream myself by setting it up for Super Mario RPG (a game my poor laptop could handle while also running this script). I borrowed a lot of the information I learned from PumpMagic (via the Discord channel) in order to create the virtual controller system (vJoy) and hook it up to the emulator. I also recreated his fairly intuitive input processing syntax, and even added a few features that I felt made it even better (the "\_" and "-" buttons for hold and release, respectively).

In the beginning of my streaming, I spoke with PumpMagic on the Discord channel, and they decided to hand the reins of the TwitchPlaysPaperMario channel to me entirely so I would keep things going (and also have more followers so it would be more active).

As time went by, I decided to branch out from RPG games and eventually decided to see how chat would handle 3D platformers. As it turned out, things were surprisingly more doable than we expected. It just required a lot of save/load states and a lot of patience. The feeling of things was different, but was still somehow oddly entertaining for people to take part. It helped that the macro system was becoming more and more sophisticated as I kept on adding more features.

At some point, some additional major features were added, namely the user tier system (0 for viewer, 1 for whitelisted viewer, 2 for superviewer, 3 for mod, and 4 for admin) and the ability to use macros within regular input messages. Doing the latter made it much easier for complex input sequences to be created, and with the addition of being able to create macros that contained other macros, things became even more organized and complex. At some point, Twitch also allowed channel names to be changed, and I changed the name to "TwitchPlays\_Everything" to fit the feeling of the channel more accurately.

Overall, this Twitch Plays channel has essentially been by pet project throughout the time I've been programming with Python (now close to three years). I've probably created 10+ major versions of this program since the beginning, but things have finally consolidated into a solidified program that is consistent, doesn't break, and has a lot of features (including the ability for minigames such as betting, chatting to cleverbot, and other random fun things). It's been a very rewarding experience to have seen the channel grow over time and still remain somewhat active. The community has been a lot of fun and every new game is always an interesting experience.

1/2
- Jdog127 (TwitchPlays\_Everything)