s&box SaveSystem: Scene save/load
SaveSystem GameObjectSystem API Reference SaveSystem is a saving/loading system that captures the differences between the current scene state and the original s…
s&box JSONObject Save Data Helper for Components
This s&box-focused sample shows how to programmatically construct and deconstruct JSON for component save data. It is useful for player saves, world unlock stat…
Extensible Player Data Save Hooks for World Components
This pattern lets gameplay components plug into a player's save/load flow without putting every feature directly inside one large class. The framework has three…
Sandbox: SaveSystem — scene diff save/load with versioning and ISaveEvents
Sandbox SaveSystem — Scene Diff Save/Load The captures the difference between the current scene state and the original scene file. This means saves are compact …
s&box SaveSystem: Scene save/load with metadata and event hooks
SaveSystem API Reference SaveSystem is a GameObjectSystem that captures differences between the current scene state and the original scene, enabling save/load f…
s&box ISpawner: Spawner interface
ISpawner Interface API Reference ISpawner describes something that can be spawned into the world. Implementations handle their own preview rendering and spawn l…
s&box IToolInfo: Tool information display interface
IToolInfo API Reference IToolInfo is an interface for providing tool information display in the UI, such as in the spawn menu or tool selector. Type Signature P…
s&box SoundDefinition: Categorized sound GameResource
SoundDefinition GameResource API Reference SoundDefinition is a GameResource that defines a categorized sound for use on spawned entities (thrusters, hoverballs…
s&box Global.ISaveEvents: Save/load event callbacks
Global.ISaveEvents Interface API Reference Global.ISaveEvents is an interface for Components that want to listen to SaveSystem events. Implement to receive call…
s&box BanSystem: Player ban management
BanSystem GameObjectSystem API Reference BanSystem holds a banlist and can ban users. Implements INetworkListener to reject banned connections. Bans are persist…
Project Structure Recommendations
Project Structure Recommendations Community guide for organizing s&box projects based on Facepunch examples and successful community projects. Recommended Folde…
s&box Hints GameObjectSystem: UI hint queue
Hints GameObjectSystem Example Hints is a GameObjectSystem that manages the display of timed popup hints in the UI. It queues hints with delays and displays the…
Sandbox.Json
Sandbox.Json JSON serialization utilities. Overview Json provides methods for serializing objects to JSON and parsing JSON strings. Serialize Deserialize Parse …
BanSystem Pattern for Player Management
BanSystem - Player Ban Management A GameObjectSystem that manages player bans with persistent storage. Demonstrates , persistence, and RPC commands. Implementat…
Sandbox.Http
Sandbox.Http HTTP request utilities. Overview Http provides asynchronous methods for making HTTP requests to external services. GET Request POST Request JSON Re…
s&box ISpawnerExtensions: Creating spawner instances
ISpawnerExtensions: Creating ISpawner Instances ISpawnerExtensions provides an extension method to create ISpawner instances from type strings, supporting vario…
Chat UI Pattern with RPC Broadcasting
Chat UI with RPC Broadcasting A Razor UI component for game chat that handles local input, RPC broadcasting, Steam filtering, and automatic message expiration. …
s&box ScriptedEntity: Custom entity GameResource
ScriptedEntity GameResource API Reference ScriptedEntity is a GameResource that defines a spawnable entity with a prefab, used by the spawn menu to create custo…
LocalData static class: Server-side data persistence
LocalData Static Class API Reference LocalData provides server-side data persistence that survives server restarts. It's useful for storing configuration, ban l…
Scene Metadata - s&box Scene Documentation
Scene Metadata You can implement the interface in any Component that has data you'd like saved to Metadata. Metadata is data that can be accessed without needin…