Skip to main content
Palm Strike: Miami Fight, From Original Miami Artwork to a Playable Browser Arcade

What is Palm Strike: Miami Fight?

Palm Strike: Miami Fight is a free fighting game that runs in your browser. No download. No install. Open miamifight.com and you're on Calle Ocho at sunset, about to catch these hands.

It's pixel art, it's very Miami, and it's a prototype. More on that at the end.

We started on a Tuesday at 9:10 PM ET and had it playable around 1 AM. About 4 hours, start to playable, and $18.80 in fal.ai generations.

A quick word on "original." We mean original characters and an original Miami concept. We generated the art with fal.ai under our direction and then edited it through a lot of QA. Nobody hand-painted these sprites, and we won't pretend they did.

The fighters and the stage

We designed a roster of eight: Doña Chancleta, El Cafetero, Brisa, Kilo, Reina Salsa, Capitán Gator, Patina and Don Yate. Two are playable today.

  • Doña Chancleta, "The Original Enforcer." A Cuban grandmother with a flying flip-flop. If you grew up in Miami, you already know the move.
  • Kilo, "Wynwood Wildcard." A spray-can fighter straight out of Wynwood.

The stage is Little Havana at sunset on Calle Ocho. It has 3 parallax layers and 6 looping animations: the crowd, the domino players, a rooster, café steam, a neon sign and a palm tree. Stand still for a second and the block keeps moving around you.

Doña Chancleta and Kilo on the character select screen, over the Calle Ocho stage
Pick your fighter: Doña Chancleta or Kilo.

How it plays

It's a classic arcade fighter. First to two rounds wins. Health bars and a round timer.

  • Move, jump and crouch
  • Block by holding away
  • Light, heavy and special attacks
  • Projectiles
  • Meter supers

Play the CPU, or grab a friend and share one keyboard. P1 uses WASD plus J K L I. P2 uses the arrows plus 1 2 3 0. On a touch device, touch controls show up on screen.

Under the hood, the game runs a fixed 60 simulation steps per second with buffered inputs, and it has automated tests. That's the boring part that makes the fun part feel fair.

Doña Chancleta hits Kilo on Calle Ocho, with a hit spark, health bars and the round timer
A real match on the Little Havana stage.

The sound matters too. There are 8 Cuban and arcade music tracks, 32 SFX, 27 voice lines including an announcer, and crowd ambience. The help screen says it best: "Make yourself at home. Then throw a chancleta."

How we built it

We built this the way we build most things now: AI for speed, people for judgment.

  • fal.ai for assets. 208 generations: 137 image, 67 audio, 3 video and 1 3D. The whole fal.ai bill was $18.80.
  • Astra on ChatGPT for code. We coded with gpt-6-astra.
  • Phaser for the game. Phaser 3.90 on WebGL, written in TypeScript and bundled with Vite.
  • Three.js for the cabinet. More on that below.
  • Vercel for hosting. Plus Vercel Analytics. The game lives at miamifight.com and game.purplehorizons.io.

Six style tests, one look

We ran 6 style tests and picked 32-bit pixel art. The logo is a lightning banner and a palm tree.

Taste still matters

Here's the honest part. AI got us far, but it didn't get us all the way. We directed the work and ran human QA on the output. Here's some of what we caught:

  • A Doña lookalike in the background crowd. Two Doñas is one too many.
  • "ROUUND 1." One extra U, right where everyone would see it. Fixed.
  • An off-model Kilo walk sheet. Kilo didn't look like Kilo mid-stride.
  • A pistol silhouette on the cabinet kick plate. We took it out with the age rating in mind.

We also steered away from a drug-dealer character concept.

ROUND 1 card, spelled correctly, over the Calle Ocho stage as the fighters square off
ROUND 1, with the right number of Us.

We keep learning the same lesson. The tools make a lot of stuff. Somebody still has to decide what's good, what's off, and what should never ship.

Meet your cabinet

This is our favorite detail. Open the cabinet viewer and an interactive 3D arcade cabinet, built in Three.js, opens over the blurred game.

  • Drag to rotate it
  • Scroll or pinch to zoom
  • See a preview of the game on the cabinet screen

The match pauses while the cabinet is open, so you can check out the machine without losing a round.

The Meet your cabinet viewer: an interactive 3D Palm Strike arcade cabinet with Drag to rotate and Scroll or pinch to zoom hints
The 3D cabinet viewer, built in Three.js.

What's next

Palm Strike: Miami Fight is a prototype: two fighters, one stage.

Next up:

  • More characters from the roster
  • Full animation sets
  • Online multiplayer

Six fighters are waiting on the bench: El Cafetero, Brisa, Reina Salsa, Capitán Gator, Patina and Don Yate. Tell us who you want next.

Build with Purple Horizons

We like building this way: AI doing the heavy lifting, people making the calls. We love doing that with teams.

We run buildathons where teams build with AI. If your team wants in, start at purplehorizons.io/services/buildathon.

The full project write-up is on our work page.

Now go play at miamifight.com. Pick Doña. Throw the chancleta.

Follow along on X: @purplehorizons8 and @giannidalerta.

Gianni D'Alerta

Gianni D'Alerta

Co-founder of Purple Horizons and AI Innovation Fellow at FIU's Center for Leadership. Transforms complex tech into business breakthroughs.

Join The Dispatch

10 AI signals that matter for your business. Every week. No hype.