I built the core gameplay systems, including touch camera controls, configurable building upgrades, object selection, UI menus, and online leaderboards. I also implemented the game’s state flow, refining interactions, resets, and performance for the museum touchscreen experience.
Explore the town through touch gestures, with mouse and keyboard support.
Pan, pinch, and rotate
I built the camera controls with Unity’s Input System. Input actions start and stop movement routines, supporting touch, mouse, and keyboard controls together.
Dragging moves across the town. The distance and angle between two touches control zoom and rotation.
Camera movement pauses during menu interaction and selection transitions, so scrolling an upgrade list does not move the town behind it.
I added on-screen zoom and rotation buttons alongside the gesture controls.
02 / Gameplay data & configuration
Upgrade System
Configure the town’s choices and their effects through reusable object data.
One system for different objects
I built a ScriptableObject-based upgrade system, using Unity data assets to define each interactive object’s options and starting state.
Each option stores its name, description, goodwill requirements, carbon impact, and goodwill effect. Those values populate the menu and update the town’s stats.
Purchase and sell actions can enable, disable, or replace related options, keeping mutually exclusive choices consistent.
I connected upgrades to scene objects so buying an option also changes the town’s visible buildings and features.
03 / Gameplay & interface integration
Selection & Menus
Connect a tap on the town to the right view and controls.
From a tap to a decision
I connected object selection to highlights, camera transitions, and contextual menus. Selecting a new object clears the previous selection before opening its controls.
Touch duration and pointer movement distinguish a tap from a drag. Selection is blocked over UI and during camera transitions.
The scrollable upgrade menu reads the selected object’s data to display available choices, their costs, and their effects.
I built the power-grid menu with five linked sliders that keep electricity production at 100%. Applying changes updates carbon and goodwill; closing without applying restores the previous mix.
04 / Exhibit lifecycle & online services
Game Flow & Leaderboards
Take each visitor from the idle town to a completed run and an online score.
I implemented a state machine to coordinate attract mode, game setup, play, success, and failure. Starting a new run resets the town’s stats and upgrades, while completing 100 days submits the result to the online leaderboards.
Individual scores, shared totals
I integrated Unity Authentication and Leaderboards to give each visitor a fresh anonymous session without an account sign-up.
Load the top four player scores and generated player names into the exhibit UI.
Submit the final goodwill score after a successful run, then update the shared carbon and goodwill totals.
Return to attract mode with a roaming camera and configured upgrades, ready for the next visitor.