Feature suggestion for a custom Map Editor

OK, I wanted to respond to some of your questions and comments

You definitely aren’t, I’m just having difficulty explaining what I mean. Essentially, what I referred to in my other post, which is a way to setup a palette’s entries for easy reference for what you need in a map. That might include being able to color-code symbols or add notes besides tile entries. I’ll explain further down this post.

I agree with all of the above. I think this alone would be a great step in the right direction for having a tool everyone can use (with the right pointers to the relevant JSON docs to reference). The only other feature I might add is importing maps, as that would be a way to save your work and then pick up where you left off in another session. I’ve definitely finished maps in a sitting, but only after I’d made 30+ and had experience under my belt.

My idea for this is based on the fact these items are distinct in a JSON building file. You can also spawn furniture on different kinds of terrain tied to the same symbol definition, like how you brought up the fireplace in the house palette spawning on a concrete floor, by using the “A” symbol. That is enough in my mind to cement the fact that the “A” symbol for the fireplace should only be selectable under the furniture column, as otherwise if a player chose the “A” symbol to lay down concrete flooring in a room, they’re going to get a room full of fireplaces.

For the reason above, in my mind it’s important for me to keep the symbols straight, and why I personally don’t want a “tile” based editor. I want to look at what symbols I’ve laid down and know what items might spawn on that tile.

When looking at your mockup, I was thinking that I personally don’t really want to create maps using just the tile view. Likewise the toolbar with the tiles to choose from isn’t conveying the information I quickly want from my map in progress.

To be clear, I don’t imagine that mine is a popular opinion. I suspect most people would want to quickly build a map graphically. To me, having the symbols allows me to see all sorts of nuance, including nested spawns which don’t necessarily have a tile associated to them if they’re spawning monsters, items, etc.

I might be misreading what you’re saying here, but you need to map characters to tiles, because you are ultimately creating something like this:

    "..................p.....",
    "........................",
    "...............---......",
    "...............---......",
    ".###o######o###o*##oo##.",
    ".#@¤y I|d|II x|Ə yrrr #^",
    ".o@  ?I|+|?  ¤|L   ?  o.",
    ".#    I|     @|R ~~~~~#.",
    ".# dd  |ɸ  T @|R sHHHs#.",
    ".#+|||+|||+||||  E~~~~o.",
    ".#D|Q+           ~~~~~#.",
    ".#|||| ||+||     Txxx #.",
    ".#D z| |B,8| h   |||||#.",
    ".#|+||+|B,S| ffh |nF41#.",
    ".#b dd |t,8|hff   ,,,3#.",
    ".#     ||||| h    ,J,J#.",
    ".o     R|8t|     |,J,5o.",
    ".#y @@  +,,|+|  V|,,,J#.",
    ".# ¤@@¤ |S9|U|y Ə|6O72#.",
    ".###oo########o*####o##.",
    "..^........-0000*>#.....",
    "...........-0000###.....",
    "........................",
    "........................"

That the game translates into this:

What’s more, you want to have the capability to map characters to tiles, because you might find the need for having (for example) more than one kind of bookcase and its attendant itemgroup spawns in a map. Maybe you want a specific group of items to spawn on a specific bookcase, or maybe no items to spawn, in which case you wouldn’t be able to use the already mapped “R” symbol for regular bookcases if you’re using the house palette.

Having a ready-made palette to use is great, but I almost always add additional defined symbols in my houses, sometimes being as simple as having specific tables that spawn with a particular color of carpet terrain spawning under them.

I’ve only contributed houses to the main game, though I’ve made other buildings that I included in a previous mod. Since I mostly only use the house palette, I’ll stick to that in my explanation below:

Steps:

  1. Use my personal template docs (the individual house entry, multitile_city_buildings entry, regional_settings docs) for houses that have the unique entries for that house left blank for me to fill in. These three documents are necessary to have your house spawn in-game.

  2. The house palette is pre-defined in my template, but if for example I wanted to create a bar I would reference the existing bar entries or else check the json/mapgen_palettes folder to see if that template currently exists and I want to use it

  3. I have a spreadsheet template setup with 24x24 grid (or larger) which I add my entries to, including symbols that I then color-code for easy viewing on the grid. Example of a house layout is below.

The below pics are of my entries for the furniture and terrain. I build that by hand by looking at the palette file. I have notes to tell me what item groups spawn on a particular symbol. I’ve also color coded the entries according to room (red for kitchen, blue for bathroom, etc.) I copy and paste each symbol onto the grid, which isn’t quite as painful as it sounds once you’re used to it.


  1. The 24 x 24 grid above is composed of individual cells. The symbol in each cell is added into a string. I copy and paste the 24 “string amalgamation” lines (the yellow boxes beside the grid) into the WIP template that is placed into the game directory so it can be read and then spawned in-game to check.

  2. Once the map is to my satisfaction, I have a workflow document to keep me organized. It tells me what files to “de-lint” using the official de-linter web tool, what files to move from my playtest directory into my repository directory for submitting the main game. The process for submitting PRs to the main game is complicated unto itself, and not relevant to your potential editor.

Essentially, I have a very crude mock-up of a program layout that I just manually execute using spreadsheets, doc templates and my workflow document. It’s a bit tedious at times, and I would never expect another person to look at my workflow and think it’s something to emulate. I don’t necessarily think this is the best way to look at designing a potential UI, but I wanted to share this to explain what I was referring to as an “overlay” on a palette. If your program could populate the palette entries and the user had a way of saving some personalized color coding or notes into a “config” file that could potentially be shared with other users of a program, that could be beneficial.

The current mapgen is powerful and somewhat versatile but it can be finicky to get a grasp on. That’s why having a program to fill in the most painful parts is so worthwhile. The goals you mentioned above would take care of some of the messiest parts.

I don’t want to take up more space in this thread than I already have, so I’ll leave it at that. Feel free to DM me if you have questions or want clarification on any of the above.