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!
Try it right now
One phone, both sticks
Twin-stick survival — left stick moves, right stick aims and fires. Play with your keyboard, or scan the QR to play with your phone.
Spinning up…
For the full demo, open this page on a laptop and scan the QR.
Built on the gamepad your players already know
One full-featured controller — themeable per game, reactive to what's happening on screen. Players scan a QR and connect instantly.
Familiar gamepad
D-pad, thumb-stick, A/B/X/Y, L/R triggers, pause. The layout players already know — direct device-to-device on local WiFi when possible.
Themed per game
Recolor, relabel, or hide controls in the dashboard. Pushed live to every player — no rebuild.
Reactive to state
Your game broadcasts state, the controller reflects it — pause flips, team color tints, eliminated dims.
Plus HUD-on-controller, prompts & polls, persistent profiles, drop-in modules, and an iOS companion app. See every capability →
Drop in a controller. Ship.
Host a room, pass "gamepad", handle inputs. That's the whole SDK surface.
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
- Local-first connection — direct device-to-device for the best possible latency, cloud relay when the network requires it
- 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
Plays with hardware gamepads too
- Plug-in or scan — same lobby, same Player object
- One input event for phones and pads alike
- Native gamepad APIs bridged — no second pipeline
Want the deeper dive — ordered delivery, binary wire protocol, edge signaling? Read the architecture →
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
Personal projects, prototypes, learning
- Unlimited local-network sessions
- Up to 32 devices, low-latency local play
- Discovery, session management, reconnection
- End-to-end encryption
- Full no-code controller designer
Pro
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
Overages
When you exceed your tier's caps — no surprise tiers, no commitment.
- 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.
v2 platform — asymmetric games, accessibility, audience mode, live-ops. See what's next →