Snowmates · Customization Guide · version 1.0.0 · Main buyer guide

Customization Guide

Make Snowmates your own game: new animals, new backgrounds, your own logo, 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/art/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 jump to any level by adding ?level=12 to the address, for example http://localhost:8080/?level=12. This shortcut does not work on a published site.

Names you will meet in the files

The game was drawn for another theme first, and the file names and the names inside the code were kept so that the rules, the 60 levels and the tests stay exactly the same. Players never see them. This is what the main ones mean:

In the files In the game
fish (code), shoal an animal; the animals of one kind
reef, src/reef.js the home screen (My Snow Village)
pearl, START_PEARLS, pearl.webp the snowflakes, the only currency
kelp, clam-lock, oyster, gold the snow wreath, the locked chest, the treasure chest, the Golden Ornament
scoop, sweep, whirl the helpers Sled, Shovel and Blizzard
coral, kelp, ship, glow, ice, deep the six worlds: Pine Woods, Frozen Lake, Igloo Village, Aurora Night, Glacier Peaks, Crystal Cave
clown, puffer, angel, eel, seahorse, star, crab, tang, box, banner, jelly, octo the 12 animals, in this order (table in recipe C)

2. Where everything is

The numbers on each screenshot match the table below it. Texts are named by their key in src/locales.js (recipe E).

Title screen

Title screen, real screenshot with numbered parts 1 2 3 4 5
# What you see File to change
1 Logo assets/art/logo.webp. The same file is used on the title screen and at the top of the home screen (recipe B).
2 Subtitle ribbon Text: key tagline in src/locales.js (recipe E). Ribbon picture: assets/art/ribbon-coral*.webp.
3 Animals of the title The animal pictures in assets/art/: clown.webp (Maple the fox), puffer.webp (Pip the penguin), angel.webp (Polo the polar bear) and the others (recipe C). The bubbles around them are drawn by src/reef.js.
4 Tap to start button Text: key tapToStart. Glass shape: assets/art/glass-pill.webp.
5 Background assets/art/bg-home.webp for the title and the home screen (recipe D).

Home screen (My Snow Village)

Home screen (My Snow Village), real screenshot with numbered parts 1 2 3 4 5 6 7
# What you see File to change
1 Snowflake counter Snowflake icon: assets/art/pearl.webp (the code still calls the snowflakes pearls). Blue plate: ui-plate*.webp. Starting snowflakes and helper prices: recipe G.
2 Small logo assets/art/logo.webp, the same file as the title screen.
3 Settings button Icon: assets/art/ic-gear.webp. Round button: ui-round-blue.webp.
4 Animals found The same animal pictures used in the levels (recipe C), floating in bubbles. They appear here as the player fills the album.
5 Village decoration Pictures: assets/art/decor-*.webp; round snow patch under it: pedestal.webp. Which level opens each spot and its three choices: PEDESTALS in src/config.js (recipe I).
6 Play button Text: keys play and levelN. Button picture: assets/art/ui-btn-coral*.webp.
7 Album, Journey and Daily Texts: keys album, journey, daily. Icons: ic-book.webp, ic-map.webp, ic-calendar.webp.

Journey map

Journey map, real screenshot with numbered parts 1 2 3 4 5 6
# What you see File to change
1 Back button Icon: assets/art/ic-back.webp.
2 World name Texts: keys w_coral, w_kelp, w_ship, w_glow, w_ice, w_deep. Ribbon: ui-ribbon-gold*.webp.
3 Stars earned Icon: assets/art/ui-star.webp. Three stars per level, 60 levels.
4 Current level Round button: assets/art/ui-round-red.webp; mascot above it: puffer-front.webp; sparkles: sparkle.webp.
5 Locked level Glass ball: assets/art/glass-orb.webp; lock: padlock.webp.
6 World background assets/art/bg-coral.webp, bg-kelp.webp, bg-ship.webp, bg-glow.webp, bg-ice.webp, bg-deep.webp: one per world (recipe D).

A level

A level, real screenshot with numbered parts 1 2 3 4 5 6 7 8
# What you see File to change
1 Level number Text: key level. Plate: assets/art/ui-plate-bl.webp and ui-plate-br.webp.
2 Snowflake counter Snowflake icon: assets/art/pearl.webp (the code still calls the snowflakes pearls). Blue plate: ui-plate*.webp. Starting snowflakes and helper prices: recipe G.
3 Pause button Icon: assets/art/ic-gear.webp. It opens the pause window with the volumes.
4 Top bubbles Drawn by src/render/view.js with assets/art/glass-orb.webp. How many are open at once: floats in recipe F.
5 Bubbles with animals Animals: the pictures of recipe C. Extra pieces: kelp.webp (snow wreath), clam-lock.webp (locked chest), key.webp, oyster.webp (treasure chest), gold*.webp (Golden Ornament). How many animals and kinds: recipe F.
6 Tray Drawn by src/render/view.js. Number of spots: TRAY in src/sim/sim.js (recipe F).
7 The three helpers Pictures: assets/art/pelican.webp (Sled), crab-broom.webp (Shovel), whirl.webp (Blizzard). Names: keys scoop, sweep, whirl. Prices: recipe G.
8 World background assets/art/bg-coral.webp, bg-kelp.webp, bg-ship.webp, bg-glow.webp, bg-ice.webp, bg-deep.webp: one per world (recipe D).

