Thomas Deeb, Software Developer



Type2Play

Technologies: Linux, Python, Bash, C, C++, C#, Godot, OBS, Graphic Design (GIMP, Inkscape), Cron + many other SysAdmin tools

Summary

Type2Play is a Twitch stream and community I've been running since February 29, 2020. The channel focuses exclusively on the TwitchPlays category, encompassing video games that viewers control through chat commands. The goal of the channel is to allow players to explore playing their favorite games together in a new way, which includes solving unique challenges inherent to playing games with text. On Type2Play, game inputs via chat are facilitated through TRBot, which is dogfed through the channel. I run the games and the stream on a spare gaming laptop. Games hosted on the channel range from classic retro games to the latest PC games. The original name of the channel used to be TwitchPlaysPaperMario and was changed to Type2Play in the summer of 2021.

SysAdmin and background work

Behind the scenes, I work on software to power the stream and improve the experience for myself as a hoster and for the players. One example is RetroArch, a popular emulator frontend in which I forked to add hotkeys to directly save and load savestates so they can be mapped to inputs more easily on TRBot. In other instances, I wrote entirely new software: TRBotChatDisplay to replace ChatGameFontificator and enable visually highlighting TRBot commands and valid inputs on stream; and CollabPlayInputDisplay to replace OpenJoystickDisplay for easier setup, reduced CPU overhead, and multi-controller displays. I document the software versions in use, including commit hashes, so I can replicate the environment in a worst case scenario.

Additionally, I write custom TRBot commands in C# to aid stream management and improve the stream experience. This includes implementing a music command parsing the alda language so players can play music on the stream, a command to view the CPU temperatures, and a viewstate command to view the date of the last savestate, among many others.

Furthermore, I self-host community assets, such as playthrough history, save files for completed games, and a collaborative office suite for players to track game progress, on a VPS running Nextcloud and Collabora Online.

Learnings

I've learned many useful skills running Type2Play, including: I used all of the challenges I encountered from Type2Play as opportunities to augment my skills and experience as a SysAdmin and stream hoster in order make the Type2Play stream setup as robust and resilient as it can be. This ensures that the player experience is smooth, reducing my need to interfere as much as possible. It's an ongoing process, and I've been having fun continually learning along the way.

Showcase

A player's perspective of a Type2Play stream in 2026 featuring a multiworld game randomizer. Players can play Super Mario World to unlock items in Ape Escape 3 and vice versa. Presented is a switchgame command that runs a script to switch the view and hand over control between games. Getting this set up in place seamlessly and reliably and was a fun challenge involving a lot of experimentation.





A banner I designed in GIMP for Zelda Dungeon to promote an Ocarina of Time charity race between the Type2Play and TwitchPlays_ZeldaGames channels in June 2021, when we were known as TwitchPlaysPaperMario. In total, we raised over $700 USD for charity across the week-long event.





An OBS overlay I developed for a multiworld game randomizer run among Type2Play and the TwitchPlaysPokemon and TwitchPlaysSpeedruns channels. All three channels collaborated to collect items for each other to ultimately beat the game. On the right side of the overlay is a view of the other streams for players to see everyone's progress in one place. Whenever one channel got stuck, players were encouraged to unblock it by playing on the other channels.


Some players made the most of the Type2Play experience by attempting feats that would be difficult or impossible to achieve with a conventional controller. This is one example of a player using the stream as a creative outlet.