Inspiration

Shape3D grew out of my earlier Reddit game, Place3D, a 3D version of Reddit’s famous r/place. In Place3D, players collaborated to build pixel-art-like structures using colored cubes, block by block, on a shared grid.

I wanted to take the same spirit, many players sharing one creative 3D space but push it further. Instead of passive collaboration, I imagined competitive environment.

What it does

Shape3D is a real-time multiplayer 3D building game where players race to place the right shape and color in the correct spot before anyone else.

Each round gives you a few highlighted positions on a shared 3D grid. Your goal is to match them as fast and accurately as possible. You earn points for every correct placement, and bonus points if you’re the first to complete a position.

Everything happens live. When one player places a block, everyone else sees it instantly. The grid updates in real time, and collisions make sure no two players can occupy the same space.

How we built it

I started with devvit's starter template for threejs.

Used devvit's realtime feature for instant updates across all users. redis for storing the shape coordinates and colors, and also the leaderboard.

Challenges we ran into

In realtime channel name i was using a colon, like game:${postId}. But apparently we cant use : in channel name. This was not mentioned in the docs. I went back to documentation to see if my realtime implementation was wrong and was stuck on this for a day. A duck helped me resolve this issue.

Accomplishments that we're proud of

This game takes a very simple concept and makes it very fun. So I guess i am proud of converting the idea i had into an actual fun game.

What we learned

Not to use colon in realtime channel name and that reddit ducks are very helpful.

What's next for shape3D

There’s a lot I want to explore with Shape3D. Block Battles: let players break or steal each other’s placed shapes to earn points or disrupt progress. Power-ups & Events: timed bonuses, color swaps, or “shape storms” that randomly shake up the grid.

Built With

Share this project:

Updates