A little more hands-on.

Your game.
Our gamepad.

A player for compatible web games, with native touch controls and offline saves.

Built for iOS & Android In development

Charlie’s native controller with two sticks, A, B, X, Y and shoulder buttonsMade for your thumbs.

From browser to gamepad

Your game, in good hands.

HTML, ZIP or URL. A small input API. Ready to connect.

01

Connect the controls.

Read sticks and buttons through window.charlie. Your game decides what they do.

02

Pack your game.

Export an HTML file or ZIP with your code and assets. Or host the web export at an HTTPS URL.

03

Import. Press play.

Players add your file or URL in Charlie, then open the saved game from their library.

Small API. Familiar game loop.

You make the game.
Charlie handles the buttons.

Keep your renderer and your game logic. Touch controls and compatible external gamepads use the same input API on iOS and Android.

See the integration
game.jsCharlie API v1
// Wait for the native controller.
await charlie.ready;

// Read input in your game loop.
const { axes, buttons } = charlie.input;

player.x += axes[0] * speed * dt;
player.y += axes[1] * speed * dt;
Your logic. Native input.

Give it a go

Try the controls.

Optional demos for players and testers to see how Charlie works.

Example games

Charlie is in development. No games are included in the app. Example games are separate, optional downloads.