Inspiration

We wanted a fun game to play with friends that everyone could join without downloading anything or learning complicated controls. We liked the idea of using our phones as controllers and playing together on one shared screen.

That led us to Doodle FFA, where everyone draws their own weapon and battles with it. You don’t have to be good at drawing. Seeing a ridiculous doodle come to life and using it against your friends is what makes each round fun.

What it does

Doodle FFA is a multiplayer party battle royale. Players scan a QR code to join a room on their phones, then get 20 seconds to draw a weapon.

After drawing, players receive a special ability, learn how their weapon works, and choose where to deploy. The shared screen reveals everyone’s creations before the battle begins.

Players use their phones to move, attack, and activate abilities. The arena, health, and combat outcomes update on the shared screen as everyone fights to be the last player standing.

How we built it

We built the frontend with TypeScript and Vite, using PixiJS and Three.js for the arena, animated characters, weapons, and visual effects.

SpacetimeDB powers the shared multiplayer world. It stores rooms, players, weapons, and combat state. Phones send movement and attack inputs through reducers, while a scheduled server reducer runs the battle simulation at 20 ticks per second. Clients subscribe to state changes to display movement, damage, projectiles, and round progression.

Our weapon pipeline uses structured specifications, validation, and a deterministic balance formula to support different attack styles. Gemini transforms submitted doodles into weapon artwork, while ElevenLabs provides custom weapon sounds and spoken announcements.

We built fallbacks so missing keys, slow responses, or failed requests do not prevent players from finishing a round.

Challenges we ran into

Balancing creative weapons

Players can draw almost anything, but the resulting weapons still need to be fair. We separated weapon behavior from power and balanced damage against attack cadence, range, area, and effects. This lets weapons feel different while following a consistent power budget.

Keeping every device synchronized

Phones and the shared screen need to agree on when drawing ends, when combat starts, and who wins. We put round timing and combat decisions on the server so every device follows the same authoritative state.

Handling slow content generation

External API requests can finish at unpredictable times. We used preparation time to process content, added deadlines and fallback weapons, and prevented late responses from replacing finalized weapons.

Making combat feel responsive

An attack needs to look and feel connected to the damage it causes. We aligned animation strike timing with the server simulation and added visual feedback so players can understand when their hits land.

Accomplishments that we’re proud of

We brought phone-based drawing, shared-screen multiplayer combat, special abilities, and synchronized rounds together into one playable experience.

SpacetimeDB handles the actual gameplay simulation, making it central to the project. Our fallback paths also let the game continue when optional content services are unavailable.

Most of all, we’re proud of the moment when players see their own drawings enter the arena. Something they scribbled seconds earlier becomes a weapon they can use against their friends.

What we learned

We learned that building a multiplayer game requires careful coordination between server state, client rendering, and player feedback. Fast updates help, but consistent timing and clear rules are just as important.

We also learned that generated content needs validation and limits before it becomes part of gameplay. Combining flexible content creation with deterministic game rules helped us preserve creativity without giving up reliability.

Finally, we learned how much the small details matter in a party game. Joining quickly, understanding the controls, recognizing your character, and seeing your weapon revealed all contribute to the experience.

What’s next for Doodle FFA

We want to playtest with larger groups, refine weapon and ability balance, and make the first round easier for new players to understand.

We also plan to expand the weapon variety and improve animation and combat feedback.

We are developing a FetchAI Weapon Smith agent that turns creative requests into validated, balanced weapon specifications. Our next step is completing its Agentverse and ASI:One integration so weapon creation can also be demonstrated directly inside an ASI:One conversation.

Built With

Share this project:

Updates

Submission history