Alpha

v0.1.1·Updated 2026-05-12

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

  1. Unzip the archive from playbuff and read the bundled readme / instructions first.
  2. 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.
  3. For a manual install, put the mod files into the matching Mod / plugins folder inside the game directory.
  4. 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.

Dependencies

Install these first, or the mod will not work:

BepInEx-BepInExPack

File & checksum

Filename
Alpha-0.1.1.zip
File size
86.0 KiB