Skip to content

mod.json

Pk11 edited this page Jan 19, 2023 · 18 revisions

The mod.json file controls most of the behavior of Wordle DS. For more general details on modding Wordle DS please see the modding page.

Note that JSON is extremely picky about formatting, a single comma out of place will make your whole mod.json fail to load, if you have issues try loading your mod.json using a JSON formatter/validator and it can likely fix it for you or at least point towards the issue.

Everything in the mod.json is optional and will default to what it is in the base game, so anything you don't edit can be safely deleted from the file.

Examples

In the repo there are several example mods, each of which has a mod.json. The No spoilers mod.json is recommended as a basis for other mods as it contains all editable values set to their default values except the choices array has been cleared as to avoid accidentally spoiling future words for yourself. If you are confused on how the choices array should be, there is also the Default example which contains everything and is exactly the same as the base game.

minVersion

This allows you to set a minimum version of Wordle DS required to load your mod. This must be set to "v2.1.0" to use some of the newly added features:

  • Average time in stats menu
  • Share message menu
  • Movable toggles in settings

This must be set to "v2.2.0" to use the new settings redesign with a Game Options page.

If you don't change anything that requires it and your mod isn't known to be broken in older versions it's recommended to leave this out.

maxGuesses

This is maximum guesses the player is allowed. It can be any integer number between 1 and 6.

wordleOffset

This is the offset of the day 1 from the official Wordle. To calculate this value subtract the day you want from the current Wordle day. For example if the current Wordle is 309 and you want the current day to be 150 in your mod, 309 - 150 = 159 so your wordleOffset would be 159.

Note that Wordle started on day 0, not day 1, so the first item in your choices array will be for day 0. If you need your mod to start on day 1 instead then take the last item of your choices array and move it to the front, it will still be the same number as the word list loops at the end.

For the current day to be the first day (day 0) simply use the current Wordle day number.

shareName

This is the name used in the share.txt file and the QR code with the days results.

lossMessage, tooShortMessage, notWordMessage, creditStr, nthMustBeX, and guessMustContainX

These are the various messages used in Wordle DS. Their use should be self explanatory from their values, but note that the %d and %s variables in some of them must not be changed. If you need to reorder them then do %n$s or %n$d where n is the position in the original order. (ex. "%d%s letter must be %s" -> "%3$s be must letter %2$s%1$d" would reverse the order of the words in that string)

In nthMustBeX the first %s is the numbers entry in numberSuffixes.

shareMsg

ℹ️ Added in v2.1.0

These are the customizable strings in the sharable results. time and timeHour are used for the timer, with timeHour being used if it took over an hour to complete. streak is used for the current streak and streakLoss is used the day you break your streak. It's recommended to start these strings with a space.

emoji

These are the emoji used in the emoji grid, they can be any strings of text and are not actually required to be emoji however keeping them the same width is recommended.

greenAlt and yellowAlt are used when the player has high contrast mode enabled.

settings

ℹ️ Added in v2.1.0
⚠️ Requires minVersion"v2.1.0"

Allows you to set where the toggles should be drawn and the touch positions for the toggles and buttons. Requires arrays in the format: [X, Y, Width, Height]

howto

These are the words and colors to be used in the how to menu. There must be no more than 3 words with a maximum length of 9 letters each. The colors must be a single array with the same number of items as all of the words combined. Each color must be green, yellow or white. white tiles will not flip over.

victoryMessages

These are the messages displayed when the player wins the day's game. If there are fewer victory messages than maxGuesses then the last victory message will be used for everything after its position.

numberSuffixes

These are the suffixes to append to numbers when printing the hard mode nthMustBeX string, to allow for translation into other languages. The suffix corresponding to the number will be used if provided, otherwise default will be used. There is no need for suffixes beyond maxGuesses.

letters

This is the order of the letters as they appear in the keyboard keys and letter tiles images.

keyboard

This is the layout to use for the keyboard, all possible letters along with "\n" (enter) and "\b" (backspace) must be included for the mod to be fully playable.

The array items are structured as arrays containing the X coordinate, Y coordinate, and letter of each key. The X coordinates range from 0 to 255 (inclusive) and the Y coordinates are 0 to 191 (inclusive).

palettes

These are the palettes to use for the letter tiles and the fonts respectively. They are in the DS's native BGR15 format, you can use a converter such as this web app to convert to normal HTML style hex colors. They can be either strings allowing for hexadecimal (0x####) or normal JSON numbers in base 10. The highContrast arrays are used when the player is using high contrast mode.

words

These are the word lists to use for the game. Wordle DS uses two lists, choices is the words that are valid guesses in the order they will be used and guesses is the words that are allowed to be guessed but will never be a correct answer. It is recommended to shuffle choices and avoid looking at the result afterwards so you can play your own mod without spoilers.

The words in these arrays must be all capital letters, this is to prevent inconsistencies when expanding beyond ASCII as the C++ case functions only apply to ASCII. If you have a lowercase word list you can easily convert it to uppercase using Python ([x.upper() for x in wordList]), JavaScript (wordList.map(r => r.toUpperCase()))), etc or just find replacing each letter in a text editor.