Polar Games

HTML5 Word Search Game · 1.0.0

Ocean Words — Buyer Guide

Install the ready-to-play game by uploading its files. This guide covers installation, how to play, every screen, the settings file, the ten languages, saved progress, customizing and the optional source code.

Version 1.0.0 Edition CodeCanyon buyer edition

This guide works without internet. Images, styles and scripts are already inside this file.

Contents
  1. Overview and package contents
  2. Installing the game
  3. Requirements
  4. How to play
  5. The screens
  6. What is in the package
  7. The settings file
  8. Customizing the game
  9. Languages
  10. Saved progress
  11. Building from the source (optional)
  12. Updating the game
  13. Credits and licences
  14. Solving problems
  15. Frequently asked questions
  16. Support and version history
  17. For AI assistants

1 Overview and package contents

Ocean Words is a standalone HTML5 word search game. Players slide a finger or the mouse across a grid of letters to find the hidden words of a theme. Words hide across, down, backwards and on diagonals. Every find is celebrated with glowing marks, flying words, a combo and sound.

The game plays in ten languages (English, Portuguese, Spanish, French, German, Italian, Dutch, Polish, Turkish and Indonesian), each with its own word lists written for that language. It has 35 themes of 30 words (more than 1000 words per language), a 15-level campaign, a daily puzzle with a day streak, scores, combos and stars. There are no ads, no accounts, no payments and no online service: everything is saved on the device that plays.

Item Where in the ZIP
Ready-to-play game (upload its contents) game/
This buyer guide (14 languages, works offline) documentation/index.html
Shortcut to the guide at the root DOCUMENTATION.html
Optional source code (for developers only) source/
Licence notices for everything that is not original THIRD-PARTY-LICENSES/, game/licenses/
Version history CHANGELOG.md

This guide describes version 1.0.0. Open documentation/index.html by double-clicking it: it needs no internet and no server.

2 Installing the game

