Phaser is a joy for 2D web games — sprites, physics, and a tidy scene system, all in JavaScript. You’ve got your game running through a dev server (npm run dev, maybe Vite or Webpack), and it plays great… at http://localhost:8080. Which means it plays great for exactly one person. Let’s get your Phaser game to a real, public, playable link on Rosebud.
Why your Phaser game is stuck on localhost
Phaser games are pure web — HTML, JavaScript, and assets — but during development they’re served by a bundler’s dev server bound to localhost. That address is your machine only. A Phaser game also generally needs to be served (not opened from file://) because it loads sprites, atlases, and audio via fetch, which the local-file protocol blocks. To share it, the built files need an always-on public host.
What your Phaser project looks like
- Source JS/TS with your scenes, sprites, and game config.
- A bundler (Vite, Webpack, Parcel) that compiles to static
dist/output. - An assets folder — images, atlases, audio, tilemaps.
Once built, that dist/ folder is just static files — exactly what’s easy to host.
Path 1: Submit your game and get it hosted
Fastest route to a link: hand us the game. Fill out the form with your Phaser project — the built dist/ folder, the repo, or a zip — and we’ll host it at a shareable, browser-playable URL. No bundler base-path debugging, no asset 404s in production, no CORS surprises on your audio files. Send it; get a link.
Path 2: Bring it into Rosebud and let Rosie reformat it for Three.js
Phaser is a 2D renderer; Three.js can do 2D too (orthographic camera, textured planes/sprites) and opens the door to 3D and effects you can’t easily get in Phaser. If you want to keep iterating with AI and publish instantly, port it on Rosebud:
- Open Rosebud, create a project, and add a code file.
- Paste your Phaser scene and game logic — update loop, sprites, physics, input.
- Prompt Rosie to reformat it for Three.js: “Convert this Phaser game to Three.js in the browser. Keep the 2D gameplay, recreate the sprites as textured planes with an orthographic camera, preserve the physics and input, and set up the render loop.”
- Refine by prompting — add particles, lighting, or a 3D twist — then publish in one click.
Your mechanics carry over; Rosie handles re-expressing the rendering in Three.js.
Common gotchas moving a Phaser game to the web
- Asset loading paths. Phaser’s
this.load.image('key', 'assets/...')calls use paths that must resolve after the build — keep them relative or let the host sort it out. - Base path / subdirectory. If hosted under a subfolder, set your bundler’s
basecorrectly so the bundle and assets resolve. - Audio autoplay. Browsers block audio until a user gesture — gate sound behind a click/tap, not on load.
- Canvas scaling. Use Phaser’s
Scale.FIT/ responsive config so it looks right on phones.
Frequently asked questions
Can I host a Phaser game without configuring deployment?
Yes — submit the built project through the form and we’ll host it, or rebuild it on Rosebud and publish with one click.
Why won’t my Phaser game run when I open the HTML file?
It loads assets via fetch, which file:// blocks. It needs to be served — which hosting handles.
My game is 2D — does Three.js still make sense?
Yes. Three.js renders 2D well with an orthographic camera and sprites, and Rosie sets that up from your Phaser logic.
Is it free to try?
Yes — you can build and publish on Rosebud for free.
Get your Phaser game off localhost
Two ways to go live, and you can do both:
- Fill out the form with your game. Send us your Phaser project with this short form and we’ll host it at a real, shareable playable link — no localhost, no deploy config, no server to babysit.
- Try it yourself on Rosebud. Open Rosebud, create a code file, paste in your game, and ask Rosie to reformat it for Three.js. A few prompts later you’ll have a browser-native build you can publish with one click.
New to this? Start with the overview: How to put your vibe-coded game on the web.





