Motion Town

Motion Town

Web Development

Mobile Game

E-Commerce Experience

2026

Motion Town

A Pokémon-Inspired Browser E-Commerce Experience

I designed and developed a Pokémon-inspired ecommerce experience that runs directly in browser. I designed a small town that the player can explore, unlock items by completing quests, and finding hidden items that act as discount codes to purchase real merchandise.

Users can purchase real-life items directly in the game, but only after finding all the hidden items. At the time of writing, this is currently a demo, with plans to expand the world and monetize through in-game advertising and digital storefronts.

Built with Phaser 3, TypeScript, and Vite. The overworld and every interior are authored as Tiled tilemaps and exported to JSON; sprite and tile art is done in Aseprite.

This case study is still being written. The game is in active development, and this page will be expanded with deeper process breakdowns as the world grows.

Shopping That Feels Like Playing

Most browser storefronts ask you to want something before you have felt anything. Motion Town runs that in reverse. You wander a town, talk to the people in it, fish off the dock, and the store is simply a building you walk into, where the shop owner is an NPC and the catalog is a counter you browse.

The nostalgia is doing real work here rather than sitting on top as a style. Anyone who grew up with a handheld RPG already knows how to walk into a shop, step up to a counter, and press a button to see what is for sale. That familiarity replaces a tutorial entirely. And because discount codes are hidden in the world as collectibles, a discount becomes something you earned by exploring rather than a banner asking for your email.

The Loop

Gameplay

You wake up in your bedroom, head down into town, and the day is yours. Talk to the shopkeeper, chat with mom, pick up whatever is lying around, and find your way to the dock. It is a small loop on purpose, because the point is to give someone a reason to wander rather than a checklist to clear.

Progression is gated the way a handheld RPG gates it. Fishing needs a rod, and the rod is sitting upstairs in your bedroom. Find it, equip it from the inventory, and suddenly the water tiles respond and the fisherman in the hut has something to ask you. Sleeping in your bed advances the in-game day through a clock that tracks both the day number and the day of the week, starting on Monday, which gives the world a rhythm and somewhere to hang day-gated events later.

Building the Town

Maps

The overworld is a 24 by 54 grid of 16 pixel tiles, drawn in Tiled and exported to JSON that the game reads at runtime. The map is not one flat image but a stack of layers ordered by depth: ground underneath, animated water above it, then buildings and trees carrying collision, then roofs sitting at a depth high enough that the player walks underneath awnings and canopies rather than over them.

That single depth decision is what stops the town reading as a flat sheet. Animated tiles are placed from the same map data on short four-frame loops, so water moves, flowers sway, and chimneys smoke without any of it being hand-placed in code. Every interior is its own Tiled map and its own scene, which keeps the shop, both floors of the house, and the fish hut independent of each other and of the overworld.

Motion Town map 1
Motion Town map 2

Controls and Feel

Input

The player is a 16 by 24 spritesheet with four-direction walk and idle animations, driven by either arrow keys or WASD so nobody has to think about it. Movement freezes whenever a modal opens, which sounds trivial and is the difference between a conversation and accidentally walking out of one.

Everything interactive runs through one reusable system. It watches for the player entering a zone, shows an [E] prompt with a label, and fires a callback on the keypress. Doors, NPCs, the shop counter, and fishing spots all use it, so adding something new to interact with is a handful of lines rather than another bespoke implementation. The inventory is sixteen slots with cursor-driven navigation and equip support, and the whole UI layer is HTML sitting over the game canvas, bridged by an event bus, so menus get real text rendering instead of being drawn into the canvas as pixels.

Secrets

Easter Eggs

Hidden items live on a dedicated object layer in the map, which means hiding something new is a map edit rather than a code change. Some are just collectibles. Some are discount codes that redeem against real merchandise, and that is the hinge the whole project turns on: the reward for exploring a game is a real thing that shows up at your door.

Fishing has its own weighted loot table with a catch chance well under certain, so landing something rare is an actual moment rather than a guaranteed drop. And there are already two buildings standing in town wired up as scenes with no door attached yet. They are in the code, waiting.

Motion Town detail 1
Motion Town detail 2

Still Building

Roadmap

This is a demo, and it is being actively worked on. The map is expanding, more interiors are being built, the catalog is filling out, and the day clock is there to support events that only happen on certain days.

This page will grow with it. Consider what is here a first pass on a project that is still very much in motion.

(More Projects)

Electric Revival