What is Slipstream?

Slipstream: Rogue Space is a multiplayer game where one player captains a ship and up to 120 other players join as crew members. You can choose between various animal-themed characters and level up your stats across all ships. You can learn more about the game and download it for free from https://playslipstream.com/ (or search for the game on Steam, the App Store, or Play Store)

Where does MoSadie come in?

As a streamer, I enjoy designing custom overlays and automated chat commands to create an interactive experience. One of the main features the captain has access to is the helm, where extra information is revealed that the captain can relay to the crew (examples include: enemy ship information, incoming attacks/invaders, and more)

I wanted a way to get this information available outside of my main game capture, so I learned how to load custom code into Unity games. I had used BepInEx for modding other Unity games like Lethal Company and Content Warning, but never actually made a “plugin” for BepInEx.

That idea has now spiraled into several different plugins and learning how to make distribution as effortless as possible. (using tools like Thunderstore and r2modman)

Two Second Tutorial

  1. Download Slipstream: Rogue Space on Steam
  2. Download r2modman (Manual Download, extract zip, run setup)
  3. Open r2modman and select Slipstream: Rogue Space
  4. Select the Default profile (can change later by restarting r2modman)
  5. Download the plugins you want from the Online tab
  6. Click “Start Modded”
  7. After launching once you can update config files in the Config editor tab.

SlipEvent

Originally called SlipStreamer.bot, this plugin allows in-game events to trigger external software. As of December 10th, 2024 it supports sending those events to Streamer.bot (a stream automation tool, can interact from there with tools like OBS, or Twitch Chat) or as a HTTP request (for more custom projects)

For the Streamer.bot integration I also created a set of pre-made Actions that can be imported in one-click, enabling easy customization without starting from scratch.

You can learn more about getting everything setup on GitHub or the (slightly outdated) tutorial video:

SlipInfo

If SlipEvent is the game triggering things, this is more like responding to requests. This plugin hosts a small web server that responds to requests about the current game state. Surprising most of the information I felt would be desired are available to both crew and captain players, so that’s a neat bonus.

As an example of what it can do I made a few stream overlays that live update with the current state of our ship, the enemy ship, and our crew composition. They’re a bit rough around the edges to setup but after loading as a Browser Source they can fit into any scene. (Or just load in a browser window, that also works. I even used one as a custom dock in OBS once.)

You can see what requests it responds to, as well as examples for each response, on GitHub.

SlipChat

This one is a little interesting. As a captain (or first mate) you can send custom announcements from the helm. I didn’t want to type the same things over and over again so I coded this plugin to start a small HTTP server that listens for a request, then sends that as a message. I also threw together a Stream Deck plugin to send those requests. As of right now I added the requirement that the player sending the announcement be in a physical position to do so (on the helm) so it matches how the actual system works.

The one more thing is that I added the ability to replace certain key phrases with information based on the game state, things like the enemy ship information or who the captain is.

This plugin is the least tested, so may not work on the latest version. But if you want to try it out more information can be found on GitHub (and it can be downloaded via Thunderstore/r2modman, Stream Deck plugin is available on the Elgato Marketplace)

SlipPronouns

This one started off as a silly idea. There is a browser extension that lets you set your pronouns in Twitch Chat, and anyone else with the extension can see it. Well, they made the data available via an API, and players can sign in via Twitch for this game. You can guess what happened next.

It attempts to get pronouns for players and appends them to their name wherever possible. You can download the plugin to view pronouns from Thunderstore/r2modman or GitHub. People can set pronouns here on the browser extension’s website.

MoCore

So let me tell you a quick story. One day the game updated and my plugins crashed players, The developers of Slipstream noticed and DMed me. (Which also means my exceptions would show up in their logs, sorry!) I realized that I had no system to check what version of the game is being used. Initially I just hardcoded the compatible version into each plugin, but that meant that I had to update the plugin just to mark it as compatible, which was too much work. So, I ripped the version checking code into a brand-new plugin, this one! In addition, it can now check online to map plugin versions to compatible game versions. I can mark game versions as compatible (or NOT compatible) without having to push a whole new update. (I can also mark 0 game versions as compatible, in case I push a bad update)

The version checker can be disabled in the config file., but I’d advise against it. I put that setting there for me to test versions.

There are more features on the way as well, since some of my mods can reuse the same code. Stay tuned!

MoCore is listed as a dependency for all of my plugins on Thunderstore, but if you need a manual download (or want the DLL to use with your own plugin) it can be found on GitHub.

TiltiSlip

Created for my Jingle Jam 2024 streams, this plugin connects to Tiltify’s API to listen for donations to your campaign. Triggers various in-game actions based on the donation amounts.

This plugin is not ready for public distribution yet. I do hope to release it, but I need to do some major clean up and make sure it’s ok to publish. (Some actions are not possible by a vanilla game, such as sending a captain alert while not on the helm.)

Fun fact! This plugin was my first time triggering the actual crash handler, somehow. (I had crashed and broken things before, but this was the first time the game’s crash handler was able to trigger and attempt a graceful crash.)