Skip to content
Projects
Hexillion

Hexillion

Coming Soon

A hexagonal puzzle game about connecting matching chips, merging them, and reaching 1,000,000

TypeScriptReactViteCapacitorWeb AudioPWAAndroid

Overview

Hexillion is a mobile-first puzzle game played on a hexagonal board. Press a chip and drag through adjacent chips of the same value; once the chain reaches the minimum length, releasing merges it into the next number up.

Five 1s make a 5, two 5s make a 10, and so on up the ladder — the goal is to connect two 500,000 chips into a single 1,000,000. Queue the next chain while a merge animation is still playing and a combo multiplier pushes the score much higher.

Features

  • 11 × 9 flat-top hex board with drag-to-connect merging
  • Merge ladder: 1×5→5, 5×2→10, 10×5→50 … 500,000×2→1,000,000
  • Combo multipliers for chains queued during a transition
  • Pentatonic scale tied to chain length and chords matched to the merged tile (procedural Web Audio)
  • One-move undo and on-board hints when the position gets tight
  • Auto-saved progress, best score, and settings; offline play with PWA install
  • Google Play Games leaderboard and an ad-free supporter in-app purchase
  • Touch, mouse, and stylus handled through one Pointer Event path

Tech Stack

Rendering

DOM/CSS transforms with SVG connection lines - the hex board and its transitions run without a game engine

Language

TypeScript strict mode with React - board transitions managed by a pure reducer

Native

Capacitor 8 Android packaging with Google Play Billing and Play Games Services v2

Audio

Web Audio API - every sound effect and melody synthesized in code, with volume control and preview

Architecture

Each move runs through an explicit transition timeline: merge → per-column gravity → spawn from the top → valid-move check. The logical board is computed ahead of every step and the screen replays that result as animation, so input arriving mid-transition never desyncs the state.

Board, selection, merging, gravity, spawn, and game-over detection are separate pure modules covered by Vitest, and saves use a versioned localStorage schema that stays compatible with data written by earlier releases.