Coral Quest · Customization Guide · version 1.0.0 · Main buyer guide (English, Portuguese, Spanish)

Customization Guide

Make Coral Quest your own game: your own mascot and pieces, logo, backgrounds, sounds, texts and colors, easier or harder levels and other prices. Every recipe below is a short list of steps and names the exact file to open. You do not need to know how to program. Every picture on this page is a real screenshot of the game in this download.

1. Before you start

Free tools:

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

The paths in this guide (for example assets/coral/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 with Ctrl+F5 (Windows) or Cmd+Shift+R (Mac) so the browser does not show the old file. To see a later level without playing up to it, use a private window and the browser console only on your own computer, or simply play: progress is saved in the browser.

Real screenshots of this version: 1280 x 720 on a computer, plus a phone held upright and in landscape. The game adapts to both positions.

3. Where everything is

The numbers on each screenshot match the table below it. Text keys such as play are explained in recipe F.

Home screen

Home screen, real screenshot with numbered parts 1 2 3 4 5 6
# What you see File to change
1 Play button Text: key play in src/i18n/en.js (one file per language). Button picture: assets/coral/button.webp.
2 Reef restorations counter Text: key cafe ("Reef"). The coral icon is cut from assets/coral/pieces-sheet.webp by src/coral-sprites.js (recipe C).
3 Settings button Picture: assets/coral/settings-white.webp.
4 Sound button Icon: the sixth cell of assets/coral/icons.webp (recipe C).
5 Octopus mascot Home screen: assets/coral/octopus-home-hd.webp. Poses during play: assets/coral/octopus-sheet.webp (8 poses); idle animation: assets/coral/octopus-idle.webp (8 frames). Recipe C.
6 Game logo assets/coral/logo.webp (1774 x 887, transparent background). Also used on the loading screen, the map and above the board (recipe B).

Level map

Level map, real screenshot with numbered parts 1 2 3 4 5 6
# What you see File to change
1 Level buttons on the map assets/coral/marker-current.webp (next level), assets/coral/marker-unlocked.webp (won), assets/coral/marker-locked.webp (locked).
2 World name Keys w0 ... w4 (Coral Reef ... Pearl Kingdom). Map picture: assets/coral/map-land.webp, frame assets/coral/map-frame-land.webp (and the -portrait versions for phones held upright).
3 Board chest Icons: first two cells of assets/coral/icons.webp. Reward (+200 coins and one of each booster): SAVE.coins += 200 in src/app/screens.js.
4 Previous / next world Picture: assets/coral/arrow-pearl.webp.
5 Reef restorations counter Text: key cafe ("Reef"). The coral icon is cut from assets/coral/pieces-sheet.webp by src/coral-sprites.js (recipe C).
6 Home button Icon: a cell of assets/coral/icons.webp.

Playing a level (World 1, Coral Reef)

Playing a level (World 1, Coral Reef), real screenshot with numbered parts 1 2 3 4 5 6 7
# What you see File to change
1 Board and pieces World 1 pieces: assets/coral/pieces-sheet.webp; worlds 2-5: assets/coral/pieces-world-1.webp ... pieces-world-4.webp (recipe C). Backgrounds: assets/coral/world-1-reef.webp (world 1) and world-2.webp ... world-5.webp.
2 Level goals The icons are the pieces themselves. How many to collect: recipe G (src/game/levels.js).
3 Moves left Moves of each level: moves in src/game/levels.js (recipe G).
4 Boosters (Trident, Shell Rocket) Pictures: assets/coral/boosters.webp (two cells). Names: keys whisk and rocket. Price: recipe H.
5 Octopus mascot Home screen: assets/coral/octopus-home-hd.webp. Poses during play: assets/coral/octopus-sheet.webp (8 poses); idle animation: assets/coral/octopus-idle.webp (8 frames). Recipe C.
6 Pause button Icon: the last cell of assets/coral/icons.webp.
7 Coins The coin icon is piece 6 of assets/coral/pieces-sheet.webp. Rewards and prices: recipe H.

Settings

Settings, real screenshot with numbered parts 1 2 3
# What you see File to change
1 Language list Icon: assets/coral/setting-language.webp. The languages offered: LANGS in src/app/screens.js (recipe F).
2 Settings rows Icons: assets/coral/setting-vibration.webp and assets/coral/setting-motion.webp; texts: keys vibration and reduced.
3 Window title ribbon Picture: assets/coral/title-ribbon.webp; texts: keys settings, sound, paused, outMoves.

Tutorial on level 1

Tutorial on level 1, real screenshot with numbered parts 1 2
# What you see File to change
1 Tutorial tip Texts: keys swapTip, tutGoals, tutMoves and the th* keys. Steps of the tutorial: src/app/tutorial.js.
2 Tutorial hand Picture: assets/mao.webp.

Victory with a restoration step

Victory with a restoration step, real screenshot with numbered parts 1 2 3
# What you see File to change
1 Stars Picture: assets/ui-estrela.webp. How many moves left give 2 or 3 stars: recipe H.
2 Restoration progress The picture is assets/coral/reno-after-1.webp for world 2 (one before/after pair per world, recipe D). Window frame: assets/coral/victory-frame.webp.
3 Next button Picture: assets/coral/button.webp; text: key next.

Restoration screen

Restoration screen, real screenshot with numbered parts 1 2 3
# What you see File to change
1 Restored place Before and after pictures: assets/coral/reno-before-0.webp / reno-after-0.webp for world 1 ... reno-before-4.webp / reno-after-4.webp for world 5 (recipe D).
2 Restoration steps Title: keys rt1 ... rt4 (and cafeUpgT for world 1). Seven steps per world: const R = 7 in src/app/core.js.
3 Continue Text: key cont.

Out of moves (defeat)

Out of moves (defeat), real screenshot with numbered parts 1 2 3
# What you see File to change
1 Window title ribbon Picture: assets/coral/title-ribbon.webp; texts: keys settings, sound, paused, outMoves.
2 Continue Text: key cont.
3 Retry Text: key retry. The "+5 moves" price is movesCost in src/app/flow.js (recipe H).

4. Recipe A: replace a picture

All pictures are WebP files (one PNG) inside assets/. The game finds each picture by its file name, so a new picture with the same name simply takes its place.

Folder What is inside
assets/coral/ All the ocean art: backgrounds world-* and home.webp, map map-* and markers marker-*, windows panel.webp and victory-frame.webp, buttons button.webp, banners ocean-banner.webp and title-ribbon.webp, settings icons setting-*, the logo, the restored places reno-* and the sprite sheets (recipe C).
assets/ Small effects: stars, sparkles, confetti ribbons, rays, the tutorial hand and arrow.
assets/audio/ Sound effects, voice lines and music (recipe E).
assets/fonts/ The Fredoka font (recipe I).
  1. Find the file with the numbered screens or by its name in the folders above.
  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 and the restored places). Keep the subject in the same place inside the picture.
  4. Export as WebP with the exact same name, for example assets/coral/button.webp, and replace the old file.
  5. Reload the game with Ctrl+F5.
