More and more games integrate streaming communities like Twitch. In this post, I propose a generic solution that simplifies integration for modders and game developers.

A middleman between streaming service and games.

Some while I ago, I watched one of my favourite streamers play Overland. The game has sophisticated Twitch integration: it takes names from the community for characters found in the game. If a viewer happens to be a character, they can let them talk by writing in the Twitch chat. Chat messages are then automatically forwarded and shown in the game, which allows for roleplay and viewer interaction.

I found this idea very interesting, because not only did it increase the engagement heavily with the stream, it also made me wonder why not more games implement such a solution. Of course, the answer is often time, since developers have to make sure the integration works - and keeps working. There are multiple problems when trying to integrate your game into a streaming service:

  • It takes effort to develop the integration, as you have to study the guidelines provided by each service.
  • There is no guarantee that the API offered by the streaming provider is immutable in the long term. Updates might break the current implementation.
  • More sophisticated features require additional development time, like lists for prioritizing people (when they are active), or lists to deny certain people (e.g. bots).
  • General settings, like the prioritization of viewers mentioned in the previous point, need to be duplicated for each game that implements its own integration solution.
  • Each streaming service requires its own integration. Most devs just opt for Twitch, as it is currently the most popular platform. This might change, of course.

I propose a tool that fixes those problems: the Stream Community Integration Manager (SCIM). SCIM offers a separate API, that acts as the middleman between a streaming service and games.

Architecture of the stream community integration manager (SCIM)

Instead of calling streaming APIs directly, game developers and modders can use SCIM to implement their own stream integration, without having to worry about the actual streaming API. It consists of

  • providers, which are sources for stream community data, like the chat. Multiple providers are possible, e.g. for different streaming services. They can also run in parallel.
  • servers, which offer an API that allows communitation between SCIM and games. Multiple servers are provided, depending on the capabilties of the game/mod, for example websockets.
  • controller, which orchestrates providers and servers. Providers and servers are loosely coupled to the controller, meaning it is easy to add further components.
  • API, which includes a standardized, versioned definition (e.g. AsyncAPI) for communicating with SCIM.
  • gui, which allows streamers to quickly setup and configure their settings.
  • config database, which saves settings regarding providers, servers or games. For example, the streamer can define a list of prioritized players, which are then saved in the database and can be reused for multiple games.

Currently, SCIM is in very early stages. The main API is nearly done. After the core is stable, I am going to implement it in various games, to show its capabilities. My vision is a centralized, open-source API that makes integration of your own game or mod easy, without having to worry about changes to the streaming service, or having to worry about which service to implement.

Of course, the project’s success depends on whether streamers, developers and modders are interested in it. Regardless whether it is going to work out, I am still going to finish the proof of concept, test it out, and document it extensively.

Some Q&A:

Why should I use SCIM as a streamer?

It centralizes and saves all the settings you need for your games that offer stream integration. Have a list of VIPs you would like to give priority for appearing in a game, as long as they are active in the chat? No problem.

Why should I use SCIM as a game developer?

It offers one API that in turn allows future-proof communication with any streaming provider you want. Changes to the APIs provided by streaming providers have to be implemented once in SCIM, instead of multiple times for each game that has stream integration. APIs of SCIM are versioned, meaning they will always work, regardless whether the game is updated or not. Furthermore, you don’t have to bother with authorization and similar topics, as all these steps are taken care of in SCIM.

Why should I use SCIM as a modder?

If you are a modder, maybe you want to see your favourite streamer play a game with community integration. As long as the mod capabilities of the game provide some way to communicate with other applications on the same PC, it should be pretty straightforward. Of course, community integration doesn’t make sense for every game. It is intended mostly for games that have randomized characters appear in some way in the game. For example, games like Rimworld, Oxygen Not Included, or Mount & Blade II: Bannerlord are perfect candidates for SCIM.

Why should I contribute towards SCIM?

With its loosely coupled architecture, it is pretty straightforward to add new providers or servers. Have a community provider you want to support? Simply add it to the architecture. Need a special server for certain use cases? Easily done.

I hope to post further updates regarding the project in the following months. Take care.