SkiiFree ’26 — Classic Remake & Gameplay Systems
A solo remake of the 1991 classic SkiFree, rebuilt with modern, state-driven gameplay architecture while preserving the original’s fast, readable, and punishing design. I handled all systems programming, gameplay tuning, and pixel art creation.
Project Overview
SkiiFree ’26 is a systems-focused reinterpretation of the original SkiFree. Rather than modernizing the game into something unrecognizable, the goal was to understand why the original worked — then rebuild it using explicit state ownership, deterministic logic, and clean system boundaries.
Every mechanic — movement, scoring, obstacle behavior, enemies, and UI — is driven by shared game state rather than ad-hoc object logic. This keeps gameplay predictable, debuggable, and easy to tune.
- Solo Project
- Classic Game Remake
- Gameplay Engineering
- State-Driven Systems
- Custom Pixel Art
Design Goals
-
Faithful core mechanics
Preserve the feel, speed, and readability that defined the original SkiFree. -
Deterministic gameplay
Movement, collisions, scoring, and enemy behavior are predictable and intentionally designed — not emergent accidents. -
Modern architecture
Centralized state replaces legacy assumptions and scattered conditionals. -
End-to-end solo ownership
All programming, art creation, tuning, and iteration were handled independently.
Core Gameplay Architecture
The game is driven by a centralized GameManager that owns all simulation-critical state: world speed, player heading, jump state, scoring, enemy pressure, and overall game flow.
The skier does not “move through the world.” Instead, the world scrolls past the player, and all objects respond to the same authoritative movement data. This preserves classic SkiFree behavior while keeping the system extensible.
- Centralized state ownership
- World-relative movement
- Shared simulation timing
- Explicit game states (Menu / Playing)
Player Movement & Feel
Player direction is modeled using discrete heading steps rather than continuous rotation. Each directional input advances the skier through fixed angles (0°, 15°, 45°, 65°, 90°), matching the readability of the original game.
At shallow angles, the player carves smoothly while trading speed for control. At 90°, the skier becomes fully sideways, entering a unique movement mode.
When fully sideways, holding the same direction produces rhythmic “scoot” impulses rather than continuous sliding. This gives sideways movement intention and timing instead of uncontrolled drift.
Speed, Difficulty & Scoring
World speed ramps continuously over time, with smoothing applied to prevent sudden spikes. Player heading applies a dynamic speed penalty, encouraging controlled carving rather than constant straight-line acceleration.
Scoring is split into three systems:
- Speed Score — rewards sustained high velocity
- Style Score — earned through spins, slalom gates, and clean play
- Time Score — passive reward for survival
This creates a natural risk/reward loop: pushing speed increases danger, while style systems reward mastery rather than simple survival.
Jump, Spin & Style Play
Jumping transitions the player into a dedicated airborne state. While in the air, lateral input is reinterpreted as rotational input, allowing the skier to spin.
Spins accumulate angular rotation over time, awarding style points for full rotations. Landing quality is evaluated based on final orientation, rewarding clean landings and penalizing sloppy ones with temporary slowdowns.
Jumping is therefore not just avoidance — it is a deliberate risk vs reward system.
Enemies & Hazards
Obstacles are context-sensitive rather than generic hazards. Trees, rocks, stumps, moguls, and jump pads each interact differently depending on player state.
The Yeti functions as a pressure mechanic rather than a traditional enemy. Once spawned, it accelerates relentlessly and never despawns, forcing players to maintain forward momentum.
- Timed Yeti spawn
- Persistent pursuit behavior
- Clean kill-state resolution
NPCs & World Life
NPC skiers use lightweight decision logic rather than scripted paths. Each NPC periodically retargets lateral intent and applies micro-jitter driven by Perlin noise to simulate human imperfection.
This keeps the slope feeling alive without sacrificing fairness or readability.
Art Pipeline & Visual Design
All visual assets were hand-created using Aseprite. The visual focus was clarity over decoration — strong silhouettes, readable animation, and immediate feedback.
- Directional skier animations
- Spin sprite sequences
- Obstacles, NPCs, and enemies
- HUD and UI elements
Play SkiiFree ’26
SkiiFree ’26 is playable on itch.io. This build showcases the full gameplay loop, scoring systems, enemy behaviors, and pixel art described above.
What I Learned
-
Classic design still works
Clarity and restraint outlive technical trends. -
Game feel comes from tuning
Small parameter changes have outsized impact. -
Solo development exposes everything
Architecture, tools, and iteration speed matter when there’s no safety net.