Open-source project
amilich/isometric-city avatar
amilich/isometric-city

An isometric city builder with no game engine, written with an AI editor

IsoCity: City building simulation game.

2,328 stars262 forksTypeScriptMIT

At a glance

What is it?
The interesting parts are the constraints rather than the features: canvas rendering with no engine library, a client-side state that saves and loads multiple cities through string compression, and a repository that includes agent instructions, a skills directory and a localisation configuration file. A city simulation running in a browser tab is a specific engineering choice with specific limits.
Who is it for?
Adopt isometric-city if you want to read or extend a browser city builder written without a game engine, since the rendering, depth sorting and traffic systems are all hand-written and that is the educational value. Do not adopt it expecting a game you can ship commercially, because the package is marked private, the version is a placeholder at the start of its life, and a client-side save file is not a save system.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 7 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 21, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • amilich/isometric-city2,328 ★ · +14
Star history
Repository2026-09-302026-10-21
amilich/isometric-city2.3k2.3k

14 Stars in the last 21 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

No game engine is the constraint that shapes everything

Getting it running takes a runtime, a package manager and three commands, with Node 18 or higher as the stated prerequisite:

bash
git clone https://github.com/amilich/isometric-city.git
cd isometric-city
bash
npm install
bash
npm run dev

After that the city builder is at the root of the local server and the park builder at a coaster path. The tech stack line is short and the parenthetical does the work: HTML5 Canvas, with no external game engine libraries and a pure native implementation. That is the decision that makes this repository worth reading, because the alternative is a game framework that gives you a scene graph, a camera, sprite batching and an input system, and you accept its abstraction in exchange. Here the readme names what you get instead: an isometric rendering engine, a named class, capable of complex depth sorting, layer management, and both image sprites and canvas sprites. Those three capabilities are the hard part of an isometric game and the reason engines exist. Isometric projection means a tile that is further away and to the right can be drawn after one that is nearer and to the left, and you cannot resolve that by sorting on a single axis. Depth sorting plus layer management plus two kinds of sprite is a real engine, written by hand, and the readme tells you the class name so you can find it. The rest of the feature list, traffic lights and zoning and pedestrians, is application logic on top of that. If you are learning isometric rendering, this is a working example. If you need a production engine, you want the framework.

The simulation is the part a city builder lives or dies on

Read the dynamic simulation section as a list of what has to be simulated rather than as a list of features. The traffic system covers autonomous vehicles and names five kinds: cars, trains, planes, buses and seaplanes. That is not one system, it is five, and a plane and a seaplane do not share a movement model with a bus. The readme then says vehicles move through the city and respect traffic lights, which is the part that makes it a simulation rather than a screensaver: agents have to find paths, share intersections, and stop when a light changes. The pedestrian system is described as pathfinding plus crowd simulation, which is a second pathfinding problem on a different scale, since a crowd is many agents avoiding each other rather than a handful avoiding a wall. Then the economy and resources, with three zoning types named and a growth logic, which is the layer that turns movement into a game: a residential tile next to a road grows, an industrial tile needs something, and the rules connect the simulation to the player's decisions. None of that is described in detail, which means the interesting algorithms are in the source. What the readme does tell you is the scope, and the scope is a full genre rather than a demo.

Save state, and a dependency list that does not match a local game

The state management line says save and load for multiple cities, and the dependency list explains how. There is a library for compressing strings into a short form, with its own type definitions in the development dependencies, which is the obvious tool for serialising a city map into something you can put in a URL or local storage. There is also a client for a hosted relational database, and a package for product analytics. Neither of those belongs in a game that keeps its state in your browser, so either the project has a server component the readme does not mention, or those are aspirational, or they are used for something small like sharing a city. A documentation file at the top of the repository is named for cloud, which suggests there is a deployment or backend story that the readme omits. There is also a build script that compresses images before building and a script to crop screenshots, and an image processing library in the development dependencies, which tells you the art pipeline is scripted. The practical advice is to look at the cloud file and the analytics client before assuming the game is purely local, because a city builder with a database dependency has an account system somewhere and that changes how you run it.

The repository has an editor, a localisation file, and a skills directory

