Alpha
Alpha: A mod for On-Together to provide common utilities and features.
About this mod Author’s original text
Alpha
A shared BepInEx mod for On Together that provides common utilities and a command framework for other mods to build on.
- Author: AndrewLin
- Repository:
Workaround: On-Together GPU VRAM & RAM Usage
On-Together accumulates GPU VRAM and system RAM over time as Unity loads assets during a session. If you experience frame drops or out-of-memory issues, run this command in chat to immediately free unused assets:
/auua
This calls UnityEngine.Resources.UnloadUnusedAssets() and can reclaim significant memory without restarting the game. Run it whenever the game feels sluggish or after leaving a busy lobby.
Configuration
Alpha creates a config file at BepInEx/config/com.andrewlin.ontogether.alpha.cfg.
| Section | Key | Default | Description |
|---------|-----|---------|-------------|
| Logging | TimestampLog | true | Prepend [HH:mm:ss] timestamps to each line in LogOutput.log. |
In-Game Commands
Alpha registers its own /alpha namespace commands. Type them in chat — they are intercepted locally and not sent to other players.
| Command | Short | Description |
|---|---|---|
| /alphaserverinfo | /asi | Show lobby name, code, player count, and host info |
| /alphawhois [player] | /awi | Show info about a player (name, Steam ID, position) |
| /alphamyposition | /amp | Show your current world position |
| /alphaaddnotification | /aan | Post a local notification to your own chat |
| /alphaunloadunusedassets | /auua | Free GPU VRAM & RAM by unloading unused Unity assets |
| /alphahelp | /ah | List all Alpha commands |
Features
Chat Command Framework
Alpha exposes a static AlphaPlugin.CommandManager (ChatCommandManager) that any mod can use to register in-game slash commands.
Implementing a command:
public class MyCommand: IChatCommand
{
public string Name => "mycmd";
public string ShortName => "mc"; // optional short alias
public string Description => "Does something cool.";
public string Namespace => "mymod"; // used for grouping and auto-help
public void Execute(string args) { /... / }
}
Registering in your plugin's Awake():
AlphaPlugin.CommandManager?.Register(new MyCommand());
When the first command for a namespace is registered, a /{namespace}help command (and short form /{ns[0]}h) is automatically created for that namespace.
Built-in help usage:
/{mymod}help
/{mymod}help verbose — includes descriptions
/{mymod}help mycmd — looks up a single command
Chat Utilities (ChatUtils)
| Method | Description |
|--------|-------------|
| AddGlobalNotification(text) | Displays a notification in the in-game global chat. |
| SendMessageAsync(userName, text, isLocal) | Sends a chat message (truncated to 250 chars). |
| SendChunkedMessageAsync(userName, text, isLocal, strategy) | Splits long text into ≤250-char chunks and sends each one. Strategy: "word" (default) or "hard". |
| CleanTMPTags(input) | Strips TextMeshPro formatting tags (e.g. `, `) from a string. |
| CleanCommand() | Hides a slash command from chat after it is processed (clears the input field). |
| UISendMessage(text) | Injects text into the chat input field and submits it programmatically. |
Time Utilities (TimeUtils)
| Method | Description |
|--------|-------------|
| TryParseDuration(input, out TimeSpan result) | Parses ISO 8601 durations (1h30m, 15s, PT1H30M) and hh:mm:ss / TimeSpan strings. Returns false if unparseable. |
Example:
if (TimeUtils.TryParseDuration("10m", out TimeSpan duration))
// duration == TimeSpan.FromMinutes(10)
String Chunking (IStringChunker)
Breaks arbitrary text into segments no longer than a given character limit.
| Implementation | Behaviour |
|----------------|-----------|
| WordBoundaryChunker | Splits on whitespace; avoids cutting words mid-word. |
| HardCutChunker | Hard-cuts at the character limit, no word awareness. |
Player Utilities (PlayerUtils)
| Method | Description |
|--------|-------------|
| GetUserName() | Returns the local player's display name (may contain TMP
Install & use Install: follow the bundled instructions
- Unzip the archive from playbuff and read the bundled readme / instructions first.
- Most mods rely on the game's mod loader — the usual route is a community mod manager (such as r2modman): pick this game, install, and it handles the loader and dependencies.
- For a manual install, put the mod files into the matching Mod / plugins folder inside the game directory.
- Launch the game to confirm it loaded; mods with listed dependencies need those installed as well.
Install locations vary a lot between mods — the bundled readme is the most reliable guide.
Install these first, or the mod will not work: