UGC & Bundles¶
BlackICE supports user generated content in the form of UGC bundles. Bundles allow running server and client code in a sandboxed WebAssembly environment, packaged together with optional web content for UI. Client code is streamed to every peer that connects to your server. Bundles allow a server to vastly modify the game state and implement many different game modes.
Bundles typically ship one component per realm, and the two sides communicate over the network.
The word realm is used to describe on which "side" code is running. Bundle code can either run on:
- The game server, which handles:
- Connection and player management
- VOIP management
- Client spawning logic
- Confidential logic that should not be available to clients
- Connected game clients, who handle:
- Modifying base game state via Events, Hooks or by modifying scripting state
- Listening to user input to trigger logic
- Communicating with the ReUI layer to hydrate and render custom web content
Who is this section for?¶
- Bundle creators - write and package game logic:
- Server owners - host and distribute bundles:
Boundaries and trust model
Both audiences should read The Networking Model
Creators need to write secure code with proper validation, server owners need to be aware of risks a certain type of bundle can introduce