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.


Apologies if I am being stupid but when I import my city into the viewer it only displays the castle/temple - every other building is missing. Is there a setting I need to tweak or is this done by design?

Cheers and gratz on the great work.


That's weird. This is the second report on this issue, but I can't reproduce it. Could you send me your json file?


Happy to but where shall I send it? :-)

(1 edit)

watabou at gmail com

I thought it's displayed somewhere here :)


Same here, Just press enter to reload it.

I've found what causes this problem and it will be fixed in the next update. Until then, you can make the export work by choosing any value in Style > Buildings > Shape (Block/Off/Simple/Complex).


Thank you that was quick work :-)


Hey, I'm also having issues loading my Really Big Map, but there's no such thing as a "shape" menu in the Buildings section. It doesn't exist?

It does, it just is not labeled. The last item on the Buildings tab, a "combo box" with values "Block", "Off", "Simple" and "Complex".

In the city viewer? The only options are "roof pitch" and "towers".

Ok, here is a clarification: that option is in the city generator :) 

The problem is with the export, not with the import. City Viewer is all right.

(1 edit) (+1)

Hi there watabou, great generators and viewers.

however I am having the same issue as jsunandmax - I took the Json from MFCG and imported it here, exported the obj and opened it in blender so I could scale it, I then took it to table top simulator. 

once in TTS I noticed the normals were crazy - most of them appearing inside out, but some flipped outside. 

I hopped back into blender and there was no fast or easy fix I could work out to sort the normals.

I think this is happening because the meshes are @open@ the buildings have a roof, and walls, but no "floor" or base. would it be possible for you to have an option to make the meshes "solid" as then even if the normals are from some reason inverted, blender can recalculate them to be "outside". at the moment since the mesh is "open" it cannot figure out inside from outside and just flips some one way or another.


great work!  I noticed when exporting .obj and bring into Blender that normals are all crazy (random), and since the bottoms of buildings are "open", its impossible to get all the normals facing right.  Is this something there is a solution for?  


Are you sure the normals are incorrect? In City Viewer models are exported without normals so they should be derived from vertices coordinates in the obvious way by an importing application and I don't see what can go wrong there.


i figured out the issue, .json from the Fantasy Village to here then .obj out creates geo where vertices are not welded.  Once I did a weld, i could fix all the normals, even without a proper "floor" on the buildings.



Hey! I really love this - especially with the ability to load jsons, but there's a feature in toy town to set it to a "45° orthogonal view (RTS view)". I used this generate 3d maps for my players - is there a way to implement that here? Thanks!


Yeah, sure, it's on my list 👍


You're the GOAT! Me and my friends all use your suite of tools for our D&D campaigns, keep up the amazing work!

(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!