Jinglewood Memory · Customization Guide · version 1.0.0 · Main buyer guide

Customization Guide

Make Jinglewood Memory your own game: new card pictures, backgrounds, your own logo and mascot, texts, music and sounds, and easier or harder levels. Every recipe below is a short list of steps and says exactly which file to open. You do not need to know how to program. All pictures on this page are real screenshots of the game in this package.

1. Before you start

Free tools you need:

Which folder to edit. The download has two copies of the game:

The paths in this guide (for example assets/ui/logo.webp) are the same inside both folders.

Make a backup first. Copy the whole folder (or keep the ZIP you downloaded) before changing anything. If something breaks, you can always go back.

See your changes on your computer. The game must be opened from a web address, not by double-clicking index.html. Two easy ways:

python -m http.server 8080

After each change, reload the page with Ctrl+F5 (Windows) or Cmd+Shift+R (Mac) so the browser does not show the old file.

On your own computer (addresses that start with localhost) you can open any level at once: add ?debug=1 to the address, press F12, open the Console and type jinglewoodMemory.level(30). These test tools do not exist on a published site.

2. Where everything is

The numbers on each screenshot match the table below it. Texts are named by their key in the language files of src/i18n/ (recipe F).

Start screen

Start screen, real screenshot with numbered parts 1 2 3 4
# What you see File to change
1 Logo assets/ui/logo.webp. The same file is used on the start screen, the menu and the win panel (recipe B).
2 Tinsel asleep on a golden ornament assets/ui/boot-hero.webp. With the mascot switched off the game shows assets/ui/lantern.webp (the golden ornament alone) instead (recipe E).
3 "Tap to start" Text: key tapToStart in the files of src/i18n/ (recipe F). Its glow: #boot .tap in css/screens.css.
4 Background assets/bg/w1-p.webp, w1-l.webp and w1-w.webp: the first world, also used by the start screen, the menu and the Daily board (recipe D).

Menu

Menu, real screenshot with numbered parts 1 2 3 4 5 6
# What you see File to change
1 Stars earned Plate: assets/ui/pill.webp; star: assets/ui/star.webp.
2 Settings button assets/ui/round/gear.webp. The other round buttons are in the same folder.
3 Logo assets/ui/logo.webp. The same file is used on the start screen, the menu and the win panel (recipe B).
4 Tinsel, the mascot Six poses in assets/mascot/: wave, fly, cheer, worry, point, sleep (recipe E).
5 Play button Texts: keys play and level. Button: assets/ui/btn-amber.webp; icon: ic-play.webp; small ribbon: ribbon-name.webp.
6 Daily and Collection buttons Texts: keys daily and collection. Button: assets/ui/btn-indigo.webp; icons: ic-calendar.webp and ic-album.webp. Both can be switched off (recipe L).

Map of a world

Map of a world, real screenshot with numbered parts 1 2 3 4 5 6 7
# What you see File to change
1 World name Texts: keys worlds.village, worlds.market, worlds.woods, worlds.bridge, worlds.lake. Ribbon: assets/ui/ribbon-red.webp.
2 Finished level A golden ornament: assets/ui/node-done.webp, with star.webp below it.
3 Next level to play The same node-done.webp, bigger and glowing (.node.now in css/screens.css).
4 Locked level A violet ornament: assets/ui/node-lock.webp with lock.webp. The color of its number: --lock-ink in css/theme.css.
5 Star Gift The gift box: assets/ui/chest.webp (and chest-open.webp when it opens). How many stars and what it gives: recipe H.
6 Path between the levels Drawn by the game: its color is stroke in #map svg path, in css/screens.css. The place of each level on the path: PATH in src/app/screen-map.js.
7 Map background assets/bg/map-w1-*.webp to map-w5-*.webp, three files per world (recipe D).

A level (Frosted Forest, with Frozen Cards)

