Now open for signups

Instant phone controllers
for indie games

Let your players turn their phone into a game controller in under 2 seconds. Don't spend time building and maintaining a controller for your game and the networking infrastructure to keep it running — spend that time on what you care about, your game!

<20ms latency Up to 32 players Scan to play No app install

Built on the gamepad your players already know

One full-featured game controller — themeable per game, reactive to what's happening on screen, with optional native-app polish. Players scan a QR from inside your game and connect instantly — no app download required.

Familiar gamepad buttons and joystick

D-pad, thumb-stick, A/B/X/Y face buttons, L/R triggers, and a pause button — the layout players already know. Inputs stream to your game in under 20ms on local WiFi.

Inputs

D-pad / joystickA / B / X / YL / R triggersPause

Customizable per game

Theme the controller to match your game — button palette, accent color, labels, which controls are visible. Configured once in the dashboard, pushed to every player — no rebuild, no code change.

Configurable

Button visibilityColors & labelsJoystick vs D-padAccent theme

Put your HUD on the controller

Health, stamina, ammo, score, mini-map — any HUD element can render on the player's phone instead of cluttering the main screen. In local multiplayer, each player sees their own stats privately; the TV stays clean.

Render on phone

Health / staminaScore / comboAmmo / inventoryPer-player only

Dialogue choices, polls, and text prompts

Trigger a question from your game and the phone pops a full-screen overlay — single choice, multi-select, or free text. Answers stream back as they come in; your code awaits the result and moves on.

Prompt types

Single choiceMulti-selectFree textPer-player or all

Reactive to game state

Your game broadcasts state, the controller reflects it. The pause button flips live when you pause, the UI tints with each player's team color, a 'your turn' indicator lights up in turn-based rounds, and the whole controller dims when a player is eliminated.

Reactive to

Pause / resumePer-player colorYour-turn indicatorEliminated / spectating

Persistent user profiles

Players set their display name and avatar once on their phone — it rides into every game built on dropcontroller. No 'what should I call you?' on every round, and the identity survives reconnects, WiFi roams, and return visits.

Profile carries

Display nameAvatarAcross sessionsAcross games

Extendable modules

Beyond the gamepad, compose purpose-built modules into the controller: a private inventory, a hidden card hand, a mini-map, a drawing canvas, or tilt/motion input. Each one is a drop-in component that stacks alongside the rest — and you can ship your own.

Module library

InventoryCard handMini-mapDrawing canvasTilt / motion

Bring the controller to life with the (optional) iOS controller app

Players who install the free dropcontroller iOS app get haptic rumbles that actually feel like a real gamepad — your game's events drive them directly, so hits land with a thump, engines purr, and close calls buzz under the player's thumbs. Same API, same events — no browser chrome, faster resume, and your code doesn't change.

App adds

Haptic rumbleNo browser chromeFast resumeFree on App Store

Familiar gamepad buttons and joystick

D-pad, thumb-stick, A/B/X/Y face buttons, L/R triggers, and a pause button — the layout players already know. Inputs stream to your game in under 20ms on local WiFi.

Inputs

D-pad / joystickA / B / X / YL / R triggersPause

Customizable per game

Theme the controller to match your game — button palette, accent color, labels, which controls are visible. Configured once in the dashboard, pushed to every player — no rebuild, no code change.

Configurable

Button visibilityColors & labelsJoystick vs D-padAccent theme

Put your HUD on the controller

Health, stamina, ammo, score, mini-map — any HUD element can render on the player's phone instead of cluttering the main screen. In local multiplayer, each player sees their own stats privately; the TV stays clean.

Render on phone

Health / staminaScore / comboAmmo / inventoryPer-player only

Dialogue choices, polls, and text prompts

Trigger a question from your game and the phone pops a full-screen overlay — single choice, multi-select, or free text. Answers stream back as they come in; your code awaits the result and moves on.

Prompt types

Single choiceMulti-selectFree textPer-player or all

Reactive to game state

Your game broadcasts state, the controller reflects it. The pause button flips live when you pause, the UI tints with each player's team color, a 'your turn' indicator lights up in turn-based rounds, and the whole controller dims when a player is eliminated.

Reactive to

Pause / resumePer-player colorYour-turn indicatorEliminated / spectating

Persistent user profiles

Players set their display name and avatar once on their phone — it rides into every game built on dropcontroller. No 'what should I call you?' on every round, and the identity survives reconnects, WiFi roams, and return visits.

Profile carries

Display nameAvatarAcross sessionsAcross games

Extendable modules

Beyond the gamepad, compose purpose-built modules into the controller: a private inventory, a hidden card hand, a mini-map, a drawing canvas, or tilt/motion input. Each one is a drop-in component that stacks alongside the rest — and you can ship your own.

