Overview
Warudo's scripting system allows you to extend Warudo's functionality by writing C# code that adds new assets and nodes to your VTubing setup. You can share your custom assets and nodes on the Steam workshop by creating a plugin mod.
Here are just a few wonderful plugins created by the Warudo community:
- Feline's Headpat Node
- Input Receiver and Tools for Mouse/Pen/Gamepad
- Emotes From Twitch Message + Emote Dropper
- Rainbow Color Node
- Streamer.bot integration
Warudo is built with custom scripting in mind. In fact, the entirety of Warudo's features is built with the same APIs (the Warudo.Core
namespace) that are available to you when creating custom nodes, assets, and plugins.
For example, the Stream Deck integration in Warudo is actually a built-in plugin! We have made its source code available here for your reference.
To give you a taste of how Warudo's scripting system works, here is a simple example of a custom node that plays a random expression on a character when triggered:
And the corresponding C# code:
using UnityEngine;
using Warudo.Core.Attributes;
using Warudo.Core.Graphs;
using Warudo.Plugins.Core.Assets.Character;
// Define a custom node type that will be shown in the note palette
[NodeType(Id = "95cd88ae-bebe-4dc0-b52b-ba94799f08e9", Title = "Character Play Random Expression")]
public class CharacterPlayRandomExpressionNode : Node {
[DataInput]
public CharacterAsset Character; // Let the user select a character
[FlowInput]
public Continuation Enter() { // When the node is triggered via the "Enter" flow input
if (Character.Expressions.Length == 0) return Exit; // If the character has no expressions, exit
Character.ExitAllExpressions(); // Exit all current expressions
var randomExpression = Character.Expressions[Random.Range(0, Character.Expressions.Length)];
Character.EnterExpression(randomExpression.Name, transient: false); // Play a random expression
return Exit; // Continue the flow and trigger whatever connected to the "Exit" flow output
}
[FlowOutput]
public Continuation Exit;
}
Intrigued? Read on!