A level (Frosted Forest, with Frozen Cards), real screenshot with numbered parts 1 2 3 4 5 6 7 8 9 10 11 12
# What you see File to change
1 Pause button assets/ui/round/pause.webp.
2 Level number Text: key level. Ribbon: assets/ui/ribbon-red.webp.
3 Score Orb: assets/ui/orb.webp. The points of each pair: recipe H.
4 Stars and moves Stars: star.webp and star-dim.webp; moves icon: ic-album.webp. Moves of each level: recipe G.
5 Tinsel, the mascot Six poses in assets/mascot/: wave, fly, cheer, worry, point, sleep (recipe E).
6 Pairs in a row Christmas ornaments: assets/ui/lantern.webp (golden, lit) and lantern-off.webp (violet).
7 Peek power (the eye) Icon: assets/ui/peek.webp; name: key peek. Charges: recipe H.
8 North Star power Icon: assets/ui/beacon.webp; name: key beacon. Charges: recipe H.
9 Card front with a Snowpal Gift tag frame: assets/cards/front.webp. Snowpal: a picture of assets/cards/w1/ to w5/ (recipe C).
10 Card back One per world: assets/cards/back-1.webp to back-5.webp; golden levels use back-gold.webp (recipe C).
11 Frozen card Ice block: assets/ui/vines.webp; lock: assets/ui/lock.webp. How many per level: locked in recipe G.
12 World background assets/bg/w1-*.webp to w5-*.webp: one set per world (recipe D).

Panels share the same pieces: the parchment panel is assets/ui/panel-tall.webp (and panel-wide.webp), title ribbons are ribbon-red.webp and ribbon-amber.webp, the small name ribbon is ribbon-name.webp, the buttons are btn-amber.webp and btn-indigo.webp, and the round buttons are in assets/ui/round/.

Pause panel, real screenshot
Pause: Resume, Restart, Map, music and sound on or off, Settings. Texts: keys paused, resume, restart, map.
Settings panel, real screenshot
Settings: volumes, vibration, Reduce motion and the language list. Icons: ic-music, ic-sound, ic-vibrate, ic-motion, ic-globe.
Level complete panel, real screenshot
Level complete: star.webp, orb.webp, the mascot cheer.webp and the rising golden ornaments (lantern.webp, named in css/game.css and css/screens.css). Texts: keys levelComplete, score, moves, newGlimmers, next.
So close panel, real screenshot
Out of moves: the mascot worry.webp and the ornaments lantern.webp (pairs found) and lantern-off.webp (pairs left). Texts: keys soClose, pairsFound, plusMoves, free, tryAgain.
Collection screen, real screenshot
Collection: background assets/bg/shelf-*.webp; the Snowpals of each world and their names (recipe C).
Daily screen, real screenshot
Daily board: icon flame.webp; texts daily, dayStreak, bestMoves, comeBack. Its boards: DAILY_BOARDS in src/config/levels.js.
Level card, real screenshot
Level card: the goal, the moves for each star and the charges of the two powers. Texts: keys goalPairs, goalMoves, noLimit, bonusLevel.
Rule card, real screenshot
The rule card of a new world. Texts: mech.market, mech.woods, mech.bridge, mech.lake (a title and a sentence each). Snow gust picture: wind.webp.
A level of Snowy Peaks, real screenshot
Snowy Peaks: a snow gust swaps two face-down cards every few moves (swapEvery, recipe G).
A level of Starlight Lake, real screenshot
Starlight Lake: each Snowpal is matched with its shadow. The shadow card uses assets/cards/front-moon.webp; its dark color is --shadow-ink in css/theme.css.
A level on a phone held upright, real screenshot
A phone held upright: the same pictures; the board turns so the cards stay big.

4. Recipe A: replace a picture

All pictures are WebP files in assets/: ui/ (buttons, ribbons, panels, icons), bg/ (backgrounds), cards/ (card backs, fronts and Snowpals) and mascot/. The game finds each picture by its file name, so a new picture with the same name simply takes its place.

  1. Find the file with the screens above or by its name.
  2. Open the old picture in your image editor and note its width and height.
  3. Make your new picture with the same width and height and a transparent background (except the backgrounds in assets/bg/). Keep the drawing in the same position inside the picture.
  4. Export as WebP with the exact same name, for example orb.webp, and replace the old file.
  5. Reload the game with Ctrl+F5.