Windows (pause, settings, win, lose) share the same pieces: the glass window is assets/art/glass-panel.webp, the title ribbons are ribbon-coral*.webp (red), ribbon-gold*.webp (yellow) and ribbon-purple*.webp (blue), the buttons are ui-btn-coral*.webp (red) and ui-btn-teal*.webp (green). The file names keep the colors of the first theme: coral now means red, purple means blue, and ui-ribbon-brown*.webp and ui-plate*.webp are blue.

Pause window, real screenshot
Pause: the three volumes, vibration, reduced motion and the language. Icons: ic-music, ic-speaker, ic-mic, ic-phone, ic-motion, ui-globe; switches: ui-toggle-on and ui-toggle-off.
Settings window, real screenshot
Settings, opened from the home screen. The mascot on top is puffer-peek.webp.
Level complete window, real screenshot
Level complete: stars ui-star.webp and ui-star-off.webp, light rays sunburst.webp and rays.webp, the snow burst behind them splash.webp and splash-wide.webp.
Level lost window, real screenshot
Level lost: the sad mascot is puffer-sad.webp. Texts: keys soClose, onlyLeft, tryAgain, secondChance, addsSlot.
Album screen, real screenshot
Album: one glass tile per animal; animals not found yet show ic-question.webp.
A level on a phone held upright, real screenshot
A phone held upright: the same pictures, sized to the screen.

4. Recipe A: replace a picture

All pictures are in assets/art/ in WebP format. 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: animal names (clown, puffer...), bg-* backgrounds, decor-* village decorations, ui-btn-* buttons, ribbon-* and ui-ribbon-* ribbons, ui-plate* blue plates, glass-* glass pieces, ic-* icons.
  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 bg-* backgrounds). Keep the drawing in the same position inside the picture.
  4. Export as WebP with the exact same name, for example pearl.webp (the snowflake), and replace the old file.
  5. Buttons, ribbons and plates come in four files: the whole piece and three slices that let it stretch, for example ui-btn-coral.webp, ui-btn-coral-l.webp (left end), ui-btn-coral-m.webp (middle) and ui-btn-coral-r.webp (right end). Replace all four, cutting your new picture at the same places.
  6. 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/art/logo.webp (recipe A). Keep the same width, height and transparent background.
  2. Browser tab name: open index.html and change the text between <title> and </title>. On the line of the logo, a little below, change the name inside alt="SNOWMATES" too (screen readers read it).
  3. Subtitle under the logo ("Bubble Snow Sort"): key tagline in src/locales.js (recipe E).
  4. Tab icon: replace favicon.ico, next to index.html.

6. Recipe C: change the animals

There are 12 animals and the Golden Ornament. Each one is a set of five pictures in assets/art/: the picture alone and four faces (-x0 normal, -blink eyes closed, -happy, -worry). Replace the whole set, drawing the same animal with the four faces, in the same size and position. The file names come from the first theme of the game (clown.webp is the fox, puffer.webp the penguin, and so on); the table shows which file is which animal, and you may keep the names even if your animals are something else.

# Name in the game Animal Pictures Spoken name
0 Maple fox clown.webp, clown-x0.webp, clown-blink.webp, clown-happy.webp, clown-worry.webp name_0.mp3
1 Pip penguin (the mascot) puffer.webp, puffer-x0.webp, puffer-blink.webp, puffer-happy.webp, puffer-worry.webp name_1.mp3
2 Polo polar bear angel.webp, angel-x0.webp, angel-blink.webp, angel-happy.webp, angel-worry.webp name_2.mp3
3 Luna narwhal eel.webp, eel-x0.webp, eel-blink.webp, eel-happy.webp, eel-worry.webp name_3.mp3
4 Pebble seal seahorse.webp, seahorse-x0.webp, seahorse-blink.webp, seahorse-happy.webp, seahorse-worry.webp name_4.mp3
5 Wally walrus star.webp, star-x0.webp, star-blink.webp, star-happy.webp, star-worry.webp name_5.mp3
6 Rudy reindeer crab.webp, crab-x0.webp, crab-blink.webp, crab-happy.webp, crab-worry.webp name_6.mp3
7 Fuzzy yeti tang.webp, tang-x0.webp, tang-blink.webp, tang-happy.webp, tang-worry.webp name_7.mp3
8 Chilly snowman box.webp, box-x0.webp, box-blink.webp, box-happy.webp, box-worry.webp name_8.mp3
9 Ruby cardinal banner.webp, banner-x0.webp, banner-blink.webp, banner-happy.webp, banner-worry.webp name_9.mp3
10 Hops bunny jelly.webp, jelly-x0.webp, jelly-blink.webp, jelly-happy.webp, jelly-worry.webp name_10.mp3
11 Flurry ice dragon octo.webp, octo-x0.webp, octo-blink.webp, octo-happy.webp, octo-worry.webp name_11.mp3