Tip: buttons, banners and ribbons are stretched to fit their text, so a recolored version of the same picture always fits. A completely new shape works best with the same proportions as the old one.
  1. Logo: replace assets/coral/logo.webp (1774 x 887, transparent background). It is used on the loading screen, the home screen, the map and above the board.
  2. Browser tab name: open index.html and change the text between <title> and </title>. Also change the alt="Coral Quest" texts of the logo pictures (search for Coral Quest).
  3. Browser bar color on phones: the theme-color line in index.html.
  4. Loading screen colors: the #splash rule in the <style> block at the top of index.html.

6. Recipe C: change the octopus, the pieces and the icons (sprite sheets)

Several small pictures are stored together in one sprite sheet: a picture divided into a grid of equal cells. src/coral-sprites.js cuts the cells when the game starts. To replace one, keep the sheet size and draw your new picture inside the same cell, centered, with a transparent background.

Sheet Grid Cells, left to right, top to bottom
assets/coral/octopus-sheet.webp 4 x 2 octopus poses: neutral (HUD), wave, joy, thinking, worried, grumpy, wow, champion
assets/coral/octopus-idle.webp 4 x 2 8 frames of the idle animation (played in a loop)
assets/coral/pieces-sheet.webp 4 x 3 the 6 pieces of world 1 (cells 1-6), then extra icons; cell 6 is also the coin and cell 11 the reef icon
assets/coral/pieces-world-1.webp ... pieces-world-4.webp 3 x 2 the 6 pieces of worlds 2, 3, 4 and 5
assets/coral/specials.webp 4 x 1 striped (row), striped (column), sea bomb, magic pearl
assets/coral/boosters.webp 2 x 1 Trident, Shell Rocket
assets/coral/icons.webp 4 x 2 open chest, closed chest, badge, settings, home, sound, back, pause
  1. Open the sheet in Photopea and turn on the grid (View, Show, Grid) with the cell size: the sheet width divided by the columns, the height divided by the rows.
  2. Paste your picture in a new layer inside the cell you want to change. Leave a small empty margin around it.
  3. Hide or delete the old drawing in that cell, export the sheet as WebP with the same name and reload.
  4. The large octopus on the home screen is a separate picture: assets/coral/octopus-home-hd.webp.
  5. Piece colors used by the sparkles when pieces clear: COLORS in src/config.js (one color per piece, in the same order).

7. Recipe D: change the backgrounds and the restored places

8. Recipe E: replace sounds, music and voice

Sound effects are short MP3 files in assets/audio/sfx/. Replace a file with another MP3 of the same name. If a file is missing, the game plays a simple built-in tone instead.