Module library

InventoryCard handMini-mapDrawing canvasTilt / motion

Bring the controller to life with the (optional) iOS controller app

Players who install the free dropcontroller iOS app get haptic rumbles that actually feel like a real gamepad — your game's events drive them directly, so hits land with a thump, engines purr, and close calls buzz under the player's thumbs. Same API, same events — no browser chrome, faster resume, and your code doesn't change.

App adds

Haptic rumbleNo browser chromeFast resumeFree on App Store

Try it right now

Tap in for a live game controller — no signup, no install.

Try the game controller demo →

Drop in a controller. Ship.

Host a room, pass "gamepad", handle inputs. That's the whole SDK surface.

Your Unity game — that's literally it
using DropController;

var room = await DropController.Host(
    new HostOptions(appId, apiKey)
        .WithControllerTemplate("gamepad")
);

room.OnPlayerJoined += (e) => {
    Debug.Log($"{e.Player.Name} joined");
};

room.OnControllerInput += (e) => {
    // e.Input is a gamepad event: button, stick, trigger, dpad, or pause.
    HandleGamepadInput(e.Player, e.Input);
};

Unity (Asset Store distribution) and JavaScript today. Godot, Bevy, LÖVE, and Phaser SDKs in the monorepo — landing soon.

Ship a game, not a platform

The real-time stack is handled. You keep your revenue, your brand, and your engine of choice.

Broaden your audience with players that skipped the console

  • Phone is the controller — no console, no gaming PC
  • Casual players become customers — they'll pay for a great game, just without the hardware
  • Solo or party — same zero-install join flow

Networking handled

  • <20ms latency — direct WebRTC on local WiFi
  • Transparent relay fallback on restrictive networks
  • Zero-loss reconnection across screen locks and WiFi roams

SDK, not a walled garden

  • Keep 100% of your revenue — no platform cut
  • Ship anywhere — Steam, consoles, your own site
  • Your brand on top — dropcontroller is invisible infrastructure

Your stack, any browser

  • Unity · Unreal · Native · JS — plus raw WebSocket
  • Any mobile browser — no app install, QR to join
  • Offline / LAN capable once players connect

Want the deeper dive — ordered delivery, binary wire protocol, edge signaling? Read the architecture →

On the roadmap — v2

Asymmetric games, first-class.

Games where every phone shows different information — secret roles, hidden hands, GM-and-players — are miserable to build from scratch. Dropcontroller ships the primitives so you can ship the twist.

Secret information, typed

Whisper to one player, broadcast to a role, reveal to everyone on a game event. A typed API instead of a hand-rolled state machine and a bug-hunt every phase change.

room.whisper(alice, { role: "werewolf" });
room.reveal("roles", { on: "phase.day" });
room.broadcast({ to: "gm", note: "..." });

Role-based controller layouts

Declare roles once — captain, engineer, gunner — and each phone renders the right controller. No per-role codepath, no shipping four UIs in one.

Phone as a physical prop

A dice roller with shake-to-roll. A hand-of-cards with tilt-to-peek. A sealed envelope that only unlocks on a game event. Drop-in modules that turn the phone from an input device into an actual game piece.

Built for the genres no SDK covers

Social deduction (Spyfall, Werewolf). Asymmetric co-op (Keep Talking and Nobody Explodes). GM'd tabletop (Blood on the Clocktower, Sheriff of Nottingham). Pick the genre; the primitives are the same — and they're the primitives nobody else ships.

On the roadmap — v2

Accessibility, baked in — not bolted on.

Because we render the controller, not your game, we can make every dropcontroller game accessible at the substrate. Screen readers, motor-access layouts, colorblind-safe palettes, reduced-input modes — shipped with the SDK, inherited by every title.

Screen-reader compatible out of the box

Every button, prompt, poll, and HUD element announces itself correctly on VoiceOver and TalkBack. You write one game; blind and low-vision players can play it without you learning ARIA.

Motor-accessibility layouts

One-handed mode, dwell-to-click, large-target mode, and reduced-input mode (fewer simultaneous presses required). Each ships as a player-side toggle — your input handler doesn't change.

Colorblind-safe palettes by default

Controllers inherit WCAG-safe palettes with automatic variants for deuteranopia, protanopia, and tritanopia. No more "the red button and the green button look the same."

"Simplify controls" mode

A player toggle that collapses your full gamepad to a minimal set of single-tap inputs — perfect for motor disabilities, cognitive differences, or first-time players. Your code writes one input handler; dropcontroller maps the simplification. Accessibility is free.