The top-level listing contains several things that are not source code, and each one is a signal about how the project is worked on. There is a directory named for a specific AI editor, and the readme says the project was made with it. There is an agent instructions file, which is the convention for telling an assistant how to work in a repository. There is a skills directory, which in that ecosystem means task-scoped instruction sets. There is a localisation configuration file and a lock file for it, and a project configuration file for the same tool, which together suggest the user-facing strings are extracted and managed rather than scattered. There is a changelog file, an editor configuration, a linter configuration, a styling configuration, a Next configuration, a PostCSS configuration, a TypeScript configuration and a package lock. So this is a repository that has been set up carefully for collaborative and possibly automated work on the codebase. If you are contributing, that tooling is a gift. If you are evaluating, the honest observation is that a project built primarily with an AI editor and shipped at version zero point one is going to have uneven code, and the instructions files are evidence the author knows that and has tried to constrain it.

Two games, one repository, and a modern stack

The readme's opening table presents two products side by side. IsoCity is a city builder with trains, planes, cars and pedestrians, with its own site. IsoCoaster is a theme park builder with roller coasters, rides and guests, with a different site. Both are served from the same application, at the root path and at a coaster path, and the getting-started section confirms it by telling you to visit the second path for the park builder. So the repository holds one application with two games behind it, which raises a question the readme does not answer: how much is shared. The answer is probably the rendering engine, the input handling, the save format and the interface shell, and probably not the simulation, since a city and a theme park have different agents, different economies and different buildings. That is a sensible division, and it is the reason the isometric engine is a named class rather than inline code. On the stack: the framework is at a version 16, the language is TypeScript, React is at 19, and the interface is built on a set of unstyled accessible primitives with a utility styling framework, an icon set, and a class-name merging helper. The build includes a compiler plugin for React, which is a performance-oriented addition and one more thing to understand if you fork this.

Editorial conclusion

Adopt isometric-city if you want to read or extend a browser city builder written without a game engine, since the rendering, depth sorting and traffic systems are all hand-written and that is the educational value. Do not adopt it expecting a game you can ship commercially, because the package is marked private, the version is a placeholder at the start of its life, and a client-side save file is not a save system. Four things to verify. What state actually persists, because the readme says save and load for multiple cities and the dependency list shows a compression library plus a hosted database client, which is an unusual pairing worth understanding before you assume your city survives a cache clear. How large a city it handles, since the readme names no scale and an isometric renderer with depth sorting has a practical ceiling you will find by building rather than by reading. What the two games share, since the repository hosts both a city builder and a theme park builder served from two paths, and the readme does not say how much code is common. And whether you want the development-time tooling in the repository, because there is a localisation configuration file and a skills directory alongside the source. The licence is MIT, there are no published releases, and the last push was on 2026-09-02.

Frequently asked questions

What technology does isometric-city use for graphics?

HTML5 canvas with no external game engine libraries, described as a pure native implementation. The readme names an isometric rendering class responsible for complex depth sorting, layer management, and both image and canvas sprites.

What does the traffic simulation in isometric-city include?

Autonomous vehicles of five kinds: cars, trains, planes, buses and seaplanes. The readme says vehicles navigate the city and respect traffic lights. There is also a separate pedestrian system described as pathfinding plus crowd simulation.

How do I run isometric-city locally?

You need Node 18 or higher and npm. Clone the repository, change into the directory, install dependencies, and run the development command. The city builder is served at the root of the local server and the theme park builder at a coaster path on the same server.

What is the difference between IsoCity and IsoCoaster?

IsoCity is a city builder with trains, planes, cars and pedestrians, and IsoCoaster is a theme park builder with roller coasters, rides and guests. Both live in the same repository and are served from the same application at different paths, with separate sites for each.

What licence is isometric-city released under?

MIT, with the licence file at the repository root. The package manifest marks the project as private at version 0.1.0, no GitHub releases are published, and the last push to the main branch was on 2026-09-02.

Official sources

  1. amilich/isometric-city on GitHub
  2. Issues
  3. License: MIT
  4. Project website
  5. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/amilich-isometric-city.svg)](https://hysenlabs.com/projects/amilich-isometric-city)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/amilich-isometric-city.svg)](https://hysenlabs.com/projects/amilich-isometric-city)

Was this useful?