I'm a partnered Twitch streamer and a fan of the space MMORPG EVE Online.
Since witnessing the phenomenon of Twitch Plays Pokemon, I began imagining a Twitch Plays EVE. I continued to dream about the idea and then Twitch released the extensions functionality. I started asking myself if Twitch extensions could be the answer to the complexity of EVE Online? Can Twitch Plays work with a MMORPG? Is the Twitch Plays experience elevated with an extension?
We're going to find out.
What it does
The Too Many Fleet Commanders extension is a fully-fledged Twitch Plays experience for EVE Online. All viewer commands have been moved from Twitch chat to interactive commands in the extension. Viewers can quickly become accustomed to the commands and chat is free to coordinate, compete or PogChamp.
Traditional Twitch Play projects display the game state as part of the broadcast. With Too Many Fleet Commanders, all game state is displayed as part of the extension instead. This gives viewers the ability to see game state and react even before the video broadcast is able to catch up.
Twitch Plays EVE viewers will be able to vote for Anarchy and Democracy modes, complete challenges and explore the far corners of EVE if they can find a way to work together to undock first.
How I built it
Commands from the extension are processed by a REST API built with node.js and running in a Kubernetes cluster. If Twitch Plays EVE becomes popular it can scale quickly to meet demand. There are also several micro-services that maintain game state, communications and send PubSub updates to the users of the extensions.
On the streaming machine there is a python app that processes incoming commands for moving the mouse, clicking and keystrokes. This app also communicates the completion of commands and the current state of the character in the game such as docked, undocked and several others.
Challenges I ran into
There are many components and disciplines required to complete a project like this. While I have experience as a full-stack developer, each project is different and requires creativity. This project was no exception.
I experienced several challenges moving my extension from local testing to being hosted on Twitch. The current Twitch Extension developer rig is an great tool but it does not always simulate the features and restrictions of the hosted environment. I was able to identify each issue and was able to resolve them one-by-one.
Finally, the largest challenges may be in front of us. There are some faint doubts if this will be successful. As an example, I hope my scaling plans are enough to meet demand. What if there are bugs with the extension? We can't simply deploy an updated fixed extension without getting approval from Twitch. Keeping the project moving in a positive and optimistic mindset has been important.
Accomplishments that I'm proud of
There is likely more effort and planning required to implement a Twitch Plays extension vs. the traditional approach. Having a full-time job, family and hobbies while trying to complete this extension with the highest quality has felt like ascending a mountain. Should the extension blow up or blow over, I'll be proud that I completed this section of the climb.
I had to get special permission from CCP Games, the developers of EVE Online to publish the extension. I did not want to ask for permission with an incomplete or a theoretical project. I took a huge gamble and completed the project before seeking approval. When I shared the project with them they were excited. When they got to see it, they gave me their full support.
Twitch Plays EVE is intended to run 24 hours a day. I know that I need a global team to help moderate. I have gathered a team with the right attitude and experience to trust with the future of this project. I'm delighted to share this journey with them.
What I learned
I have a lot of experience with the core languages and frameworks used. I've always learned best by doing. Learning technology with a project that needs a successful completion is ideal. I can't simply investigate and drop a new technology when things start getting hard. When I hit the inevitable hurdles, I have to figure out a way to go over or around. After completing this project I feel more capable with the technologies I used.
I also learned so much about the challenges presented developing a Twitch extension. I'm glad to have picked up this new knowledge and skills and hope to be able to employ them with future Twitch extension projects.
What's next for Too Many Fleet Commanders / Twitch Plays EVE
It's only just beginning. We have no idea what challenges or great moments will come our way next, but we look forward to them.
The reveal of Twitch Plays EVE and this extension will be made over the weekend October 25th-27th at an EVE Online convention in Las Vegas. The first channel to use the extension will go live by October 30th on https://www.twitch.tv/twitchplayseve. If an earlier demo is required, I would gladly go live on a test channel.