Also a market unlock: EU Accessibility Act compliance, ADA, education, and enterprise procurement all require what most indie studios can't afford to build themselves.

On the roadmap — v2

Built for the Twitch generation.

Party games live and die on Twitch and YouTube. Dropcontroller treats streaming as first-class — the audience becomes players, clips ship themselves, and your overlays drop into OBS with no glue code.

Audience mode, drop-in

Viewers scan a QR in chat and join as audience: vote on events, throw in-game items, answer prompts. Jackbox's killer feature — now a one-line primitive you don't build per-game.

room.openAudience({ capacity: 10_000 });

room.onAudienceVote((e) => {
  // e.choice, e.count, e.totals
});

OBS overlays, out of the box

Controller inputs, poll results, leaderboards, player avatars — all available as transparent OBS browser sources. Paste the URL; ship production value. No After Effects, no custom overlay engineer.

Auto-clip from game code

Tag a moment in your game loop; get back a shareable 10-second MP4 or GIF. Every clip is a distribution event — for the game and for the player who made the play.

room.clip({
  label: "finisher",
  duration: 10,
});

Viewer → player funnel

A viewer taps a link in chat, scans a QR, becomes the next player in the stream. Every stream is a top-of-funnel acquisition event — for your game and for every other dropcontroller game they'll ever scan into.

On the roadmap — v2

Live-ops, without the live-ops team.

You didn't start a studio to write telemetry pipelines. Because dropcontroller sits between every phone and every game, we instrument the controller surface for you — heatmaps, session replay, A/B tests, per-player latency. Shipping data as a service.

Input heatmaps

A literal tap-density map over your controller layout. See that the jump button is too small, that B is getting mis-tapped for A, that nobody's finding the radial menu in under three seconds.

Session replay for bug reports

A player files a bug. You get the last 30 seconds of controller inputs, game-state events, and per-hop latency for that exact session. Sentry for gamepads — no "can you reproduce it?" email thread.

A/B test controller layouts

Ship two controller variants; keep the one that retains. No client code changes, no analytics SDK to wire, no stats harness to build. The dashboard picks a winner when the signal stabilizes.

dashboard.experiment({
  metric: "session_length",
  variants: ["layout_a", "layout_b"],
});

Per-player latency & reconnect telemetry

Why did Maya rage-quit? Her WiFi dropped at 13:42 — not your netcode. Per-player timelines with pre-diagnosed causes (NAT hairpin, relay fallback, carrier band switch) so you can tell a user problem from a you problem.

Live config push — hotfix without a client rebuild

Change a button label, fix a typo on a prompt, tweak a poll's timer, A/B a new HUD layout — all without shipping a new client, without asking players to update, without touching app-store review. Edit in the dashboard, live on every phone in seconds.

Included with Pro

Connect with your players and see what they really want

Every phone already running your game is a direct line to the player holding it. The built-in help desk turns that line two-way — gather feedback, run polls on what to build next, and collect bug reports with device context attached. Nothing to integrate, no third-party service to pay.

Open feedback channel

One tap from inside the controller opens a feedback sheet — free text, per-player, threaded back to your dashboard. See what players love and what frustrates them without waiting on a Steam review.

Run polls in-app

Push a poll to every player who's touched your game — "which boss should we rework?", "vote on the next character class", "is the new map better?" Results stream in live while players are still online.

Bug reports with context

When a player taps "report a bug," their submission travels with device info, your game's version, recent console logs, and an optional screenshot. Triage faster than email ever will.

Pricing that stays out of your way

The SDK is free. Local network sessions always cost $0. You only pay when traffic routes through our cloud relay or you outgrow your tier's data cap.

Hobbyist

$0 Free forever

Personal projects, prototypes, learning

  • Unlimited local-network sessions
  • Up to 32 devices, under 20ms latency
  • Discovery, session management, reconnection
  • End-to-end encryption
  • Full no-code controller designer
Start free
Most popular

Pro

$12 per month

Indie games and small commercial projects

  • Everything in Hobbyist
  • 3,500 cloud relay device-minutes included
  • Analytics dashboard and session insights
  • Custom branding / white-label controllers
  • Player help desk — feedback, polls, bug reports
  • Priority support
Sign up

Usage overages

When you exceed your tier's caps
Additional relay device-minutes
$0.002

per device-minute

Relay data transfer
$0.10

per GB

Contact us for volume pricing if you're consistently exceeding 50,000 device-minutes per month.

Everything you need so you can just focus on your game - we can't wait to see what you make

Don't spend time building and maintaining a controller for your game and the networking infrastructure to keep it running. Put that time into the gameplay that makes people laugh, compete, and come together around a screen.