File When it plays
assets/audio/sfx/tap.mp3 a piece is selected
assets/audio/sfx/swap.mp3 two pieces swap
assets/audio/sfx/bad.mp3 a swap that makes no match slides back
assets/audio/sfx/pop1.mp3, assets/audio/sfx/pop2.mp3, assets/audio/sfx/pop3.mp3 pieces clear (bigger cascades use the higher sounds)
assets/audio/sfx/line.mp3 a striped piece clears a row or column
assets/audio/sfx/bomb.mp3 a sea bomb goes off
assets/audio/sfx/star.mp3 a magic pearl clears a kind
assets/audio/sfx/special.mp3 a special piece is created
assets/audio/sfx/goal.mp3, assets/audio/sfx/fly.mp3 a piece flies to the goals
assets/audio/sfx/star1.mp3 a star appears on the victory window
assets/audio/sfx/win.mp3, assets/audio/sfx/lose.mp3 victory / out of moves
assets/audio/sfx/coin.mp3 coins are counted
assets/audio/sfx/unlock.mp3 a level or a restoration step unlocks
assets/audio/sfx/button.mp3, assets/audio/sfx/whoosh.mp3 buttons and screen changes

9. Recipe F: change texts and translations

All interface texts are in one file per language: src/i18n/en.js, pt.js, es.js, fr.js, de.js, it.js, nl.js, pl.js, tr.js, ru.js, id.js, ja.js, ko.js and zh.js.

  play: 'Play',
  whisk: 'Trident',
  rocket: 'Shell rocket',
  w0: 'Coral Reef',
  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 it: "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 missing translation falls back to English.
  5. Short names fit the buttons better: check the screen on a phone after a change.

Remove a language: delete it from LANGS in src/app/screens.js and from the list L (and its import line) in src/i18n.js. Add one: copy en.js to a new file, translate it, and add it in the same two places. Run npm test to check that every key is there.

10. Recipe G: make the levels easier or harder

The 100 levels are built by the function level(n) in src/game/levels.js from a few numbers. Change one number at a time and play a few levels.

Setting What it means Easier
moves Moves of each level (16 to 24). higher
base How many pieces the main goal asks for; it grows with the level number. lower
easy Every 5th level is a break: its goal is multiplied by 0.6. lower number
hard Levels 9, 19, 29... have 2 moves less and pay double coins. remove the - 2
kinds Different pieces on the board (5 before level 10, then 6). Fewer kinds = more matches. 5
CREAM The five bubble square patterns (1 = one layer, 2 = two layers, . = empty), used from level 4. fewer 1/2
  const moves = n === 2 || n === 4 ? 14 : n < 8 ? 16 : ...   // add 2 to every level: (...) + 2

Keep the commas, brackets and quotes exactly where they are. With Node.js, run npm test in source/ after a change: a test checks that all 100 levels still start with a valid move and goals. Game feel (speeds, shake, hint delay, vibration) is in src/config.js.

11. Recipe H: change prices and rewards

Prices are in in-game coins only (there are no real-money purchases).

Setting File What it changes
coins: 60 (in SAVE) src/app/core.js Coins of a new player.
boost: { whisk: 3, rocket: 3 } src/app/core.js Boosters of a new player.
PRICE.booster src/app/flow.js Price of one Trident or Shell Rocket when the stock is empty (80).
movesCost src/app/flow.js Price of "+5 moves" after a defeat: free on levels 1-6, then 50 plus 10 for every use.
coins = (stars * 10 + bonus + combo) src/app/flow.js Coins for a win: 10 per star, 2 per move left, 10 for a big combo; double on hard levels.
stars = frac >= 0.35 ? 3 : frac >= 0.12 ? 2 : 1 src/app/flow.js Stars by the share of moves left (35% or more = 3 stars).
SAVE.coins += 200 src/app/screens.js Coins inside the chest of each board.

12. Recipe I: change colors and the font

13. Internal names used in the code

Coral Quest is built on the same match-3 engine as an earlier café-themed game, so some file and code names are neutral leftovers. Players never see them; the names they see come from src/i18n/.

In the code and files In the game
cafe, reno, renovation, RENO, #cafe-screen The reef restorations (7 per world) and their counter
panda, #panda, data-octopus The octopus mascot
cream, CREAM Bubble squares (obstacle)
whisk / rocket Trident / Shell Rocket boosters
moeda, coin, data-coin Coins (drawn as a pearl shell)
data-reef The coral icon of the reef counter
peca, piece, esp-* Board pieces and special pieces
fases, mapa, mundo Levels, map and worlds
assets/audio/musica/, assets/audio/voz/ The music and voice folders

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 phone size (in Chrome or Edge press F12, then Ctrl+Shift+M).
  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 finished game into game/.
npm test
npm run build
  1. Upload everything inside game/ to your web hosting, replacing the old files and keeping the folders.
  2. Open your game address and press Ctrl+F5. If you still see the old version, read "Updating and cache" in the main buyer guide.
  3. Saved progress belongs to each website address. If you host two copies on the same domain, give each its own save name: SAVE_KEY near the top of src/app/core.js.

15. If something goes wrong