willis81808-UnboundLib icon


This is a helpful utility for ROUNDS modders aimed at simplifying common tasks.

Last updated 2 weeks ago
Total downloads 126833
Total rating 6 
Categories Utilities
Dependency string willis81808-UnboundLib-2.10.2
Dependants 74 other mods depend on this mod

This mod requires the following mods to function

BepInEx-BepInExPack_ROUNDS-5.4.1100 icon

BepInEx pack for ROUNDS. Preconfigured and ready to use.

Preferred version: 5.4.1100
willis81808-MMHook-1.0.0 icon

MonoMod Runtime Hooks generated for ROUNDS

Preferred version: 1.0.0


Join Us!

For more mods, news, and support join us on discord here: https://discord.gg/mGfsTvc53v


This is a helpful utility for ROUNDS modders aimed at simplifying certain common tasks.



The NetworkingManager abstracts the default Photon networking capabilities away into an easy-to-use interface you can use for communication between clients. Example usage:

private const string MessageEvent = "YourMod_MessageEvent";

NetworkingManager.RegisterEvent(MessageEvent, (data) =>
	ModLoader.BuildInfoPopup("Test Event Message: " + (string)data[0]);    // should print "Test Event Message: Hello World!"

// send event to other clients only
NetworkingManager.RaiseEventOthers(MessageEvent, "Hello World!");

// send event to other clients AND yourself
NetworkingManager.RaiseEvent(MessageEvent, "Hello World!");

CustomCard Framework

Create a class for your card, extend the CustomCard class, implement its methods, and then in your mod initialization register your card like so:

void Start()

CustomMap Framework

First create a map in unity by using the package and export your scene to a AssetBundle. Then in your mod initialization register your map like so:

void Start()

Credits Framework

Registering credits for a mod is as simple as:

void Start()
    Unbound.RegisterCredits(string modName, string[] credits, string linkText, string linkURL);

GameMode Framework

The GameMode framework provides a modding-friendly API for custom game modes, allowing mods to target them without having to know about their existence.

Custom game modes are defined in two layers: the actual game mode class that does all the heavy gameplay logic, and a handler class that provides an interface between mods and the game mode.


The framework offers a flexible hook system. With hooks, mods can trigger actions at specific points of time as a game is running, without needing to know anything about the specific game mode or its implementation.

Triggering hooks

Game modes can trigger async hooks whenever they wish:

private IEnumerator RoundStart()
	// Hook keys are case-insensitive
	yield return GameModeManager.TriggerHook("RoundStart");

	// A healthy set of predefined keys is provided to make hooking on to them easier.
	// Predefined keys should be used in favour of custom ones when possible.
	yield return GameModeManager.TriggerHook(GameModeHooks.HookRoundStart);

Registering hooks

Mods can register hook listeners wherever they wish:

private void Init()
	// Hooks are called with the game mode that triggered the hook, which is always the currently active game mode
	GameModeManager.AddHook(GameModeHooks.HookRoundStart, this.OnRoundStart);

private IEnumerator OnRoundStart(IGameModeHandler gm)
	// Triggers are IEnumerators so they support yields
	yield return new WaitForSeconds(2f);


	/* Since triggers are IEnumerators, they must be executed within a coroutine. This means triggers are guaranteed to
	 * be able to disrupt the execution of the current game mode.

The existing game modes in ROUNDS, namely Arms Race and Sandbox, have also been patched to trigger hooks.


The framework also adds a setting system to help mods change common game mode settings easily. Settings provide an easy-to-use method for mods to change gameplay, but they place a lot of responsibility onto game modes to provide sufficient settings.

Using settings in a game mode

private void CheckPoints()
	if (p1Points >= (int)GameModeManager.CurrentHandler.Settings["pointsToWinRound"])

Changing settings (in a mod)

private void Init()
	GameModeManager.AddHook(GameModeHooks.HookInitEnd, this.OnInitEnd);

private IEnumerator OnInitEnd(GameModeHandler gm)
	gm.ChangeSetting("pointsToWinRound", 10);

See /UnboundLib/GameModes for implementation details and example GameModeHandlers.


Building the project is likely to work without having to change anything. However, if your ROUNDS installation resides in somewhere other than C:\Program Files (x86)\Steam\steamapps\common\ROUNDS, you will need to change the path we have pre-configured for you:

  1. Copy UnboundLib/UnboundLib.csproj.user.dist to UnboundLib/UnboundLib.csproj.user
  2. Change the ROUNDS installation folder path inside UnboundLib/UnboundLib.csproj.user

You can now open the project solution with Visual Studio, and you're set.

Available versions

Please note that the install buttons only work if you have compatible client software installed, such as the Thunderstore Mod Manager. Otherwise use the zip download links instead.

Upload date Version number Downloads Download link  
2022-1-11 2.10.2 9854 Version 2.10.2 Install
2022-1-6 2.10.1 5954 Version 2.10.1 Install
2022-1-2 2.10.0 4996 Version 2.10.0 Install
2021-12-28 2.9.0 4414 Version 2.9.0 Install
2021-12-26 2.8.2 1438 Version 2.8.2 Install
2021-12-26 2.8.1 63 Version 2.8.1 Install
2021-11-30 2.8.0 14126 Version 2.8.0 Install
2021-11-26 2.7.7 3465 Version 2.7.7 Install
2021-11-5 2.7.6 10768 Version 2.7.6 Install
2021-10-27 2.7.5 7640 Version 2.7.5 Install
2021-10-27 2.7.4 604 Version 2.7.4 Install
2021-9-29 2.7.3 14061 Version 2.7.3 Install
2021-9-26 2.7.2 2077 Version 2.7.2 Install
2021-9-7 2.7.1 8026 Version 2.7.1 Install
2021-9-3 2.7.0 2416 Version 2.7.0 Install
2021-8-31 2.6.2 1819 Version 2.6.2 Install
2021-8-28 2.6.1 1382 Version 2.6.1 Install
2021-8-23 2.6.0 2386 Version 2.6.0 Install
2021-8-11 2.5.1 6510 Version 2.5.1 Install
2021-8-11 2.5.0 463 Version 2.5.0 Install
2021-7-27 2.4.0 6543 Version 2.4.0 Install
2021-7-21 2.3.0 3572 Version 2.3.0 Install
2021-7-13 2.2.1 4393 Version 2.2.1 Install
2021-7-7 2.2.0 2778 Version 2.2.0 Install
2021-7-3 2.1.5 1882 Version 2.1.5 Install
2021-6-27 2.1.4 2028 Version 2.1.4 Install
2021-6-23 2.1.3 1226 Version 2.1.3 Install
2021-6-18 2.1.2 1031 Version 2.1.2 Install
2021-6-18 2.1.0 307 Version 2.1.0 Install
2021-6-14 1.1.2 446 Version 1.1.2 Install
2021-6-12 1.0.9 74 Version 1.0.9 Install
2021-6-11 1.0.7 44 Version 1.0.7 Install
2021-6-11 1.0.6 47 Version 1.0.6 Install