Ashfaaq Farzaan

Futsal Five ⚽

⚽ Project Overview

Futsal Five is a fast five-a-side futsal game that runs entirely in the browser, with no download or sign-up. It pairs broadcast-style 3D graphics with arcade gameplay: pressing that keeps play moving, working tackles, a keeper who reads the shot, and the futsal rules that shape a real match.

Futsal Five in play, seen from the broadcast camera


🚀 Key Features

  • 🎮 Ways to Play: Quick match against the CPU at three levels, two players on one keyboard or two controllers, and a watch mode.
  • 🎯 Practice Mode: Six skill drills (target shooting, pass and move, cone slalom, spot kicks, 1v1 defending, free training) with star targets on three levels and personal bests.
  • 🏃 Procedural Animation: A run cycle driven by inverse kinematics: planted feet stay where they land, the heel comes up behind before the knee drives through, and sprinting has a moment in the air.
  • 🎥 Camera-True Controls: The stick is read as a direction on screen and mapped through the camera, so pushing at a team-mate on screen passes to that player from any of the four camera views. A ring shows who a pass will reach and how likely it is to be cut out.
  • 📴 Plays Offline: An installable web app that keeps working once loaded, with graphics quality that steps down automatically on slower machines.

🛠️ Technical Highlights

  • Engine: A deterministic match simulation stepped at 120 Hz, kept free of the DOM so the same code can run on a match server, with a golden-output test that fails if gameplay changes unintentionally.
  • Graphics: Three.js with skinned players, an arena with a reflective floor, an animated crowd and goal replays; players are drawn between simulation steps so movement stays smooth on 144 Hz displays.
  • Online Groundwork: A binary wire protocol, a WebSocket match server with rooms and reconnection, and client netcode, ready for online 1v1.
  • Delivery: Built with Vite, tested in CI on every push, and deployed to Cloudflare Workers automatically from main.
  • Development: Built with Claude Code and Claude Opus 5.5.

🔗 Play It