Skip to content
Work in progress. These docs describe Spawnite at launch, and some parts are still being built.

The asset store

The asset store is where a creator browses, previews and adds shared assets to a game: models, rigged characters and their clips, animation clips, textures, sounds, particle effects and packs. It lives at create.spawnite.com/assets, and the files it shows come from the shared bucket at assets.spawnite.com, which the Assets page describes. Every picture in the store is an engine render: a thumbnail on every card, and the live viewer on the detail page of a model or a character. A particle effect’s card and its detail page show the still picture the publish rendered of it.

This page is the design draft for the store. The Claude Design canvas that produced it is Asset Store, and the prompt is on the internal claude-design pages, which public pages never link. Where the canvas and this page differ, this page wins: the canvas was drawn without reading packages/platform-ui, so its colours, type sizes and radii are stand-ins, and the rules below name the platform’s own.

  • One grid holds every kind. Models, avatars, clips, textures, sounds, particle effects and packs are the same square card: the render edge to edge, the name, one line of meta, and small badges for rigged, animated and licence. A texture card is its tile at the same size as a model, and an effect card the picture the publish rendered of it in the air. A pack card has a stacked look and a count, such as “57 models”. There is no second grid and no category tree.
  • Search is one field with typed-ahead. Suggestions mix asset names, tags and filters in one popover. Enter opens an asset or searches, and Tab applies a filter suggestion and keeps the query, as Fab does. Every filter and the query live in the URL, so a search is shareable and the back button works.
  • Filters are chips, not a sidebar. A row of category chips under the search: All, Characters, Animals, Nature, Buildings, Props, Vehicles, Textures, Skies, Sounds, Animations, Effects. A row of filter chips under that: kind, style, rigged, animated, licence, source and pack, each showing its value with an × once applied, plus Clear, the result count and Sort at the far right. Sort is relevance, newest or most used in games. On a phone the filter row collapses into a bottom sheet with one Apply button that shows the live count.
  • Relevance ranks a name prefix match over a name word match, over a tag match, over a category, pack or source match, tie-broken by how many games use the asset, then by newest. An asset with no recorded source and no game using it sorts last inside its tier. That ordering is the whole guard against low-effort uploads: no flag and no moderation state in the store.
  • Hover is the engine. A model card turns slowly, a rigged card plays its first clip, a texture card tiles its texture at twice the repeat, a sound card plays, a pack card turns its banner scene. The card’s own motion is a scale from 1 to 1.02 on the release spring and back on leave, and nothing else, which is GameCard’s restraint. On a phone, a press and hold does what hover does, and a tap opens the detail page.
  • One accent per screen, on Add. The game is chosen once, in the header, and every Add button already names it: “Add to Holdfast”. With no game chosen, Add opens the picker first. After a press the button reads Added with a check and goes to the raised colour; no toast. The button carries the size in megabytes, and for a texture the chosen resolution. Nothing on any screen prices an asset.
  • The pack page opens with a banner strip rendered from the pack, the pack’s name, source, licence and style, a count by category that lists only the categories the pack holds, and an Add whole pack button with its asset count and size. Under it the pack’s assets sit in the same grid, searchable and filterable within the pack, sorted by pack order by default.
  • The asset detail page fills its top with the model viewer, the one the tools app mounts, in its overlay layout: the model inside the engine’s Game under the Noon look from the Orbit camera, with every control over the canvas and no panel. At the top right a floor toggle, reset, Copy a picture and fullscreen, with the channel switch for final, bumps and wireframe under them on the same glass; at the bottom one low strip with Loop, play, a scrubbable track, a rigged model’s clips as pills of their names, and the time. An avatar gets the platform’s Idle, Run, Jump and Land, Idle playing on load. No look switch, no camera switch and no budget: one look and one camera serve a creator, the switches are the team’s tools, and the Details list under the viewer has the file’s facts. Beside the viewer sit only the name, the pack, Add and the tags. The full Details list sits below the viewer: kind, clips, size in metres, detail, style, licence, source with its credit line and file, with Download, Copy id and Report at its top right. Then Goes with, the assets from the same pack and style, and In n games, drawn with GameCard.
  • The texture detail page swaps the viewer for a ball and a floor showing the material, with flat, colour only and bumps views, a repeat of 1, 2 or 4 and a choice of sky to light it. Under it the map set, colour, bumps, shine and shadows, each with its own download, the real-world size in centimetres, and a resolution switch that the Add button carries.
  • A sound has no viewer. Its detail page shows a waveform strip under the same play and scrub bar the clip timeline uses.
  • Words are the creator’s. Detail for triangles, Bumps for the normal map, Shine for roughness, Shadows for ambient occlusion, Colour only for base colour, Moves for rigged or animated, Real size for scale. The engineer’s term sits in a tooltip or in secondary text after the plain one. Mesh, PBR, LOD and UV never appear.
  • Empty and loading states. A skeleton card has the exact footprint of a card and no shimmer, because renders land one by one. No results lists filter changes that would produce results, each with its count, and offers Publish it yourself. My assets, under the account menu, shows the same grid under its own heading, and empty says how to publish.
  • The design system is platform-ui and nothing else. Colours are ground, raised, well, line, text, text-secondary, text-tertiary and accent from its spawnite- tokens; radii are card, sheet, control and pill; type is display, title, heading, name, body, control, secondary, caption and eyebrow; the content width and the one breakpoint are its own. Card names are name, meta lines are caption in text-secondary. Motion is the shared springs: release for card hover and enter, snappy for chips, the popover, the sheet and the Add swap, meter for the timeline head and the resolution switch. Under reduced motion, scale and translate drop and opacity stays.
  • Layout. Desktop: the header with the wordmark, navigation, the game target and the account menu; the search up to 640 wide with Publish at its right; the category row; the filter row; a grid of four columns at the content width. Phone: a 56 header with the wordmark, the game target and the avatar; a 44 search; category chips that scroll; a Filters button with its count and Sort; a grid of two columns; on a detail page the viewer is the width of the screen and taller than wide, its panel under the canvas, and Add is pinned in a bar at the bottom.
  • Sign-in. The creator signs in with the same WorkOS AuthKit account as the player site and spawnite login, through the same hosted page, as Roblox’s Creator Hub shares the roblox.com session and Unity’s Asset Store and Fab sign in through one account site. Signed out, the header’s account button starts the sign-in, and the creator comes back to the store page it started on. Signed in, the button shows the account’s face and name and opens the account page, which holds the email, the storage and Sign out. A first sign-in here asks for no birth year, because nothing in the store is age-rated.

The store reads one index, the assets manifest on the bucket, which the Assets page describes. The publish command bakes the fields a file can tell: triangles, clip names, rigged, bounds, a texture’s resolution, a sound’s duration, whether a particle effect loops, and a rendered square thumbnail, which an effect has today. A catalog file in the assets package supplies what a file cannot: name, tags, category, pack, style, licence and source, and the publish fails on an asset with no row. A pack is a folder. The MCP’s list-assets tool reads the same index with the same filters, so an agent and a creator browse one catalog.

Filled from session 7’s export, one image per state.

  • Browse, desktop, populated
  • Browse, typed-ahead open
  • Browse, phone
  • Browse, phone filter sheet
  • Browse, loading
  • Browse, no results
  • My assets, empty
  • Pack, desktop and phone
  • Asset detail, rigged model, desktop and phone
  • Texture detail, desktop and phone
  • Card: model, hover, texture, pack, sound, loading, error

The bundle Claude Design handed off is on the canvas linked above, as its notes. Its component list, in build order, is the shape the build issue follows; its token values are stand-ins that the rules above replace.