This is not a city generator, this is a city viewer! It comes with 6 built-in settlements, but to see something new you'll need to generate a city in MFCG (or a village in VG), export it as JSON and import it here.

Right-click anywhere on the generator to access the context menu with all the actions and options.

Hot keys:

  • 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 (styles)
  • G: toggle gable roofs
  • X: 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 (style)

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

Made with Haxe + OpenFL + Away3D.


Log in with to leave a comment.

(2 edits) (+1)

Any chance of making a variant of default view that allows for no animation? I'd really like to be able to use this tool to figure out city shots for ex. a comic (or other sequential graphic arts) but locking camera to ground and making the motion quite slow in that mode doesn't allow for the range of poses needed.

WASD/arrows for XY camera motion and mouse to rotate camera work well enough, perhaps the zoom wheel for Z-axis or FOV (and if using it for FOV, R/F keys for Z axis?) (I am not a patron so take this all with a grain of salt, ofc.)

EDIT: I am an idiot, space-bar unlocks Z axis control...... gosh, what a cool tool

Yes, the SPACE key unlocks Z axis (it is locked initially to simulate walking). You can also use numpad + and - keys to adjust height directly.

Slow walking is a problem. Usually when I need to take a screenshot I use the "Default view" first to get to the right part of a map and then press ~ to switch to the free mode.


When I hit export all it does is regenerate the city and I don't get the file?

I'm running a windows machine and I exported a JSON from your other thing to make a non-prefab city.

Is there a way to see what's going wrong?


Sounds like a keyboard issue (layout, caps lock or smth like that). Do the other hot keys work normally for you?


Yes, the other keys work just fine.

Honestly, the only thing that's not working fantastically is the export.


I have discovered the cause of my dumb. I was reading the O as a 0.


OK, now it makes sense :) I will replace the key, it does look confusing.

Ditto with these two.. any way to make it work locally, when internet is not available?
This is even more stunning. Needs trees, tho. ;)


OK this is well cool. I'm not particularly technical but is there a way to turn an existing city into something that works, i.e. how to convert a graphics file into JSON?

There is no way to convert graphics into this JSON format. You can try to recreate a city you need in MFCG i.e. reroll a map until it's close enough to your idea and then tweak it using the Warp tool.


this is super nice but could you add a option to export the ground plane?


Will do

Ey, any chance of a downloadable version? The in browser one takes a long time to load ;-;

nice tool


Can the cities made with the generator be applied to a unity terrain, or Gaia

Only if you (or someone else) will write code parsing json produced by the generator. It shouldn't be hard, but it's just my guess, I personally have zero experience with Unity.

(1 edit) (+1)


This is great tool. Maybe I use this tool for Unity. Thank you.


Awesome tool for visualizing the generated cities and villages! 

The OBJ conversion is a real kicker too, and it helps me visualize what the village actually looks like! 

I just noticed that the generated OBJ file is upside-down compared to the map and the view generated in City Viewer. As a consequence the OBJ matches the map only when viewed from below :-) 

Thank you for sharing great tools!


i would love it if there was a scale so i could see how big everything is. amazing tool other wise


I can't seem to drag and drop the .json into the viewer. I'm using Linux (Debian derivative), would that be a problem?

I have no idea (virtually zero experience with Linux), sorry. Since a standard browser API is used,  in theory it should as good on Linux as on Windows or macOS . How does it look? You drop a file into the viewer and nothing happens?


Sorry about the late reply. Yeah, the mouse over with the dragged item does not even change to show it is droppable there. It does however, drop outside the viewer in the same webpage, but then that only makes it so that the viewer's webpage goes to the code contained in the file (a la, using a browser to open that file's code/script). Very weird.


Hi. I wrote a json converter to obj.
It's not super great, but It's at least more convenient for blender use.

It's pretty easy to customize as well.


Cool! Does it work with the latest version of MFCG? I tweaked JSON  there a little. Unfortunately, I don't know Python and I don't have it installed to check it myself.


I downloaded a new example and it looks like it works, see the README on github, I put an image. There is no city walls or water body yet (because I didn't need it) but if anyone is interested in it, I can implement it. I think being able to re-color every building is pretty neat too.

If you send me a file with all the new features I can also implement/update it.

Keep up the good work :)


Would you be able to add city walls and water bodies?


Your work is so amazing I want to french kiss you.


I've used your stuff for a BattleTech RPG campaign for a few months now, and love the work you have done! If we could get windows added back, that would be awesome. The idea of toggleable building height is a great idea, too. Thank you so much for your work, it is all just incredible!


(1 edit) (+1)

This thing is amazing, thank you!


Amazing! Ground plane and separate texture export would be amazing!


I feel like the houses are a bit too tall, so whenever I explore, I feel like I'm roaming 4-5 storey houses packed in a small space. Other than that, I love it


Научите, как импортировать? Я не понимаю как запустить 3D генератор и тем более , как импортировать туда свою карту.

Заранее спасибо

Расскажите в чем проблема. Это приложение (City Viewer) у вас вообще работает? Модель города крутится или там просто пустой темный прямоугольник?


Is it possible to add gables to a city imported from MFCG?  I'm having trouble with this file...


It appears to be working now.  The only thing I did differently is to have gables enabled before copying the file from MFCG into City Viewer.  Thanks!

It should work the other way around as well: first import a file and then enable gable roofs by pressing G.


I don't understand how to toggle auto rotation thank you for your help


just press the tilde key (`). 

Yeah, tilde is a more obvious name for that key :)


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!