Asset Creation Pipeline
Import models, textures, and sounds into your s&box project. Understand the asset compiler.
Because s&box is built on Source 2, your assets compile into the same .vmdl, .vmat, .vtex, and .vsnd_c formats Valve uses for CS2 and Half-Life: Alyx. The good news is that the editor handles compilation automatically — you drop a source file (FBX, OBJ, PNG, WAV) into your project's Assets/ folder and the engine spits out the compiled binary on the fly. Models are configured in ModelDoc, materials in the Material Editor, and everything is browsed in the Asset Browser panel.
Importing models with ModelDoc (.vmdl)
ModelDoc is the editor for .vmdl files — the modern replacement for Source 1's text-based .qc compile scripts. Drop an FBX, OBJ, DMX, SMD, or VOX into your Assets/ folder and create or open a .vmdl alongside it; ModelDoc opens with a node graph. The minimum you need is a RenderMeshFile node pointing at your source mesh; for animated meshes also add an AnimBindPose (or AnimFile) so morph targets and IK don't silently break. Export FBX as binary (not ASCII) since Blender can only re-import binary, and avoid periods in material names — everything after the period gets truncated. Find ModelDoc under the Tools menu in the editor.
Materials (.vmat) and textures
A .vmat is a Source 2 material — it pairs a shader with a set of textures and parameters. Open the Material Editor, pick a shader (Complex is the default PBR shader), and assign Color, Normal, Roughness/Metalness textures. Source images can be PNG, TGA, or PSD; the engine compiles them to .vtex_c on save. For a model with multiple slots, the .vmdl looks up materials by the names embedded in your FBX, so keep those names short, lowercase, and free of dots.
Sound assets (.sound and .vsnd)
Drop a .wav or .mp3 into Assets/ and create a .sound file next to it. The .sound is a small JSON resource that wraps your raw audio with parameters: volume, pitch range, distance falloff, mix group. You then load it in code with Sound.Play("my_sound") or Sound.FromWorld("my_sound", position) for spatialised playback. Use .sound files (not raw .wav) so designers can tweak volume and randomisation without touching code.
// Play a sound at a world position
Sound.Play( "sounds/coin_pickup.sound" );
Sound.FromWorld( "sounds/explosion.sound", WorldPosition );
// Load a model and apply a material from code
var renderer = GameObject.AddComponent<ModelRenderer>();
renderer.Model = Model.Load( "models/jam/crate.vmdl" );
renderer.MaterialOverride = Material.Load( "materials/jam/crate_red.vmat" );The Asset Browser
Open the Asset Browser panel (Window → Asset Browser if it's not visible) to see every asset in your project, plus mounted content from base s&box and any cloud asset packs you've subscribed to on sbox.game. You can drag a .vmdl into the scene to spawn a ModelRenderer, drag a .prefab to instantiate it, or right-click a folder to create new assets in place. The Asset Browser is also where you publish individual assets to the platform.
Use cloud assets to save time in a jam
sbox.game hosts thousands of community-published assets — characters, weapons, props, environments — that you can mount into your project for free. Browse them on the website or in the editor's Asset Browser, click 'Add to Project', and they appear in your Mounts. For a jam, leaning on the Citizen player model and free environment kits will save you days of work; the docs even ship the Citizen source files at sbox/addons/citizen so you can extend rather than replace.