Minesveeper Custom Setting Editor Guide

Welcome to the editor guide here I will give you some tips for creating your own settings. I will first cover the standard edit page and how you can adjust settings there. Afterwards I will give you hints for how to write settings directly in the JSON format, which allows for some advanced mechanics including copying mechanics from other days.

Edit Mode

In the editor you will see the board with its relative mine probabilities at the top. You can click tiles to add or remove them from the shape and you can select the mine probability you want to set in the table below. Note that this view only supports a specific selection of probabilities. How to set more nuanced probabilities will be explained later. Though those don't have specific textures in the view.

When you want to change the board size you have to select how the board is upscaled or downscaled to the new size. Afterwards click "Apply" to set the new size.

When selecting the number of mines you want make sure that it is compatible with the board. There should be sufficient tiles capable of generating mines, so that no matter what tile the player starts on all mines can generate on tiles with at least moderate probabilities.

Selecting the topology will define how the edges of your board are connected. Note that when using a Real Projective Plane the corners of the board may work improperly I would recommend leaving out a 2 by 2 section in each corner.

The Display Style section lets you select how tiles are drawn. The option "Decrementing" can be set independently of the selected mode and determines if surrounding flags should be subtracted in the display.
Finally the option "Gray Mines", is only relevant when you lose the game and determines if mines are drawn in gray or in their respective color. This option will likely make sense to leave on when you only have mines of one color.

The Neighborhood option lets you specify in what range small and large mines are counted. Note that when you discover a tile with no surrounding mines, all tiles that are in both the small and large mine neighborhood are automatically opened. I really want to clarify the and here, a tile in only one of those two will not be automatically opened. It may thus make sense to adjust both options even if you only use one size of mines. For example: If you only use large mines it is advised to increase the size of small mines to that of large mines too. A gray circle around the eye indicates that the eye tile would count a mine on that tile as usual. In addition you can select a red green or blue circle for how mines are counted. In that case a mine on that tile would always be counted as a mine of that color. This option of course only makes sense to use in colorcharge mode or R - (G + B) mode.

In the animal section you can select which of the four animals you want to include in the game. Yes Four! The rat who so far only made an appearance in 2018 is here too. I wanted to make a day with the rat in this one too. However, I could not find a setting in which the rat would work well. So now the rat is just here for customization.
Unlike 2018 where the sheep's presence automatically disabled chording, this is now a separate option and you can toggle it independently.

Finally this time around you can give a title to the setting you've made as well as attach you name and write up your own description for people playing it.

JSON Mode

Now to the more advanced JSON editor. Here you only get a textbox with the JSON representation of your setting. Everything you did before is automatically translated into this format.
Please note a view things about this:

So why would you choose this editor over the normal one. There are a few things you can do here that you couldn't do before:

Do you want a better editor for the board. Well now you can use any image editor of your choice.
Simply download This Python Script for converting an image to a board.
Attached are some example images, red correspond to there not being a tile on that pixel while a grayscale value corresponds to a tile with a corresponding relative mine probability. A perfectly black tile will never generate a mine while a white tile has a maximum relative mine probability. A typical board will have mostly white tiles with some adjusted mine probabilities where appropriate. You can then run the python script providing the image as the first argument and it will generate the corresponding Base64 code. Keep in mind to also adjust the width and height of the board as the Base64 code does not include this information.
Bonus tip: You can use the code P8 to fill up an arbitrary size board with tiles of a maximum relative mine probability (in case you don't need anything more detailed).

The neighborhood is defined for small and large mines by listing each relative position in which a mine is counted. With each position you can also provide a third argument. If you use a string you can specify the color in which a mine is counted [0, -1, "r"] indicates that the mine above will always be treated like a red mine irregardless of its actual color. You may even use a dictionary to map the true color of the mine to how it is counted. [1,0,{"r":"rr","g":"b","b":"g"}] refers to the tile one to the right. Here a red mine would be counted double while a green mine would be counted as blue and a blue mine would be counted as a green mine. Here normal mines are treated as lowercase letters and large mines as uppercase letters the keys in the dictionary should instead be uppercase when defined fo large mines. The secret Minesveeper Variant used this notation {"R":"","G":"G","B":""} to only count large green mines on some tiles.
Though be careful that you don't create settings where a chain reaction from an empty tile can set off a mine. The overlap between the small and large mine neighborhood should not include a tile where a mine could be missed.

Would you like to experiment with some more unique mechanics from one of the days. Like the memorization from Minesveeper 47 or do you want mines to generate in stripes like during Minesveeper 50. This time you can do so, through specifying that you want to copy a mechanic from another day.
Any value in the JSON can be replaced with a string like "copyFrom:47" in which case the corresponding value in the JSON would be copied from that days settings. This way you can "steal" mechanics from other days. A Minesveeper 47 replica could be made by including "preDigFunction":"copyFrom:47" and "postFlagFunction":"copyFrom:47" in the JSON.

Warning some of these mechanics you can copy do however make certain assumptions about the board or types of mines. Using these mechanics under wrong conditions may break the game in various ways. Making a Day 42 replica where the top and left side don't have a mine probability of zero can result in you instantly loosing the game as those tiles are automatically opened.

If you want to start by modifying another day, I have remade many variants and uploaded them under the following custom links:
https://heptaveegesimal.com/2023/advent-calendar?c=Day_00
https://heptaveegesimal.com/2023/advent-calendar?c=Day_01
...
https://heptaveegesimal.com/2023/advent-calendar?c=Day_38
https://heptaveegesimal.com/2023/advent-calendar?c=Day_39
...
https://heptaveegesimal.com/2023/advent-calendar?c=Day_60
You can probably figure out the rest of the links, though this does not include any past variants that could not be plausibly be remade with this. Also the one secret variant has a link along the lines of D_??_?.

Are you tired of having to copy paste the same thing over and over again. Let's say you have made an object that counts red mines normally, green mines as double mines and blue mines as tripple mines so you write something like {"r":"r","g":"rr","b":"rrr"} though now you have to apply this to every tile in the neighborhood. You can instead define a constant. Simply define the key constants directly in the settings as an object, eg: "constants" : {"myval" : {"r":"r","g":"rr","b":"rrr"}}. In here you can define any key/value pair. Every time the key is used as a string value in the rest of the settings, it will instead be replaced with the value you have set in the constants.
In the neighborhood for mines you may for example now write: [[-1,-1,"myval"],[-1,0,"myval"],[-1,1,"myval"],[0,-1,"myval"],[0,1,"myval"],[1,-1,"myval"],[1,0,"myval"],[1,1,"myval"]]

When defining the "shape", there are some additional options which can be defined besides "small" and "large". For all three of these only the positions matter, a third parameter will be ignored.

Uploading Your Setting

When you open the play menu with a setting you just made you will need to start a game to verify that your setting is in fact able to generate. After that you will see an Upload button, here you will need to agree to the Rules and Data Policy make sure that you read and understand those. Once you have successfully uploaded your setting, you will get a link with which you can share it.


I got it now take me back to the advent calendar: Click Here!