7. Recipe D: change the backgrounds and the worlds

  1. Backgrounds are in assets/art/: bg-home.webp (title and home) and one per world, in this order: bg-coral.webp (levels 1 to 10, Pine Woods), bg-kelp.webp (11 to 20, Frozen Lake), bg-ship.webp (21 to 30, Igloo Village), bg-glow.webp (31 to 40, Aurora Night), bg-ice.webp (41 to 50, Glacier Peaks), bg-deep.webp (51 to 60, Crystal Cave).
  2. Replace a file with a picture of the same width and height (recipe A). Keep the middle calm, without strong details: the bubbles are drawn there. The sides are shown blurred on wide screens.
  3. World names: keys w_coral, w_kelp, w_ship, w_glow, w_ice, w_deep in src/locales.js (recipe E). The file names stay the same even if your world has another theme; players never see them.

8. Recipe E: change texts and translations

All texts players read are in two files: src/locales.js (English, Portuguese, Spanish) and src/locales-more.js (French, German, Italian, Dutch, Polish, Turkish, Russian, Indonesian, Japanese, Korean, Chinese). Each language is a block of lines like these:

  tapToStart: 'Tap to start',
  play: 'Play',
  levelN: '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.
  5. If you use source/, run npm test: it checks that the 14 languages still have every key and every marker.

The sentences of the guided first levels are the keys g1a, g1b, g1c, g2a, g2b, g2c, and the one-sentence cards of new pieces start with l_. The guided sentences are also spoken: see recipe H.

9. Recipe F: make the levels easier or harder

The 60 levels are not drawn by hand: src/levels.js has the numbers of each level and the game builds the bubbles from them. The first world (levels 1 to 10) is three plain lists, one number per level:

const W1 = {
  fish: [12, 18, 24, 30, 36, 42, 48, 54, 60, 72],
  sp: [2, 3, 4, 4, 5, 5, 6, 6, 6, 7],
  slots: [4, 5, 6, 6, 7, 7, 8, 8, 8, 8],
};
Setting What it means Easier
fish How many animals the level has (the code still uses the old word fish). Always a multiple of 3. fewer
sp / nsp How many different kinds of animal appear. fewer
slots How many bubbles with animals are on the screen at once. shipped values: 4 to 10
floats How many top bubbles are open at once (2, 3 or 4). more
kelp, lock, free, oyster How many snow wreaths, locked chests, free bubbles and treasure chests the level has. fewer snow wreaths and locks, more free bubbles
hard How mixed the animals are, from 0 (grouped) to 0.65. lower
npm run levels
npm test

These two commands need Node.js; the main buyer guide explains how to install it, step by step.

10. Recipe G: change snowflakes and helper prices

export const COST = { scoop: 3, sweep: 3, whirl: 2, chance: 5 };

Change only the numbers. Keep the commas, braces and names exactly where they are. Snowflakes are earned by playing; the game has no store and no real-money purchases.

11. Recipe H: replace music, sounds and voice

Save your audio as MP3 with the same file name and replace the old file.

Recorded sound When it plays
assets/sfx/win.mp3 level complete
assets/sfx/fail.mp3 the tray is full, level lost
assets/sfx/star.mp3 each star on the win window
assets/sfx/pearl.mp3 snowflakes are earned
assets/sfx/unlock.mp3 a locked chest opens, a new-piece card appears, a decoration is placed
assets/sfx/gold.mp3 the Golden Ornament completes a bubble
assets/sfx/oyster.mp3 a treasure chest opens
assets/sfx/scoop.mp3 the Sled helper
assets/sfx/sweep.mp3 the Shovel helper
assets/sfx/whirl.mp3 the Blizzard helper
assets/sfx/chance.mp3 second chance is used

12. Recipe I: change the village decorations

The home screen has 6 decoration spots. Open src/config.js and find PEDESTALS, one line per spot:

{ at: 5, x: 0.15, y: 0.685, opts: ['lighthouse', 'castle', 'tiki'] },
{ at: 30, x: 0.6, y: 0.6, k: 0.86, opts: ['anchor', 'tiki', 'chest'] },

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

14. 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 texts; 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.

15. If something goes wrong