IPC Basics
Getting started with developing IPC-capable plugins.
Hold up! This document is intended for plugin developers. If you're a regular user, you probably want this page instead.
Many plugins might have utility in sync scenarios, or indeed only really be useful in a sync scenario. Under the old paradigm, plugin devs for this type of plugin had to either run their own servers - which isn't cost-effective - or hope their plugin gets big enough for sync devs to take notice and decide whether it's worth implementing.
While Snowcloak's core aims have largely been achieved now and there's not much more that makes sense to add, I don't want to discount additional features even if we don't implement first-party support. With that in mind, I created the Snowcloak IPC.
The IPC is under active development. The current iteration is considered stable and the interfaces won't change, but new features are likely to be added over time. Join the Discord if you have ideas!
IPC Functionality
The IPC allows you to send and receive your plugin data over Snowcloak, allowing transfer between pairs. Not only this; but you can also access (limited) data directly through Snowcloak.
For example, let's consider Moodles - the plugin uses player object IDs to assign status affects to them. This feature is supported by Snowcloak's IPC. However, someone could extend this by, for example, reading a potential pair's public profile and applying a Moodle to them indicating the character's gender. This is a simplistic example, designed only to get you thinking about what to create.
The IPC operates on permission sets, with each feature needing users to explicitly grant permission to your plugin in Snowcloak.
The current version of the API (1.4) supports:
- Connection and lifecycle state
- Visible character and pair lookup
- Out-of-range pair lookup
- Profile summaries
- Appearance-application progress
- Ability to send pair requests (requires user confirmation)
- MCDF application in Gpose
- Data sending
These features are expanded on further in this guide.
If you have a mind to create an alternative to the current "mainline" plugins, join the Discord. I'm extremely in favour of opening the space up and making sure people have alternatives to common functionality, and an API to enable this as first-party functionality is the next big project, separate from the IPC. While you can still use the IPC in the meantime, I have a grander scope in mind for these.
Before creating a plugin, you should read the next page to understand what you're allowed to do, and then you can get started.