A PLAYABLE BIRTHDAY CARD, BUILT WITH PHASER

Birthday Shrine

A shrine-garden browser game built as a birthday gift: walk the courtyard, talk to friend NPCs, shoot a few arrows, and pull a charm from the shrine.

  • Phaser 3
  • JavaScript
  • Vite
  • GitHub Pages
Birthday Shrine gameplay: the shrine-garden overworld with friend NPCs around the torii gate

WHY I BUILT IT

I built Birthday Shrine as a playable birthday card instead of a static message. The goal was to turn birthday wishes, friend messages, voice clips, and inside jokes into a tiny explorable world, where each interaction felt like opening part of the gift.

THE OVERVIEW

Players walk around a shrine-garden overworld, talk to friend NPCs, hear their voice messages, complete an archery challenge, and pull from the gacha shrine. Once the main activities are done, an ending portal opens.

THE GARDEN PATH

  1. Garden Gate
  2. Sakura Court
  3. Archery Range
  4. Charm Shrine
  5. Ending Portal

move with WASD / arrow keys; each stop along the path is its own Phaser scene

FRIENDS UNDER THE SAKURA

Each friend appears as an NPC with a custom avatar, dialogue box, voice message, and typewriter subtitles in English and Japanese.

use WASD or arrow keys to move

Levenski NPC avatar
Levenski

it's your day. I hope you know a bright future is coming.

ไปŠๆ—ฅใฏใŠๅ‰ใฎๆ—ฅใ ใ—ใ€ใใฃใจๆ˜Žใ‚‹ใ„ๆœชๆฅใŒๅพ…ใฃใฆใ‚‹ใ‚ˆใ€‚

โ–ถ play voice messageEN / JP subtitleschoice A / choice B

GAME MOMENTS

Archery Range

A timed aim-and-shoot minigame: hit targets among the garden lanterns before the clock runs out.

Charm Shrine

A gacha-style pull sequence for a keepsake charm, with 4โ˜… and 5โ˜… prize reveals.

Ending Portal

Once every activity is complete, a portal opens with a short closing sequence.

QUEST PROGRESSION

  1. meet friends
  2. archery
  3. charm pull
  4. enter the portal

UNDER THE HOOD

Built with Phaser 3 and JavaScript ES Modules, bundled with Vite, and deployed as a static browser game through GitHub Pages.

Scene Structure

Separate Phaser scenes handle the overworld, dialogue moments, archery minigame, gacha shrine, and ending flow.

Interaction System

Player movement, NPC triggers, special map zones, choices, and quest progress connect through shared game state.

Dialogue System

Custom dialogue boxes, avatars, voice messages, typewriter subtitles, and bilingual English/Japanese text.

Minigames & Rewards

The archery range and charm shrine add small game loops, progression checks, pull animations, and prize reveals.

Static Web Deployment

No servers, no backend: the whole game ships as static files through GitHub Pages, so the birthday link just works in a browser.

SCREENS

Shrine garden overworld with friend NPCs gathered around a torii gate and sakura trees
overworld garden
Friend NPC dialogue box with bilingual English and Japanese subtitles under the sakura garden
NPC dialogue ยท EN/JP subtitles
Timed archery range minigame with a score counter and target
archery minigame
Gacha charm pull sequence showing a 4-star reveal streaking across the sky
charm pull reveal

WHAT I LEARNED

This project taught me how much polish matters in small interactive experiences. Even though it was a personal birthday gift, it involved real game systems: scene structure, player input, dialogue state, audio timing, minigame logic, progression tracking, and web deployment.

  • Phaser scenes helped separate the overworld, minigames, dialogue, and ending flow.
  • Personalized audio and subtitles made the dialogue system more complex than a normal text box.
  • Small games need clear feedback, tiny animations, and satisfying transitions.
  • Personal projects can still show real engineering when the interactions are custom and complete.

Enter the shrine one more time.

Jenny Zhao ยท Birthday Shrine ยท Phaser 3