Upward
A city built one floor at a time. Homes, shops, offices and cinemas share a cutaway tower, with people to look after, lifts to untangle, and a five-chapter story or independent free play.
Type: Vertical-City Management Game / Single Page Application (SPA)
Domain: Urban Simulation / Construction & Management
Purpose & Origins
Upward began as a modern tribute to SimTower: a mixed-use building seen in cutaway, where watching daily life is part of playing. It grew into a vertical-city builder concerned with the people and businesses inside, not just the height of the roof.
The player is both developer and operator. Build homes and workplaces, decide how people reach them, and keep the services, utilities and accounts working. A small, well-kept tower is a valid result. Extra floors, additional wings and more ambitious businesses are choices, rather than requirements for keeping the game interesting.
Story Mode introduces the simulation through five chapters about building, tenant care, growth, commitments and the tower’s future. Its purpose is to give the systems context, not turn each chapter into a harder financial obstacle course. Free Mode offers the same simulation without required story progression, and a campaign tower remains playable after its ending.
Architecture & Technology
The application is written in TypeScript and compiled to JavaScript, with an HTML/CSS interface and a custom Canvas 2D renderer. A deterministic simulation runs in a Web Worker, separately from rendering and interface updates. Construction, transport, business activity, finances and narrative outcomes operate on the same underlying tower state.
Room interiors are drawn locally from authored, repeatable compositions. The presentation uses architectural linework and a cutaway view rather than a dashboard of resource meters. On phones, selecting a room opens a compact sheet of relevant controls; desktop inspection sits alongside the building.
Sound is generated locally through the Web Audio API. Eight original musical arrangements cover the four seasons in daytime and evening/night, while room ambience follows the activity actually taking place. Selecting another room changes the sound without restarting the music. Music, ambience and alerts have independent controls, and audio starts only when the player enables it.
The release is packaged as one self-contained HTML file, with no application backend, account system or external runtime downloads. Local saves use IndexedDB, with JSON export and import for backups and transfer. Saves belong to the browser and origin where they were created. The author describes a separate complete package containing the source, assets, automated tests, documentation and reproducible build tools.
Scope & Uniqueness
Upward brings homes, offices, hotels, restaurants, shops, salons, fitness studios and cinemas into one connected building. Lifts, stairs, service crews, utility capacity and rent agreements affect how that building works. A four-season calendar changes its rhythm through weekends, city events and temporary traders, rather than making every day an identical accounting cycle.
The people using the tower are part of the simulation, not just decoration. A cinema reservation still needs someone to reach the screening. A salon has only so many chairs. A cleaner has to get to the room. Congestion can therefore affect a business, not just its animation. Sales belong to the tenant businesses; the landlord’s income and costs are accounted for separately.
Tenants retain their identities when they move, and the story remembers actual decisions, disclosures and outcomes. Replacing someone who left does not bring the same person back. Alongside the construction and financial choices, the game follows what happens to the people already there.
Pause, adjustable speed and calendar advance let players choose between watching the working day and moving to the next useful decision. The field guide explains the tower they are actually running, with routes to relevant controls rather than a compulsory sequence of purchases.
Screenshots





