This is not a city generator, this is a city viewer! It comes with 5 built-in cities, but to see something new you'll need to generate a city in MFCG, export it as JSON and import it here (by dropping the file onto the viewer).


  • Enter: load another built-in city.
  • 1, 2, 3: switch to one of 3 viewing modes
  • 5, 6, 7, 8, 9, 0: switch to one of 6 colour and lighting modes
  • G: toggle gable roofs
  • O: export the model to .obj

More keys:

  • `: toggle auto-rotation
  • Shift+1: switch to the fly-through mode
  • Shift+0: switch to a random colour and lighting mode

Use W, A, S, D and arrow keys to navigate around.

Some additional info on the viewer is here.

Updated 8 days ago
Published 20 days ago
StatusIn development
Made withHaxe, OpenFL
Tags3D, City Builder, Generator, mfcg, Procedural Generation
Average sessionA few minutes
InputsKeyboard, Mouse, Touchscreen
AccessibilityColor-blind friendly, Textless
LinksBlog, Patreon, Twitter


Log in with to leave a comment.


Thank you for adding gabled roofs!

Dropping a JSON file on to the viewer does not seem to work.

Uncaught TypeError: Cannot read property '0' of null
    at Function.com_watabou_toytown2_elements3d_buildings_GableRoof.add (ToyTown2.js:28511)
    at com_watabou_toytown2_elements3d_View.reset (ToyTown2.js:27988)
    at com_watabou_toytown2_scenes_TownScene.load (ToyTown2.js:28828)
    at FileReader.reader.onload (ToyTown2.js:27408)

Could you send me the file you are trying to import?

Charotat Fort at

Thanks! Yes, some bad data in the JSON caused this issue. To be exact, it was a building polygon consisting of two vertices. It is fixed now.

Could you send me the file you are trying to import?

Send me your email address and I will. Also, I dont think its a file issue at all. I believe that it is a browser permissions issue. Look at the response I posted on the dev page.

I missed that message of yours. "The devicemotion events are blocked..." shouldn't be a problem, it's just a warning and it doesn't prevent the rest of the code from working.

I've uploaded a small update, which at least helps with Tazshelby2016's file. In that case it was invalid geometry in JSON.

So it still doesn't work for you? I'm out of ideas, your file is loaded normally for me. Maybe you should try another browser, maybe something is wrong with your browser's settings/permissions (as you said). But in this case there should be messages in the console, not just that "devicemotion" one.


Really good addition to MFCG which I'm a fan of. If you're still working on this it might be fun to have an option for building height


Thanks! Yeah, this app needs a Settings window.


OMG! This is amazing!


This is amazing wow!


This is so cool. So many things you can do with it!