PLY Gaussian splat files in browser games
Upload a Gaussian splat .ply to Go Bananas and the site packs it into a lighter .ksplat scene your game can walk through; .compressed.ply files are kept as they are.
A Gaussian splat is a 3D scene made of millions of tiny soft blobs, captured from photos or video of a real place or object. Splat capture and training tools usually save it as a .ply file. PLY (Polygon File Format) is an older, general 3D point and mesh format. On Go Bananas, PLY uploads are treated as splats.
What splats are good for in games
Splats look photo-real: a captured room, a garden, a statue or a street looks like the real thing from any angle. That makes them great for:
- Real places as levels: explore your own house or a park.
- Backdrops: a realistic scene behind simpler game objects.
- Showpieces: a scanned object to walk around.
They have limits. Splats have no solid surfaces for collisions, so games usually add invisible floors and walls. They are also heavy, and big scenes can stutter on phones. For characters and props you'll move around, use a mesh format like GLB.
Uploading PLY 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.
| Limit | Value |
|---|---|
| Size per file | 200 MB |
| Total storage | 100 MB for free accounts created since May 5, 2026; 1 GB for Pro subscribers and older accounts |
| Uploads | 20 an hour per account |
Failed and deleted uploads don't count toward your storage. The file must start with the ply header.
What the site does with it. Processing runs in the background, so the scene shows as processing for a while.
- A regular .ply splat is converted to
.ksplat, a compact splat format made for the browser. Its colors are converted, and the scene is thinned to at most 500,000 points, keeping more detail close to the center. Large files also get compressed copies so they download faster. - A .compressed.ply (the compressed format made by SuperSplat and PlayCanvas) is kept as it is.
You can't upload .ksplat files directly; the site makes them from your PLY.
From a photo. You can also make a splat from a single picture: upload a JPG or PNG and choose ✨ Turn into 3D. The site builds a .ksplat scene from it.
When the scene is ready, you can open it in the built-in splat viewer.
The file name matters. The name without its extension becomes the scene's name in games: garden.ply is "garden". Renaming the asset changes the name, and code that used the old name won't find it.
Using PLY 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 first-person walk through "garden" where I collect five glowing orbs hidden in it.
In code. Splat scenes are in window.GAME_ASSETS.models and load with the GaussianSplats3D library, version 0.4.7. Games that use splats load three.js r162 as ES modules through an import map. Don't mix that with the older r128 script tags in the same game:
<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 });
// .ksplat scenes need their Y axis flipped; .spz and .compressed.ply don't
function splatScaleFor(url, s = 1) {
return url.toLowerCase().endsWith('.ksplat') ? [s, -s, s] : [s, s, s];
}
const url = GAME_ASSETS.models['garden'].url;
viewer.addSplatScene(url, { position: [0, 0, 0], rotation: [0, 0, 0, 1], scale: splatScaleFor(url) })
.then(() => viewer.start());
Tips and common problems
- Scene upside down: a converted
.ksplatneeds the scale[s, -s, s]; a.compressed.plyneeds[s, s, s]. - Slow on phones: splats are heavy. Crop the scene to the area you need before uploading, in your splat editor.
- Blurry details: large scenes are thinned to 500,000 points. A smaller capture keeps more detail per area.
- Walking through walls: splats have no collisions. Ask the AI for invisible walls and a floor at the right height.
- Point clouds and meshes: this upload path is built for Gaussian splats. For a regular 3D model, use GLB.
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.