Skip to content
Back to Work
Open Sourcefrontendgame-dev

Snake and Ladders - Classic Board Game

A fully-featured HTML5 Canvas arcade game recreating the classic Snakes & Ladders / Chutes & Ladders board game. Supports 2–6 player hot-seat multiplayer and VS CPU mode, with two themed board modes (Snakes and Chutes), animated characters, physics-style Bezier chute slides, persistent stats, full sound design, and responsive mobile-first scaling.

HTML5 CanvasVanilla JavaScriptCreateJS (EaselJS + TweenJS + SoundJS + PreloadJS)jQueryHowler.jsCSS3screenfull.js

Problem

Build a polished, browser-based multiplayer board game that runs without any server-side code or build tools, supports 2–6 players with both local and AI opponents, works seamlessly across desktop and mobile devices, and delivers an engaging arcade-like experience with animations, sound, and responsive scaling.

Approach

Designed a self-contained static HTML5 game using a Canvas-based scene graph powered by CreateJS for rendering and animations. Implemented all game logic (board layout, dice mechanics, player movement, snake/ladder collision) in a single modular JavaScript file. Used Howler.js for cross-browser audio, TweenJS for all motion (Bezier paths for chute slides, elastic bounces, sprite animations), and a custom responsive scaler to fit any viewport. Built two fully themed board variants (Snakes and Chutes) with distinct art assets, character sprites, and animation styles.

Key Engineering Decisions

1

Single-file game engine architecture

All ~6,600 lines of game logic live in one main.js file with ~25 classes, avoiding any bundler or build step. This keeps deployment trivial (static files only) and makes the game instantly portable to any hosting platform.

2

Dual board themes (Snakes vs Chutes)

Implemented two complete visual modes with different assets, color palettes, and animation styles — animated snake spritesheets with 'eating' animations for Snakes mode, and static chutes with Bezier-path sliding characters for Chutes mode. This adds replay value and visual variety without duplicating core logic.

3

Boustrophedon board movement

Players move in a snake-like path across rows (alternating left-to-right and right-to-left), matching the classic physical board layout. Characters flip horizontally each row to face the correct direction, preserving spatial intuition.

4

Arc-length parameterized Bezier paths for chute slides

Rather than simple teleportation, chute slides follow authored quadratic Bezier curves with arc-length parameterization for uniform speed. This creates a smooth, physically satisfying sliding animation that feels like riding an actual slide.

5

Exact-landing win condition with bounce-back

When perfect_score is enabled, players must land exactly on square 100 — overshooting causes the pawn to bounce backward for the remaining steps. This adds strategic tension to late-game rolls and prevents anticlimactic wins.

6

Mobile-first responsive scaling

The canvas dynamically scales to fit any viewport using min(height/640, width/1360) with separate CSS and bitmap scaling strategies for mobile vs desktop browsers. Includes orientation-lock overlays, iOS fullscreen prompts, and touch-delay removal for a native-app feel.

7

Hot-seat multiplayer with random-roll CPU

Supports up to 6 local players in hot-seat mode with turn indicators, and a VS CPU mode where AI opponents use random dice rolls. This keeps the game accessible and social without requiring networking infrastructure.

Results

6

Max supported players

2

Themed board modes (Snakes & Chutes)

6,600+

Lines of handcrafted game logic

13

Sound effects and music tracks

Zero

Build dependencies or server requirements

100%

Mobile-responsive with iOS handling

Technologies

HTML5 CanvasVanilla JavaScriptCreateJS (EaselJS + TweenJS + SoundJS + PreloadJS)jQueryHowler.jsCSS3screenfull.js