Tip: if your new picture looks too big, too small or cut, its size is different from the old one. Make it exactly the same width and height.
  1. Logo: replace assets/ui/logo.webp (recipe A).
  2. Name in the browser tab: change title: 'Jinglewood Memory' at the top of src/config/game.config.js, and the text between <title> and </title> in index.html (shown while the game loads). The line description in index.html is the text search engines show.
  3. Tab icon: the line rel="icon" in index.html points to assets/ui/star.webp. Point it to another picture, or replace that file.

6. Recipe C: change the cards and the Snowpals

Each world has 12 Snowpals, one picture each, in its own folder (assets/cards/w1/ to w5/). The list of each world is in src/config/card-sets.js:

  w1: {
    folder: 'assets/cards/w1',
    back: 'assets/cards/back-1.webp',
    cards: [
      ['gingerbread-kid', 'Gingerbread Kid'],
      ['snowman-pal', 'Snowman Pal'],
  1. Replace a Snowpal: save a square picture (transparent background works best) over the old file, for example assets/cards/w1/gingerbread-kid.webp.
  2. Rename it: change the second text of its line ('Gingerbread Kid'). This is the name shown in the Collection; it is the same in every language.
  3. Add or use other pictures: put the files in the folder and write one line per picture: the file name without .webp, then the name. The shadows of Starlight Lake and the note each card sings are made by the game from this list.
  4. Keep about 12 pictures per world: the biggest board has 16 pairs and borrows Snowpals from the worlds before.
  5. Card back of a world: back-1.webp to back-5.webp; golden levels use back-gold.webp. Card front (the gift tag frame behind the Snowpal): front.webp; the shadow card of Starlight Lake: front-moon.webp.

7. Recipe D: change the backgrounds and the worlds

Each place has three pictures: -p for portrait screens, -l for landscape and -w for very wide screens (the sides continue the scene). Replace all three with pictures of the same size. Keep the middle calm: the cards and panels sit there.

World (id) Levels Level background Map background Cards
Jinglewood Square
village
1 to 12 assets/bg/w1-p.webp, w1-l.webp, w1-w.webp assets/bg/map-w1-*.webp assets/cards/w1/, back-1.webp
Toy Workshop
market
13 to 24 assets/bg/w2-p.webp, w2-l.webp, w2-w.webp assets/bg/map-w2-*.webp assets/cards/w2/, back-2.webp
Frosted Forest
woods
25 to 36 assets/bg/w3-p.webp, w3-l.webp, w3-w.webp assets/bg/map-w3-*.webp assets/cards/w3/, back-3.webp
Snowy Peaks
bridge
37 to 48 assets/bg/w4-p.webp, w4-l.webp, w4-w.webp assets/bg/map-w4-*.webp assets/cards/w4/, back-4.webp
Starlight Lake
lake
49 to 60 assets/bg/w5-p.webp, w5-l.webp, w5-w.webp assets/bg/map-w5-*.webp assets/cards/w5/, back-5.webp

8. Recipe E: change the mascot or turn it off

  features: {
    mascot: false,

9. Recipe F: change texts and translations

All texts players read are in src/i18n/: en.js (English) and one file per language (pt.js, es.js, de.js...). Each text is a line like these:

  tapToStart: 'Tap to start',
  play: 'Play',
  level: 'Level {n}',
  soClose: 'So close!',
  1. Find the text you want to change (Ctrl+F in your editor). The word before the colon is the key; never change it.
  2. Change only the words inside the quotes. If your text has an apostrophe, like Let's, put double quotes around the text: "Let's go".
  3. Keep markers such as {n}: the game puts a number there.
  4. Change the same key in the other languages you use. A text missing in a language shows in English.
  5. Add a language: copy en.js with the new code (for example sv.js), translate it, and add a line like ['sv', 'Svenska'], to languages in src/config/game.config.js.
  6. Remove a language: delete its line from languages.

10. Recipe G: make the levels easier or harder

Open src/config/levels.js. Each world has 12 lines, one per level, for example:

      { cols: 4, rows: 3, limit: 16, peek: 3 },
Setting What it means Easier
cols, rows Size of the board in landscape (in portrait the game turns it). The number of cards must be even. smaller board
shape Optional drawing of the board, one text per row: X is a card, . is a hole. -
limit Moves the player has (one move = two cards). 0 = no limit. more moves, or 0
peek Seconds every card is shown at the start. 0 = no peek. more seconds
locked How many cards are frozen in ice. fewer
swapEvery Every N moves a snow gust swaps two face-down cards. a bigger N, or remove it
requests true = Tinsel wishes for a Snowpal (bonus points and one move back). -
shadows true = each Snowpal is matched with its shadow. remove it
golden true = bonus level with double points. -
stars Optional [moves for 2 stars, moves for 3 stars]. Without it: 2 x pairs and 1.5 x pairs + 1. bigger numbers
npm test
npm run balance

11. Recipe H: change powers, rewards and points

Open src/config/game.config.js:

  startCharges: { peek: 3, beacon: 2 },
  starLevelReward: { peek: 1, beacon: 0 },
  chestEvery: 9,
  chestReward: { peek: 1, beacon: 1 },
  rescueMoves: 5,
  helpAfterFail: { peek: 1, moves: 2, times: 3 },

Change only the numbers. Keep the commas, braces and names exactly where they are. The game has no store and no real-money purchases.

12. Recipe I: replace music and sounds

Music, sound effects and art are included with the template; you can keep, replace or remove them. Sound files are MP3 in assets/audio/music/ and assets/audio/sfx/, and src/config/audio.js says which file each sound uses:

  sfx: {
    deal: ['deal-1.mp3', 'deal-2.mp3'],
    flip: ['flip-1.mp3'],
    ...
  },
  music: { menu: ['menu.mp3', 'menu-2.mp3'], game: ['game.mp3', 'game-2.mp3'] },
Sound names When they play
flip, flipBack a card turns, cards turn back
match, miss a pair is found, two cards do not match
note the note each Snowpal sings (it climbs with pairs in a row)
trio, streak, lucky three in a row, five in a row, a lucky pair
request, requestDone a new wish, a wish met (Toy Workshop)
locked, creak, unlock a tap on a frozen card, the ice cracks and melts (Frosted Forest)
gust, swap the snow gust and the swap (Snowy Peaks)
peek, beaconArm, beacon the two powers
win, rise, phew, perfect, star, count, bonus the end of a won level and the result panel
lose, rescue, lowMoves out of moves, +5 Moves, the last moves
chest, reward, discover, world, nodeOpen Star Gift, new Snowpal, new world, a level opens on the map
deal, point, panel, button, back, toggle, whoosh cards dealt, points, panels, buttons and screen changes

13. Recipe J: change colors, buttons and the font

14. Recipe K: change the feel (speed, effects, Reduce motion)

src/render/feel.js has every timing and effect of the game in one place, with a comment on each line. Times are in seconds. Some examples:

15. Recipe L: switch the Daily board or the Collection off

In src/config/game.config.js, features has three switches. Change true to false: daily removes the Daily button of the menu, collection removes the Collection button, and mascot is recipe E.

  features: {
    mascot: true,
    daily: false,
    collection: false,
  },

16. Check and publish your changes

  1. Play the parts you changed on your computer (see Before you start), in a wide window and in a narrow one (F12, then Ctrl+Shift+M shows phone sizes).
  2. If you edited source/: in a terminal inside source/, run the commands below. The first checks the rules, the levels and the save; the second copies the game to source/dist/.
npm test
npm run build
  1. Upload everything inside game/ (or source/dist/, if you built it) to your web hosting, replacing the old files.
  2. Open your game address and press Ctrl+F5. If you still see the old version, read the section about updates and cache in the main buyer guide.

17. If something goes wrong