Starmates · Customization Guide · version 1.0.0 · Main buyer guide

Customization Guide

Make Starmates your own game: new buddies, 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.

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 seeFile to change
1Logoassets/art/logo.webp. The same file is used on the title screen and at the top of the home screen (recipe B).
2Subtitle ribbonText: key tagline in src/locales.js (recipe E). Ribbon picture: assets/art/ribbon-coral*.webp.
3Buddies of the titleThe buddy pictures in assets/art/: clown.webp (Ziggy), puffer.webp (Bolt), angel.webp (Cosmo) and the others (recipe C).
4Tap to start buttonText: key tapToStart. Glass shape: assets/art/glass-pill.webp.
5Backgroundassets/art/bg-home.webp for the title and the home screen (recipe D).

Home screen (My Space Base)

Home screen (My Space Base), real screenshot with numbered parts 1 2 3 4 5 6 7
#What you seeFile to change
1Crystal counterCrystal icon: assets/art/pearl.webp. Purple plate: ui-plate*.webp. Starting crystals and helper prices: recipe G.
2Small logoassets/art/logo.webp, the same file as the title screen.
3Settings buttonIcon: assets/art/ic-gear.webp. Round button: ui-round-blue.webp.
4Buddies you foundThe same buddy pictures used in the levels (recipe C). They appear here as the player fills the album.
5Base decorationPictures: assets/art/decor-*.webp; landing pad: pedestal.webp. Which level opens each spot and its three choices: PEDESTALS in src/config.js (recipe I).
6Play buttonText: keys play and levelN. Button picture: assets/art/ui-btn-coral*.webp (the orange one).
7Album, Journey and DailyTexts: 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 seeFile to change
1Back buttonIcon: assets/art/ic-back.webp.
2World nameTexts: keys w_coral, w_kelp, w_ship, w_glow, w_ice, w_deep. Ribbon: ui-ribbon-gold*.webp.
3Stars earnedIcon: assets/art/ui-star.webp. Three stars per level, 60 levels.
4Current levelRound button: assets/art/ui-round-red.webp (orange); mascot above it: puffer-front.webp (Bolt, the robot); sparkles: sparkle.webp.
5Locked levelGlass ball: assets/art/glass-orb.webp; lock: padlock.webp.
6World backgroundassets/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 seeFile to change
1Level numberText: key level. Plate: assets/art/ui-plate-bl.webp and ui-plate-br.webp.
2Crystal counterCrystal icon: assets/art/pearl.webp. Purple plate: ui-plate*.webp. Starting crystals and helper prices: recipe G.
3Pause buttonIcon: assets/art/ic-gear.webp. It opens the pause window with the volumes.
4Top bubblesDrawn by src/render/view.js with assets/art/glass-orb.webp. How many are open at once: floats in recipe F.
5Bubbles with buddiesBuddies: the pictures of recipe C. Extra pieces: kelp.webp (asteroid ring), clam-lock.webp (locked capsule), key.webp, oyster.webp (crystal capsule), gold*.webp (Golden Orb). How many buddies and kinds: recipe F.
6TrayDrawn by src/render/view.js. Number of spots: TRAY in src/sim/sim.js (recipe F).
7The three helpersPictures: assets/art/pelican.webp (Beam, the flying saucer), crab-broom.webp (Sweep, the robot vacuum), whirl.webp (Warp, the black hole). Names: keys scoop, sweep, whirl. Prices: recipe G.
8World backgroundassets/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 (orange), ribbon-gold*.webp (yellow) and ribbon-purple*.webp (blue), the buttons are ui-btn-coral*.webp (orange) and ui-btn-teal*.webp (blue). The file names keep the colors of the older theme: a name with coral is now orange, teal is blue, and ui-plate* and ui-ribbon-brown* are purple.

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 robot 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, star dust cloud splash*.webp.
Level lost window, real screenshot
Level lost: the sad robot is puffer-sad.webp. Texts: keys soClose, onlyLeft, tryAgain, secondChance, addsSlot.
Album screen, real screenshot
Album: one glass ball per buddy (glass-orb.webp); buddies not met 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: buddy names (clown, puffer...), bg-* backgrounds, decor-* base decorations, ui-btn-* buttons, ribbon-* and ui-ribbon-* ribbons, ui-plate* purple 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, 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="STARMATES" too (screen readers read it).
  3. Subtitle under the logo ("Bubble Space Sort"): key tagline in src/locales.js (recipe E).
  4. Tab icon: replace favicon.ico, next to index.html.

