Inspiration

After launching the first version of Solitaire Park, players loved the chill vibe but told me it was sometimes confusing: “Did the game start?” “Why do I have to drag every single card?” Their feedback inspired version 2.0—a smarter, faster, more welcoming experience.

What it does

Solitaire Park 2.0 is a multiplayer Klondike Solitaire world in Horizon Worlds. Players enter a bright outdoor park, press a large Start button, and the deck deals itself. From there they can:

  • Tap a card to have it auto‑move to the best valid pile (no more tedious dragging).
  • Enable Auto‑Complete once only solvable moves remain, finishing the game quickly.
  • Hear subtle sound effects for dealing, placing, and winning to reinforce actions.

How we built it

I refactored the original TypeScript Custom UI codebase:

  • Rewrote card movement using a rules engine that evaluates legal destinations and animates to the highest‑priority pile on tap.
  • Added a global game state controller tied to the new Start button; it resets bindings and deals a fresh layout.
  • Implemented an Auto‑Complete routine that scans foundations/columns via DynamicList structures and performs sequential moves until finished.
  • Removed unused scripts and textures to lower memory use and improve frame rate.
  • Integrated lightweight audio clips triggered within the TypeScript logic for immediate feedback.

Challenges we ran into

  1. Determining Best Auto Destination: Some cards had multiple legal moves. I solved this by ranking targets (foundation > tableau build) before executing.
  2. Preventing Mid‑Animation Inputs: Players could spam taps; I added a movement lock flag to avoid race conditions.
  3. Efficient Auto‑Complete: Naive loops caused hitching. I batched moves with short delays to keep the UI responsive.

Accomplishments that we're proud of

  • Intuitive one‑tap interaction replacing manual drag.
  • Clear onboarding with the visible Start button.
  • Faster game finishes through Auto‑Complete.
  • Lower script complexity and better performance after pruning unused code.
  • Improved immersion with concise sound effects.

What we learned

Building 2.0 taught me deeper concepts around DynamicList mutation, event ordering, and designing stateful UI flows in Horizon Worlds TypeScript. Most importantly, I learned how to turn player feedback into concrete UX and technical changes.

What's next for Solitaire Park 2.0

Planned updates include timed “Speed Mode,” cosmetic card/table themes, a simple stats leaderboard, and accessibility options (larger cards / color‑assist mode) to keep broadening the audience.

Share this project:

Updates