← Back to portfolio

My projects / Games

Pocket Planet

Play now

Desktop & mobile · Play in your browser

How to play ↓

Six little islands, five explorers and a pocketful of treasure. Pick a level, collect gems, jump past hazards and reach the flag — a 2D platformer playable directly in your browser.

Role
Level design · Gameplay programming · Interface & audio
Timeline
October 2026
Pocket Planet: choose from six levels and five character colors.
Pocket Planet: choose from six levels and five character colors.
open maps
06
explorers
05
hearts per run
03

THE EXPERIENCE

Six little worlds. One big adventure.

Choose an explorer, discover an island and reach the yellow flag. Collect every coin and all 3 gems to finish; healing hearts are optional. The factory needs its switch, and Purple Moon needs its key.

Six islands to explore

A garden, burrows, a fiery desert, a snowy summit, a stone factory and a purple moon. Every map is available from the start.

Little jumps, different challenges

Collect every coin and all three gems, stomp slimes and avoid spiked creatures. Ladders, springs, moving platforms, conveyors and locked gates keep each island different.

Made for another little adventure

Five explorer colours, three hearts, two checkpoints per map, original synthesized music and playful Kenney sounds. Best scores stay in your browser.

How to play

On a computer

← → / A D
Move
Space / W / ↑
Jump · hold to jump higher
↑ / ↓
Climb · down / duck
R / Esc
Return to checkpoint · pause

On a phone

  1. Turn sideways. Hold Left / Right and tap Jump at the same time.
  2. Use the up / down controls to climb ladders or drop through platforms.
  3. Pause to restart, choose a map or adjust music and sound effects.

Hazards cost a heart; falling returns you to your checkpoint. Lose all hearts and restart the map. Reset does not heal or respawn collectibles. The game requires JavaScript and Canvas 2D; sound starts after your interaction.

Behind the build

Languages and technologies used

  • TypeScript
  • Next.js
  • Canvas 2D API
  • Web Audio API

Product story

Pocket Planet

01 — 04

The problem

How do you turn a sprite collection into a small world worth exploring? Pocket Planet began with Kenney’s New Platformer Pack: friendly astronauts, terrain, enemies and collectibles sharing one playful visual language. These are 2D assets, not 3D models. The goal was six immediately selectable levels, each introducing a different mechanic. Portfolio visitors can play with a keyboard or touchscreen without creating an account.

My contribution

I laid out the main route, gaps, elevated reward branches, enemies and two checkpoints for each level. Players must collect every coin and all three gems before reaching the exit; healing hearts are optional. Locked gates still require their switch or key. Later levels introduce slippery ice, moving and falling platforms, springs, conveyors and gates opened by a switch or key. I implemented simulation, collision, multi-touch input, Vietnamese/English interfaces, browser-local records and the complete level-to-results flow. Original sprites and sound effects are by Kenney under CC0. The background melodies and victory fanfare are synthesized with Web Audio; I do not claim authorship of the sprite artwork.

The solution

A fixed 60 Hz simulation runs separately from the React interface. Canvas 2D draws sprite atlases, parallax backgrounds and visible world objects. Tapping or holding jump produces different heights; coyote time allows a jump just after leaving a ledge, while jump buffering remembers a jump pressed shortly before landing. Input tracks each key and touch contact independently. Hiding the tab, pausing or rotating a phone to portrait stops gameplay and audio until the player resumes. Music and effects have separate controls. Blocked storage or unavailable audio does not prevent play, and failed visual assets offer a retry screen. The game lives in the existing portfolio without a new backend or accounts. Its case study loads text and screenshots; simulation, atlases and audio belong to a dedicated play route.

Results & lessons

The local build includes six unlocked levels, five character colors, three hearts, checkpoints, coins and three gems per level. Per-level records preserve the best time and highest coin/gem counts. Players can pause, restart or continue to the next level. Automated checks exercise real movement to collect every coin and gem and finish all six levels, jumping and collision rules, health, checkpoints, collectibles, locked exits and records. Browser tests cover controls, level selection, pause, rotation and asset failures. This is a single-player game without online multiplayer or leaderboards. Emulated browser checks do not replace testing on individual physical phones.

Next projectDong Ngo — Odoo ERP System