threesided games

DND Suite · Fight through the campaign

DND War

The shared deck becomes a battlefield.

Put campaign cards onto switchable 2D and 3D battlefields with full standees and minis, movement, facing, combat effects, and cinematic dice. Rules read from the same grimoire used during prep.

  • Web app
  • Live now
  • Shared campaign

Its job in the party

The shared deck becomes a battlefield.

Put campaign cards onto switchable 2D and 3D battlefields with full standees and minis, movement, facing, combat effects, and cinematic dice. Rules read from the same grimoire used during prep. The family page supplies the shared context. This page earns its keep by showing the product itself, how it works, and where it fits into the session.

What it does

Features with a reason to exist.

The production copy can expand each item with a real workflow, screenshot, or proof point. The product page keeps that shared family visible while giving this tool room to explain its own job.

  1. 01

    2D and 3D virtual tabletop

    Switchable 2D and 3D virtual tabletops

  2. 02

    Full standees and 3D minis

    Full 2D standees and 3D minis for combatants

  3. 03

    Routed movement and flanking

    Tokens that glide instead of teleport

  4. 04

    Combat automation and FX

    Facing, flanking cues, and opportunity attacks on routed walks

Build anatomy

The stack behind this instrument.

Current repository technology is shown here instead of the older Netlify-era stack. The shared packages explain why the products behave like one family.

  • 01Next.js 16
  • 02React 19
  • 03PixiJS
  • 04Three.js
  • 05Supabase
  • 06Cloudflare

Shared across the suite

One campaign spine

  • Supabase auth and campaigns
  • Shared Grimoire card UI
  • Dice, Oracle, billing, and chrome packages
  • Next.js 16 and OpenNext on Cloudflare

Available on the web

Open DND War.
Keep the campaign attached.

Launch DND War ↗