Go Bananas

SPZ Gaussian splat files in browser games

Go Bananas accepts SPZ splat files and converts them to a compressed PLY thinned to 300,000 splats, which your game loads with the GaussianSplats3D library.

SPZ is a compact file format for Gaussian splats, published by Niantic. A Gaussian splat is a photo-real 3D scene made of millions of tiny soft blobs, captured from photos or video of a real place or object. SPZ stores the same scene as a PLY splat at a fraction of the size, compressed with gzip.

What SPZ is good for in games

Like other splats, SPZ scenes look real from any angle:

  • Real places as levels: a room, a park, a street to explore.
  • Backdrops: a realistic world behind simpler game objects.
  • Scanned objects to walk around.

SPZ files are small to download and share. But splats have no solid surfaces for collisions, and large scenes are heavy to draw on phones. For characters and props that move, use a mesh format like GLB.

Uploading SPZ to Go Bananas

You can upload in three places:

  • Create panel: press the 📎 button or drag the file onto the chat.
  • Assets tab: press Upload Asset.
  • Editor: in the Assets tab press Upload New, press the 📎 in the editor chat, or drag the file onto the editor chat.

You need to be signed in with a verified email to upload.

LimitValue
Size per file200 MB
Size after decompressionabout 1.5 GB
Splats25 million at most
Total storage100 MB for free accounts created since May 5, 2026; 1 GB for Pro subscribers and older accounts
Uploads20 an hour per account

Failed and deleted uploads don't count toward your storage. The file must start with the gzip signature that SPZ files use.

What the site does with it. The conversion runs in the background, so the scene shows as processing for a while. Conversions that take more than 30 minutes are stopped.

  • The SPZ is converted to a .compressed.ply, a compressed splat format that browsers load well.
  • The scene is thinned to at most 300,000 splats, which keeps it playable.

When it's ready, you can open the scene in the built-in splat viewer.

The file name matters. The name without its extension becomes the scene's name in games: museum.spz is "museum". Renaming the asset changes the name, and code that used the old name won't find it.

Using SPZ splats in your game

Ask the AI. In the create box or the edit box, type @ and pick your scene. It inserts the name in quotes:

Make a treasure hunt inside "museum": hide ten coins and show a timer.

In code. The scene is in window.GAME_ASSETS.models and loads with the GaussianSplats3D library, version 0.4.7. Games that use splats load three.js r162 as ES modules through an import map, and must not mix it with the older r128 script tags:

<script type="importmap">
{ "imports": {
    "three": "https://cdn.jsdelivr.net/npm/three@0.162.0/build/three.module.min.js",
    "three/addons/": "https://cdn.jsdelivr.net/npm/three@0.162.0/examples/jsm/",
    "@mkkellogg/gaussian-splats-3d": "https://cdn.jsdelivr.net/npm/@mkkellogg/gaussian-splats-3d@0.4.7/build/gaussian-splats-3d.module.min.js"
} }
</script>
import * as GaussianSplats3D from '@mkkellogg/gaussian-splats-3d';
const viewer = new GaussianSplats3D.Viewer({ threeScene: scene, renderer, camera });

// .spz and .compressed.ply keep their up direction: scale [s, s, s]
// (.ksplat scenes need [s, -s, s] instead)
const url = GAME_ASSETS.models['museum'].url;
viewer.addSplatScene(url, { position: [0, 0, 0], rotation: [0, 0, 0, 1], scale: [1, 1, 1] })
  .then(() => viewer.start());

Tips and common problems

  • Scene upside down: SPZ scenes use the scale [s, s, s]. Only converted .ksplat scenes need the flipped [s, -s, s].
  • Detail lost: scenes over 300,000 splats are thinned. Cropping the capture to the area you need keeps more detail where it matters.
  • Upload refused or failed: check the file is a real SPZ export. Scenes larger than about 1.5 GB once decompressed, or with more than 25 million splats, are refused.
  • Slow on phones: keep scenes small and the camera close to the action.
  • Walking through walls: splats have no collisions. Ask the AI for invisible walls and a floor.

From ChatGPT or Claude

The Go Bananas app in ChatGPT and the connector in Claude can't send 3D files. Ask for an upload link and you'll get a link to the game's page, where you can upload the scene in the editor.

Related

Your turn.

Describe a game in plain language and play it in your browser a few minutes later. Your first game is free, no account needed.

▶ Make a game