Right click to open the context menu with all the options. PressEnter to generate a new map; more shortcuts⌨️here. Additional style presets are available🎨here. For town icons in the style of this generator checkPerilous Icons.🐝HexView is an alternative viewer for maps generated here.
Made with Haxe + OpenFL.
You can use maps created by the generator as you like: copy, modify, include in your commercial rpg adventures etc. Attribution is appreciated, but not required. Please consider supporting this project on Patreon☕!
| Status | In development |
| Category | Tool |
| Platforms | HTML5 |
| Rating | Rated 4.9 out of 5 stars (655 total ratings) |
| Author | watabou |
| Genre | Role Playing |
| Made with | Haxe,OpenFL |
| Tags | Fantasy,Generator,Procedural Generation |
| Average session | A few seconds |
| Languages | English |
| Inputs | Keyboard,Mouse |
| Accessibility | Color-blind friendly,High-contrast |
| Links | Twitter/X,Patreon |
Log in with itch.io to leave a comment.
Is there still no possibility to "save" the changes I made to the generated maps? I'm generating some archipelagos which I'm trying to abuse as a whole world (or at least some small continents), but editing the city names, description and so on seems kind of "wasted" (don't get me wrong, I love all you tools) if I close my browser and everything is then gone when I reopen it via link. Maybe export the whole website cache or something?
Open source would be great- I can link it with my overland viewer
https://pmapviewer.netlify.app/
and tie in my dungeon viewer with it
This feature serves two purposes:
I'm not planning to open source it anytime soon.
Okay got Imports/saves etc working (I think). Follow the instructions on the Import page to create a PMap file. PMap files are brand new instances of that map. PSave files are the viewer save and loading files.
Not sure if I'll update it anymore after this as it has served is purpose for me (learning Haxe and creating a solo overland hex-crawl)
Enjoy !
Well I finally have a map viewer. Its just simple click/double click tool I would like anyone interested to give it a try.
I am still codifying how to handle importing a screen but hit "load" and it will load up a map I've already imported for you to try out.
It seems to work fine in Chrome or Edge but wonky in Firefox as regards dragging the map around.
If you toy with the debug stuff- its not all neccesarily stable.
The menubar is ugly but I don't have the patience at the moment to make it better yet. Right-Click "Menubar" is your friend (toggle visibility).
Enjoy !
Thanks. Just wanted to learn how to program in Haxe and porting useful classes from other languages I know (or not quite forgotten !) like Java and C. I kind of like the language and want to really see if I can leverage the mutability of the output for different languages.
I've got one final version (for now) to put out that uses your export PNG, JSON so it can be used on any map generated here (within certain parameters of course). I just wish I could figure out the rosetta stone to match my hexgrid, origins to the other sizes of maps you can generate (it only handles 1800x1800 right now).
I might turn this into a solo tool and generate narrative and quest lines and generate dungeons (I've got a small dungeon generator app that runs in Android I'll probably port over). Not sure what system to tie it to though- I like 4AD, but maybe 2D6 or D20 ? I'll probably roll my own.
Thanks for your wonderful Perilous Shores stuff (and the other things here). It helped give me the "push" to get into Haxe in the 1st place......
Oh BTW, what other site(s) should I post this on (figured it would be hard to explain to generic folks not familiar with your stuff) ?
I just wish I could figure out the rosetta stone to match my hexgrid, origins to the other sizes of maps you can generate (it only handles 1800x1800 right now).
I don't have anelegant solution for this and the "warped" hex mode complicates the matter even more...
Oh BTW, what other site(s) should I post this on (figured it would be hard to explain to generic folks not familiar with your stuff) ?
Well, the r/FantasyCities subreddit seems like an obvious candidate and maybe r/Solo_Roleplaying, r/rpg_generators and similar ones. If you have a Twitter/Mastodon/Bluesky account, posting it there wouldn't hurt either I guess.
Can I use the links in the JSON to for villages/dungeons etc to automatically bring open a browser window or would you prefer that the player manually does so (can send it to the clipboard and they can fire off the link to prevent abuse) ?
Almost got the prototype working- can import the data, fog, move with some move validation and able to pull up the contents of the hex mostly (see below). Got to figure out how I'm going to get it hosted though (anyone try Netlify ?).
I actually have another silly question (no surprise there). What distance (flat to flat) of hex do you envision each hex encompasses ? 2-3 miles ? 6 miles ? Or what was your intention ?
Also, I noticed going through the data that multi-hex features (like woods etc) can have towns/dangers as that are also part of their hex list. Is this intentional ? On the map it does not draw any terrain under towns/dangers, but if it is in woods, it treats it as woods.
This comes back to what you think the hex distance is (2-3 miles and probably a clearing, 6 miles+ and its whatever terrain the feature it is in ?).
Sorry for the questions. I'm fine tuning things and of course having interface/haxe issues to overcome and adapt to.
Can I get a full list of all terrain types you use in the JSON ? I want to map them so that if they change or any are added its not a nightmare for my map viewer program.
I've got a workable interface down and have finally got the road/searoute/river masks complete so the data conversion stuff is almost all done. I hope to get the fog layer and movement down next.
https://itch.io/post/13346690:
> Possible values of the "terrain" field are: water, rocks, forest-light, forest-dark, forest-dead, desert, swamp, mountain.
Great ! Threw me for a loop when the default came up with tilted hexes (also had to hunt down my preset display settings I use- although the map viewer is agnostic as far as that goes).
Can we get a list of all the possible terrain types (what you use to populate Terrain="") field in the JSON ? I want to make an enum something similiar in case of future changes/additions ?
And now that you have water defined, maybe you can have water features (Bays, Seas etc) ? Haven't seen any generated yet so maybe they are there. Maybe even multiple of the map is large enough (e.g. a Bay off the coast that is in a Sea etc etc).
My travails with getting the UI to behave continue apace....
Excellent Work !
Not sure this is where to ask this stuff but here goes:
Can we get a comprehensive text list of the all your json terrain types ?
I noticed there is no terrain type open (just "") or water (just ""). Is it possible to fill in those with their appropriate types (e.g. "Ocean" and "Clear" when exporting ? Would make map AI easier to work with (suppose I could use a color check of the center of the hex to determine what it is but that gets messy)
It also seems to truncate the grid if there is empty (in this case water) to the right. Can it fully export all the hexes ? I suppose I could smart fill and assume its water but have to be careful not to include open terrain (again kind of messy when the data is already generated somewhere).
As if that is not enough :D, can we get as a future feature (pun intended) the features field to have a class associated with it (e.g. town, danger, wood_feature, mountain_feature etc etc ?) this would make it a breeze to generate some logic for quests, backstory etc etc.
Really love your Perilous Shores stuff. Its really got my creative juices flowing :D
Soon (tomorrow or maybe even today) a new version of the generator will be released, which will export maps a little differently.
Awesome ! I'm so close to getting a working model to tinker with once I can implement any changes when massaging the data into my data model.
Now that I think of it, I could just tie the feature back to the terrain type of one of its children hexes (unless its a danger or a town etc) as long as its consistent.
The next question will be what do I do with it when I get this whole thing running....
Love the stuff here- really gets my creative juices going :D
I have a question though:
Is the hex grid using cube coordinates (and not offset) for its location ? I'm toying with the idea of making a fog overlay utility that I can use to reveal only hexes visible to a particular hex (it would reveal the current hex and a partial of any adjacent 6 hexes at a time).
Keep up the good work !
No, it's using"offset coordinates" for two reasons:
Cheers!
Wonderful ! Then it won't require me to wrap my old head around that.....
May be able to get something done on my android phone. I've got a good dungeon generator I've made in a similar style that allows crawling and I would like a good overland ability to do the same. If I can import the map and its JSON for data I can put a mask over the whole thing, pick a start spot and crawl, exposing the mask as I move along and when I hit a dungeon I can generate it in my program. Might be a little overly optimistic, but it may be worth a shot :D
BTW since you've already got most of the terrain stuff down, why not make a skirmish map generator in the same style ? These are the best set of easy to use tools around.....
Yeah a simple battlemap- A road maybe, some trees, heights, maybe a field or two with a building etc etc. Can base it on the terrain in the overland hex possibilities. Bonus would be conforming it (more or less) to a hexgrid (like the overland). Very handy- I use a generator from another app I made to create these: https://drive.google.com/file/d/1Lc6kZZr6ZIr2l2mGmNu0jeq7z3NUOdmI/view?usp=drive... and https://drive.google.com/file/d/12GyIy8vO5Qu07BDD4c8_dRuFWl_7d-Ly/view?usp=drive...
I love the maps i already generated with this tool. I would like to develope a browser game using a map generated via this tool, but for it to work I need higher resolutions map, such as 16000x16000 pixels, is it possible? eventually i can generate them offline. Of course I will give you credits and support you via patreon. let me know. :)
I'm not sure I get what your goal is. I thought you just needed your "normal" map in high resolution (256K) and that's what you can achieve by exporting it as SVG, scaling up etc. Of course in this case individual objects become large (in pixels). If you need a map made of a large number of hexes, you can request one in theRegion parameters dialogs by entering large numbers in theSize fields, but it can't be larger than 4000x4000 or something like that. And you can do both - generate a large map (4000x4000 for example) and scale it up. It is also possible to make a maplook larger by using smaller values asClutter scale andTown scale in theStyle dialog.
Hello Watabou,
First of all, your tool is amazing 😍
I can't find the permalink option in the context menu, is it temporary disabled ?
the URL of the page does not contain the modifications I made on my map so I can't use that as a way of saving it for later edit ^^'
In any case keep up the good work and have a nice day 😁
Thank you!
The"Permalink..." item is the second from the bottom in the context menu. It works exactly the same as the link in the address bar of the Arcana version, i.e. it doesn't include modification made to a generated map. I am working on the JSON export feature and maybe it will become possible to import the files back making it possible to save and load (modified) maps normally.
Foundry VTT user here. I do not know about Roll20, but it must be similar.
I see 2 problems with importing generated map.
1. The hexes do not start "flush" at the edge. In Foundry, that means that I need to manually offset the map to fit the hex grid. This is a manual process; Foundry has a tool that helps quite a lot, but it's time consuming and imperfect. Ideally, the exported map from PS would have hexes starting flush at the edges. Here are the 2 ways "flat top" hexes cap be flush:


2. The "grid size" is not specified. In Foundry, maps are defined by how many pixels fit in a single grid square (the devs suggest at least 100 px, and that is what I use). For maps using a grid (like the ones generated by OPDG), it makes things super easy: export at 100 px, use the same size in Foundry and boom, everything lines up. In the best world, exporting a map from PS would be just as easy. Ideally, PS would scale their hexes to pixels per square so that exporting at say 100 px per square would fit easily and perfectly on a VTT. I read a reddit post where someone describe how to calculate it; maybe that could be useful to you: https://www.reddit.com/r/FoundryVTT/comments/t8anvc/hex_grids_in_foundry/
Thanks for taking the time to read and answer the comments! Also, thanks for everything you do :D
Hey this is extremely cool and a very helpful tool. Will definitely consider supporting the project. Thank you!
I do have one question. Is it possible to update the icons on the map to different things? I saw a post showing some different icons earlier but can't find it and also I wasn't sure how I might import them to the tool
No, it's not possible. The generator doesn't use any pre-made assets (and can't import them), everything is drawn procedurally.
Are you asking about cities? All you can do is to choose between "pins" and actual icons (Details > Towns), change their size (via theStyle dialog) and slightly change their look by rerolling internal parameters (Details > Towns > Random icons).
I'm sorry, I have no idea why this doesn't work for you... You definitely don't need parentheses. The font name should be entered exactly like it's spelled in whatever tool you're using, but the case doesn't matter. For example, "times NEW roman" will work, but "times new roman" (with the additional spaces) won't.
hey i dunno whats up but several of your generators are cutting off about 50-60 pixels, without touching the margin or overlay text. changing zooms and sizes doesn't affect it.
in regular it cuts it off on the right oops right and bottom. in full screen, it's the bottom edge which falls off. i cannot figure out if there's an element from itch or elsewhere doing it, but i don't think it's the ratings bar
huh. if we rotate, it then cuts off all the elements, margin and compass etc.
oh i see! it's every element, incl child elements. longer text gets its own margin cut off too.
Howdy, two suggestions/requests and a question! Firstly the question: it's about the town generator but it could be applied in general to any output, I made a map of town long ago and lost the permalink... is there any way to retrieve from the image I saved?
Suggestion nr.1 for 'Perilous shores': there is no chance to set grasslands as the main feature of a map; I recently looked for a countryside map with plain grasslands (for pastures) or cultivated fields... is there any chance to add this feature?
Suggestion nr.2 for 'Perilous shores': in a map, the only icons are towns/villages or dungeons (marked with the skull icon)... would it be possible to add other 'points of interest'? For instance: a ruin, a monastery, an architectural element like a column or an obelisk... or in general a pin point which is not 'dangerous' (i.e. an icon different than a skull)?
Thanks a lot in advance, best
Well, if you figure out a way to do it without me giving you the source code, hosting the generator at your place or anything like that, then yes, why not :) But usually people resolve to pregenerating a large enough number of maps without invoking the generator afterwards (like here: https://hexroll.app/).