The game is a set of static files. You do not install anything on the server: you upload the contents of the game/ folder.

  1. Unzip the download on your computer.
  2. Connect to your web hosting with FTP, SFTP or your host's file manager.
  3. Create the folder where the game will live, for example public_html/words/ (or use the site's root folder).
  4. Upload the CONTENTS of the game/ folder into it: index.html must end up directly inside that folder.
  5. Open the address in a browser, for example https://your-site.com/words/. The game shows its start screen with "Tap to start".
public_html/words/
├── index.html
├── aurora.config.js
├── audio-idle.js
├── assets/
├── art/
├── audio/
├── data/
├── lib/
└── licenses/
Warning Upload game/, never source/. The source/ folder is only for editing the game on your computer and does not run on a server. Do not open index.html by double-clicking it either: browsers block the word lists and the scripts when a page is opened from your disk, so it must be opened through a web address.
Tip You can test on your own computer with any local web server (WAMP, XAMPP, MAMP, or python -m http.server inside game/), and open http://localhost/....

3 Requirements

  • Any static web hosting: Apache, Nginx, shared hosting, a CDN, Netlify, GitHub Pages, Amazon S3 and similar. No PHP, no database and no Node.js on the server.
  • HTTPS is recommended. Sound, full screen and vibration work best on a secure address.
  • Current Chrome, Edge, Firefox and Safari 16.4 or newer, on computer, phone and tablet. The game uses ES modules and an import map, which older browsers do not support.
  • The server must send each file with its usual type: .js as JavaScript, .json as JSON, .webp as WebP, .mp3 as MP3 and .woff2 as a font. Normal hosting does this by default.

The game never contacts another website: there is no analytics, no font server, no ad network and no external script. The browser only reads the files you uploaded.

Tip The game can sit in a sub-folder or behind a CDN: every path is relative, so it works wherever you put the folder.

4 How to play

Each round has a theme (Ocean, Space, Kitchen and so on) and ten words, shown five at a time in grids. Find every word of a grid to move on to the next one. The round ends when all ten are found: the game never ends in failure, so there is always a way to finish.

Marking a word

  • Mouse or finger: press the first letter of a word and slide to its last letter, then let go. Either end of the word works, and a slightly crooked slide snaps to the nearest straight line.
  • Two taps: tap the first letter, then tap the last letter. This helps on small screens and with a trackpad.
  • Keyboard: arrow keys move the cursor, Space or Enter marks the first letter and then the last, Esc cancels, and the ? key uses a hint.
  • Tap a word in the list to aim the next hint at that word.

Hints and help

  • Each round gives three hints. The first marks the first letter of a word, the second adds its second letter (which shows the direction) and the third traces the whole word.
  • If a player is stuck for 45 seconds, or slides wrong three times in a row, the game points at the Hint button. A hint is always available when needed: no player is left unable to finish.
  • A slide that starts a word correctly but stops too early is shown as "Almost!" and is not counted as a mistake.

Points, combo and stars

What Value
Each word 10 points per letter
Word on a diagonal +50% of the letters' points
Word hidden backwards +50% of the letters' points
Word found with a hint Half the points
Combo Words found within a few seconds of each other multiply points up to ×5; a wrong slide or a hint ends the combo. The window is 8 seconds and can be changed in the settings file.
Stars 3 stars for no misses and no hints, 2 stars for up to two misses and hints together, otherwise 1 star
Best score Saved on the device for each theme, each campaign level and each day, with a "New best!" moment

Ways to play

Mode What it does
Quick Play A random theme every round, never the same twice in a row.
Categories Choose any of the 35 themes.
Campaign 15 levels, each unlocked by finishing the one before. The levels get harder (see below).
Daily The same puzzle all day for every player of the same language, and a day streak for finishing it on consecutive days.
Campaign levels Difficulty
1–3 Five words, hidden across and down only.
4–6 Eight words; backwards words join in.
7–10 Ten words; diagonals join in.
11–15 Ten words in every direction, and only one hint.
Tip Players who prefer less motion can turn on Calm mode in Settings. The game also follows the device's "reduce motion" setting.

5 The screens

These are real screenshots of the game. The numbers on each picture match the list under it.

The start menu with the Ocean Words logo and five play buttons.
The start menu.

Marks on the screenshot

  1. Sound on or off.
  2. Full screen.
  3. How to play, with a tutorial.
  4. Settings.
  5. Quick Play: a random theme.
  6. Categories: pick a theme.
  7. Campaign: the 15 levels.
  8. Daily puzzle, with the day streak when there is one.
  9. Language chip: opens the list of languages.
The category screen with a grid of theme pictures.
Categories: 35 themes, five per row, each with its own picture.

Marks on the screenshot

  1. Back to the menu.
  2. Title; scroll down for the other themes.
  3. A theme: tap it to start a round.
The campaign screen with fifteen level tiles.
The campaign: levels unlock one after another and keep their stars.

Marks on the screenshot

  1. The selected level, its theme and what makes it harder.
  2. The level to play now, with the stars it has earned.
  3. A locked level: finish the previous one first.
  4. Play the selected level.
A word search grid with three found words and a combo.
A round in progress.

Marks on the screenshot

  1. Restart the round.
  2. Words found so far.
  3. Score.
  4. Progress through the grids, and the theme.
  5. The combo: its bar empties until the next find.
  6. The words to find; found words are struck through.
  7. The letter grid. Found words keep a glowing mark in their own colour.
  8. Hint, with the hints left.
The results screen with stars, a score and four statistics.
The results screen.

Marks on the screenshot

  1. Result and theme.
  2. Stars for how cleanly the round was played.
  3. Score and best score.
  4. Time, best combo, hints used and misses.
  5. All the words found.
  6. Play again, or go back to the levels in the campaign.
The settings panel with volume sliders and a Calm mode switch.
Settings.

Marks on the screenshot

  1. Music volume.
  2. Sound effects volume.
  3. Narrator voice volume.
  4. Calm mode: less motion.
  5. Language.
  6. Close.
The language list with ten languages.
The language list. The choice is remembered on the device.

Marks on the screenshot

  1. The language in use.
  2. Any other language: the whole game changes at once, including the word lists.
  3. Close.

6 What is in the package

Folder or file What it is
game/index.html The game's page.
game/aurora.config.js The settings file you can edit (see the next section).
game/assets/ The game's scripts (one per language, and a few for the game itself), the stylesheets, the fonts and the backdrop pictures.
game/art/ The logo, the tutorial hand and one picture per theme (art/categories/<id>.webp).
game/audio/ The music, and the narrator's recordings in English, Portuguese and Spanish.
game/data/themes/ One word list per language, for example en.json, fr.json.
game/lib/phaser/ The Phaser library, unminified and unchanged, with its licence.
game/licenses/ Licences of the fonts and the library.
source/ The editable source code (optional), with tests.

Every script and stylesheet is readable: nothing is minified, and each file ends with a comment such as End of assets/rules.js.

7 The settings file

Open aurora.config.js in any text editor, change a value, save, and upload it again. No rebuild is needed. Every line is optional: delete a line to use its default. A mistake in the file never stops the game; the wrong value is ignored.

window.AURORA_CONFIG = {
  storagePrefix: 'oceanWords',
  language: 'auto',
  languages: ['en', 'pt', 'es', 'fr', 'de', 'it', 'nl', 'pl', 'tr', 'id'],
  dailyChallenge: true,
  comboSeconds: 8,
};
Setting What it does Default
storagePrefix The start of the names the game uses to save progress in the browser. Give every site or copy of the game on the same domain its own prefix, or they will share saves. 'oceanWords'
language 'auto' follows the player's browser. Or give one language code to start in that language until the player picks another. 'auto'
languages The languages in the language list. Remove codes to offer fewer languages. all ten
dailyChallenge true shows the Daily button; false hides it. true
comboSeconds How long a combo lasts between two found words, from 2 to 30. 8
Warning Changing storagePrefix after players have started makes the game forget their saved stars and scores, because it looks for them under the new name. Choose it once, before you publish.

Players change the sound volumes, Calm mode and the language themselves in the Settings panel; those choices are saved on their device too.

8 Customizing the game

Words and themes

The word lists are plain JSON files in data/themes/, one per language. Open the file of the language you want to change in any text editor. You can do this in the uploaded game or in source/public/data/themes/.

{
  "wordsPerRound": 10,
  "themes": [
    {
      "id": "ocean",
      "name": "Ocean",
      "words": ["coral", "shark", "dolphin", "octopus", "seaweed"]
    }
  ]
}
  • id: a short name made of lowercase letters, the same in every language file. It selects the theme's picture and keys its best scores.
  • name: the title players see (up to 24 characters).
  • words: at least wordsPerRound words. Each word has 3 to 10 letters once accents are removed (ÇÃO hides as CAO), and is a single word with no spaces or hyphens. Words that do not fit are skipped, so a typo never breaks the game.
  • wordsPerRound is how many words a round uses, five per grid (10 means two grids).
  • Optional emoji: shown instead of a picture for that theme.

To add a theme, add it to every language file you offer, with the same id. Its picture is the file art/categories/<id>.webp (a square image with a transparent background, about 1254 × 1254 pixels). Without a picture and without an emoji, the theme shows a small star.

Pictures and sound

  • Logo: replace art/ocean-logo.webp with your own image of a similar shape (keep the file name).
  • Backdrop: the two pictures in assets/ whose names start with ocean-scene and ocean-portrait are the background on wide and tall screens. Replace them with images of the same shape, keeping the file names.
  • Music: replace audio/music/bubble-quest.mp3 with your own loop, keeping the name.
  • Narrator: the recordings are in audio/narrator/en/, pt/ and es/, one file per line. A line without a file is simply not spoken and its caption is shown.

Colours and layout

The colours, sizes and animations are in source/src/styles.css, styles-more.css and base.css. The main colours are variables at the top of styles.css (the sections starting :root). After editing, rebuild the game as explained in the section "Building from the source".

Adding a language

  1. Copy source/src/i18n/en.ts to <code>.ts, translate the texts and keep every {…} written in braces.
  2. Copy source/public/data/themes/en.json to <code>.json and write native words for each of the 35 themes.
  3. Register the code in source/src/i18n/index.ts (the lists LANGS, LANG_NAMES and DICTS), and in languages in aurora.config.js.
  4. Add a list of words the random filler letters must never spell to source/src/i18n/blocked.ts.
  5. Run node tools/check-lang.mjs <code> and npm test, then rebuild.
Note The narrator is recorded in English, Portuguese and Spanish. A language without its own recordings plays the English narrator and shows its captions in the player's language. Recording your own lines needs a text-to-speech account of your own; tools/gen-voice.py shows how.

9 Languages

The interface and the word lists are available in English, Portuguese (Brazil), Spanish, French, German, Italian, Dutch, Polish, Turkish and Indonesian. The game starts in the language of the player's browser when it is one of these, and in English otherwise. Players change it with the language chip on the menu or in Settings, and the game remembers the choice.

The word lists are written natively for each language, not translated word by word, so every language has its own set of 35 themes with 30 words each. Words may use accents and special letters (such as ç, ñ, ü, ğ, ł); inside the grid they appear without them.

Narration is recorded in English, Portuguese and Spanish. The other languages hear the English narrator while the on-screen captions are in their own language. This guide itself is available in 14 languages from the menu at its top.

Tip To open the game in a given language, add ?lang=fr (or another code) to its address.

10 Saved progress

The game saves in the browser of the device that plays, using local storage. There is no account and nothing is sent to any server.

  • Settings (volumes, Calm mode, language), the campaign stars and unlocked levels, the best scores and the daily streak are saved separately.
  • Every saved name starts with the storagePrefix from the settings file, followed by a dot and a short word: .prefs.v1, .campaign.v1, .best.v1 and .daily.v1.
  • Saves belong to one browser on one device. Another browser or device starts fresh, and so does a private window.
  • To start over, clear the site's data in the browser, or use "Clear site data" in the developer tools for the game's address.
Note Several games on the same domain share one browser storage. That is why the settings file lets you choose a different storagePrefix for each.

11 Building from the source (optional)

You do not need this to run the game. It is for people who want to change the code, the colours or the languages. The ready-to-play files in game/ were made from the source/ folder with the steps below.

Step by step for beginners

  1. Install Node.js 22.12 or newer (the "LTS" version) from nodejs.org. On Windows and macOS use the installer; on Linux use your distribution's package or the installer from the site. npm comes with it.
  2. Open a terminal: Windows Terminal or Command Prompt on Windows, Terminal on macOS or Linux.
  3. Check the install by typing node -v and npm -v. Both should print a version number; node -v must show 22.12 or higher.
  4. Go into the folder that contains package.json, which is the source/ folder of this download: cd path/to/source.
  5. Install the tools exactly as locked: npm ci. This needs internet once and creates a node_modules folder.
  6. Run the checks: npm test. All tests should pass.
  7. Build the game: npm run build. The result is a folder called dist/.
  8. Try it locally: npm run preview, then open the address it prints. For editing with instant reload use npm run dev.
  9. Upload the CONTENTS of dist/ to your hosting, exactly as you would upload game/.
node -v
npm -v
npm ci
npm test
npm run build
npm run preview

If something goes wrong

Message or problem What to do
'node' is not recognized, or command not found Node.js is not installed or the terminal was opened before installing it. Install it, close the terminal and open a new one.
npm.ps1 cannot be loaded (PowerShell) Use Command Prompt instead of PowerShell, or run npm.cmd ci and npm.cmd run build.
ENOENT: no such file ... package.json You are not in the right folder. Use cd to enter the folder that contains package.json.
EBADENGINE or "Unsupported engine" Your Node.js is too old. Install Node.js 22.12 or newer.
ETIMEDOUT, ECONNRESET or proxy errors The computer could not reach the npm registry. Check the internet connection, a VPN or a company proxy (npm config get proxy), and try again.
npm ci complains that package.json and package-lock.json do not match Do not edit package.json by hand. Use npm install name@version when you change a dependency; it updates the lock file for you.
The build works but the page is blank when opened from disk Serve dist/ through a web address (npm run preview or your hosting), not from a file path.
Note The only third-party code in the game is Phaser. The build copies its official unminified file from node_modules into lib/phaser/, so it is not modified or merged into the game's own scripts.

12 Updating the game

  1. Back up your current game/ folder, especially aurora.config.js and any word list or picture you changed.
  2. Upload the new contents of game/ over the old files, keeping the same names.
  3. Put your own settings back into the new aurora.config.js (keep your storagePrefix so saves are kept).
  4. Reload the game. If the old version still appears, clear the cache as described below.

Clearing the cache without losing progress

Progress is stored in this browser, not on the server. Clearing cached images and files, or doing a hard reload, keeps your progress.

Computer: press Ctrl+F5 on Windows and Linux, or Cmd+Shift+R on macOS. Phone: in the browser settings, choose the option to clear cached images and files.

Do not choose cookies and site data, or clear site data, for the game's address. That deletes the local save.

13 Credits and licences

  • Phaser 3.90.0 by Phaser Studio Inc., MIT licence. Used for the sparks, rings and confetti.
  • Fredoka and Figtree fonts by their project authors, SIL Open Font License 1.1, bundled as local files.
  • The music "Bubble Quest", the narrator's recordings, the logo, the backdrops, the theme pictures, the word lists and the interface texts were prepared by Polar Games for this item and are licensed to you with it.
  • Sound effects are generated by the game in the browser and are not files.

The licence texts are in THIRD-PARTY-LICENSES/ and game/licenses/. Keep them when you publish the game. Your Envato Market licence (Regular or Extended) defines how you may use the item; read it on the item page.

14 Solving problems

Problem What to do
A blank page, or "The word themes could not be loaded" Open the game through its web address, not by double-clicking index.html. Check that data/themes/en.json was uploaded and that its folder keeps the name.
Only the logo and "Tap to start" show That is normal until the first tap: browsers only allow sound after a touch or click.
No sound, or no music Check the volume sliders in Settings and the device volume, and that the mute button (top right) is not on. Some browsers need a second tap after the page loads.
No voice in my language The narrator is recorded in English, Portuguese and Spanish. Other languages play the English voice and show captions in their own language.
The page works on my computer but not on the host Check the file types the server sends (.js must be JavaScript, .json JSON, .webp an image). Some hosts need AddType lines for .webp or .mp3.
A change I made does not appear The browser is showing an old copy. Do a hard reload (Ctrl+F5), or clear the cache as described under "Updating the game".
Saved stars and scores disappeared The storagePrefix, the address (including www) or the browser changed. Saves belong to one address in one browser.
A blank page on an old iPhone or Safari The game needs Safari 16.4 or newer (import maps).
Letters look cut or too small on a phone Make sure the page is not inside a frame that is smaller than the game. The game adapts to portrait and landscape by itself.

15 Frequently asked questions

Do I need PHP, a database or Node.js?
No. The game is made of static files. Node.js is only needed if you want to rebuild it from the source.
Does it work offline?
Once the page has loaded it needs no further internet, but it is a website, so it must be served from a web address. It is not a downloadable program.
Does it contain ads?
No. There are no ads, no tracking and no external requests in this edition.
Can I put it on my own domain or a sub-folder?
Yes. All paths are relative, so it works in the root or in any folder.
How many words does it have?
Each of the ten languages has 35 themes of 30 words: more than 1000 words per language.
Can I change the words?
Yes. Edit the JSON files in data/themes/. No build is needed. See "Customizing the game".
Can I add my own themes?
Yes. Add the theme to every language file with the same id, and add a picture named after the id, or an emoji.
Can I add another language?
Yes, with the source code: copy the English files, translate them and register the code. See "Adding a language".
Are the word lists reviewed by native speakers?
They were written natively for each language, but you are welcome to adjust any word. Tell support if you find a mistake.
Why do accents not appear inside the grid?
Word searches use plain letters so every player can find every word. The word list on the screen keeps the accents.
How does the daily puzzle work?
The date picks the theme, the words and the grids, so everyone who plays in the same language gets the same puzzle that day. Finishing it on consecutive days builds the day streak.
Is the daily puzzle the same in every language?
No. Each language has its own word lists, so each has its own puzzle for the day.
Where are scores and stars kept?
In the player's browser. There is no online ranking in this edition.
Can scores be cheated?
Players can clear their own browser data, and the saves are on their device. They are meant for personal records, not for prizes.
Why does the hint button sometimes glow?
The game notices a stuck player after 45 seconds or three wrong slides and points at the hint. It also gives one more hint when none is left, so a round can always be finished.
Can I turn off the combo or the daily puzzle?
The daily puzzle can be hidden with dailyChallenge: false. The combo can be shortened or lengthened with comboSeconds.
Can I remove languages?
Yes. Remove their codes from languages in aurora.config.js; with one language left, the language chip disappears.
How do I change the logo or the background?
Replace the image files, keeping their names. See "Pictures and sound".
How do I change the music?
Replace audio/music/bubble-quest.mp3 with your own loop, keeping the file name.
Can I remove the narrator?
Yes. Delete the folders in audio/narrator/. The captions are still shown and the game runs normally.
Does it work on phones and tablets?
Yes, in portrait and landscape, with touch. It also plays with a mouse and the keyboard.
Is it accessible?
It has keyboard play, screen reader announcements, a Calm mode and respects the "reduce motion" setting. Colours are chosen for contrast.
Will it work inside an iframe?
Yes, if the frame is large enough. Allow the frame to play audio and full screen if you want those.
How do I clear the saved progress?
Clear the site data for the game's address in the browser. See "Saved progress".
Which browsers are supported?
Current Chrome, Edge, Firefox, and Safari 16.4 or newer.
Can I sell the game as my own?
Your Envato licence decides what you may do. Read the Regular and Extended licence terms on the item page.
Where do I get help?
See the support section at the end of this guide.

16 Support and version history

Version Date Changes
1.0.0 2026-10-29 First CodeCanyon buyer edition: ten languages with native word lists, 35 themes, campaign, daily puzzle, scores and combos, narrator in three languages, readable code.

Support and custom work: willian@polargames.com.br. Include your purchase reference when you have it. This guide does not promise response times or a release schedule.

Support request

When you write to support, include the browser and device, the game version, the page address, the steps that caused the problem, a screenshot and the first error shown in the browser console. Never send passwords, payment details or secret keys.

For AI assistants

  • Read the installation, files and customizing sections before changing anything. Upload only game/ to a host; source/ is not the playable game.
  • The settings file is aurora.config.js; the saved-progress names start with its storagePrefix. Keep it unless the buyer asks to reset saves.
  • The word lists are data/themes/<lang>.json; theme ids must be the same in every language, and node tools/check-lang.mjs <lang> checks a list.
  • Interface texts live in source/src/i18n/<lang>.ts; en.ts is the source and npm test checks every language has every key.
  • Do not assume an account system, a server, ads or payments. This edition has none, and the code is the source of truth.