Castle Builder by needle

How To Play

Build your own castle! Drag 3D models from the various palettes onto the stage, and create your very own world.
Works on Desktop, Mobile, VR, AR, all right in your browser. Interactions are currently optimized for VR; placement on screens is a bit harder but possible. Have fun, no matter which device you're on!

Invite your friends! Click Create Room to be put into a live, multi-user space – just copy the URL, send it to a friend and they join you automatically.
There's currently a max limit for "users online at the same time" - if you don't get into a room, please try later.


This page was authored in Unity and exported to three.js using tools and technologies by 🌵 needle.

There are a lot of open technologies involved: 3D models are in glTF format, the render engine is three.js, VR and AR are using WebXR. The networking server runs on Glitch, and audio is sent over WebRTC using PeerJS.

Follow us on Twitter for more! @NeedleTools • @marcel_wiessler • @hybridherbst


🏰 "Modular Medieval Buildings" by Quaternius

🏰 "Castle Kit" by Kenney

🐉 Dragon by jeremy [CC-BY] via Poly Pizza

🦄 Unicorn by jeremy [CC-BY] via Poly Pizza

💀 "Low-poly Skull Coins!" by Cresis is licensed under Creative Commons Attribution.

🐍 "Thor and the Midgard Serpent" by Mr. The Rich is licensed under Creative Commons Attribution.

🎹 Harp by Poly by Google [CC-BY] via Poly Pizza

👑 Crown by Quaternius [CC0] via Poly Pizza

🎵 "Knight's Templar" by Adriel Fair

Known Issues

Desktop VR On Chrome and Edge, VR should work with OpenXR-capable headsets such as HTC Vive, Oculus Rift, Quest via Link, ... Firefox will unfortunately turn off WebVR support with not WebXR support in sight.

WebXR on iOS Safari still doesn't support WebXR. Mozilla's WebXR Viewer currently doesn't load Castle Builder (and hasn't been updated in years).

Performance There's deliberately no limit to how many objects you can create. Thus, how many reasonably work depends on your device.

Audio Volume Some users have reported low volume on iOS or Android that might be related to how the phones handle microphone input. We're investigating.

Anything else? Please report here!

Get in touch 🌵