6. Recipe C: change the buddies

There are 12 buddies and the Golden Orb. 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 buddy with the four faces, in the same size and position. The file names are the ones of the older theme (see the table); the pictures are the new buddies.

#Name in the gamePicturesSpoken name
0Ziggy, the orange alienclown.webp, clown-x0.webp, clown-blink.webp, clown-happy.webp, clown-worry.webpname_0.mp3
1Bolt, the yellow robot (mascot)puffer.webp, puffer-x0.webp, puffer-blink.webp, puffer-happy.webp, puffer-worry.webpname_1.mp3
2Cosmo, the baby astronautangel.webp, angel-x0.webp, angel-blink.webp, angel-happy.webp, angel-worry.webpname_2.mp3
3Blip, the purple three-eyed alieneel.webp, eel-x0.webp, eel-blink.webp, eel-happy.webp, eel-worry.webpname_3.mp3
4Twinkle, the pink little starseahorse.webp, seahorse-x0.webp, seahorse-blink.webp, seahorse-happy.webp, seahorse-worry.webpname_4.mp3
5Gloop, the green one-eyed alienstar.webp, star-x0.webp, star-blink.webp, star-happy.webp, star-worry.webpname_5.mp3
6Zoom, the red rocketcrab.webp, crab-x0.webp, crab-blink.webp, crab-happy.webp, crab-worry.webpname_6.mp3
7Drift, the blue space jellyfishtang.webp, tang-x0.webp, tang-blink.webp, tang-happy.webp, tang-worry.webpname_7.mp3
8Ringo, the little ringed planetbox.webp, box-x0.webp, box-blink.webp, box-happy.webp, box-worry.webpname_8.mp3
9Rocky, the meteorbanner.webp, banner-x0.webp, banner-blink.webp, banner-happy.webp, banner-worry.webpname_9.mp3
10Moony, the crescent moon in a nightcapjelly.webp, jelly-x0.webp, jelly-blink.webp, jelly-happy.webp, jelly-worry.webpname_10.mp3
11Orbit, the silver satelliteocto.webp, octo-x0.webp, octo-blink.webp, octo-happy.webp, octo-worry.webpname_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, Lunar Plains), bg-kelp.webp (11 to 20, Nebula Gardens), bg-ship.webp (21 to 30, Red Planet), bg-glow.webp (31 to 40, Ring World), bg-ice.webp (41 to 50, Crystal Planet), bg-deep.webp (51 to 60, Deep Space).
  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],
};
SettingWhat it meansEasier
fishHow many buddies the level has (the name comes from the older theme). Always a multiple of 3.fewer
sp / nspHow many different kinds of buddy appear.fewer
slotsHow many bubbles with buddies are on the screen at once.shipped values: 4 to 10
floatsHow many top bubbles are open at once (2, 3 or 4).more
kelp, lock, free, oysterHow many asteroid rings, locked capsules, free bubbles and crystal capsules the level has.fewer rings and locks, more free bubbles
hardHow mixed the buddies 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 crystals 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. Crystals 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 soundWhen it plays
assets/sfx/win.mp3level complete
assets/sfx/fail.mp3the tray is full, level lost
assets/sfx/star.mp3each star on the win window
assets/sfx/pearl.mp3crystals are earned
assets/sfx/unlock.mp3a locked capsule opens, a new-piece card appears, a decoration is placed
assets/sfx/gold.mp3the Golden Orb completes a bubble
assets/sfx/oyster.mp3a crystal capsule opens
assets/sfx/scoop.mp3the Beam helper
assets/sfx/sweep.mp3the Sweep helper
assets/sfx/whirl.mp3the Warp helper
assets/sfx/chance.mp3second chance is used

12. Recipe I: change the base decorations

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

{ at: 5, x: 0.15, y: 0.685, opts: ['lighthouse', 'castle', 'tiki'] },

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