Contents
- Overview and package contents
- Installing the game
- Requirements
- How to play
- The screens
- What is in the package
- The settings file
- Customizing the game
- Languages
- Saved progress
- Building from the source (optional)
- Updating the game
- Credits and licences
- Solving problems
- Frequently asked questions
- Support and version history
- 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.
- Unzip the download on your computer.
- Connect to your web hosting with FTP, SFTP or your host's file manager.
- Create the folder where the game will live, for example
public_html/words/(or use the site's root folder). - Upload the CONTENTS of the
game/folder into it:index.htmlmust end up directly inside that folder. - 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/
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.
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:
.jsas JavaScript,.jsonas JSON,.webpas WebP,.mp3as MP3 and.woff2as 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.
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. |
5 The screens
These are real screenshots of the game. The numbers on each picture match the list under it.
Marks on the screenshot
- Sound on or off.
- Full screen.
- How to play, with a tutorial.
- Settings.
- Quick Play: a random theme.
- Categories: pick a theme.
- Campaign: the 15 levels.
- Daily puzzle, with the day streak when there is one.
- Language chip: opens the list of languages.
Marks on the screenshot
- Back to the menu.
- Title; scroll down for the other themes.
- A theme: tap it to start a round.
Marks on the screenshot
- The selected level, its theme and what makes it harder.
- The level to play now, with the stars it has earned.
- A locked level: finish the previous one first.
- Play the selected level.
Marks on the screenshot
- Restart the round.
- Words found so far.
- Score.
- Progress through the grids, and the theme.
- The combo: its bar empties until the next find.
- The words to find; found words are struck through.
- The letter grid. Found words keep a glowing mark in their own colour.
- Hint, with the hints left.
Marks on the screenshot
- Result and theme.
- Stars for how cleanly the round was played.
- Score and best score.
- Time, best combo, hints used and misses.
- All the words found.
- Play again, or go back to the levels in the campaign.
Marks on the screenshot
- Music volume.
- Sound effects volume.
- Narrator voice volume.
- Calm mode: less motion.
- Language.
- Close.
Marks on the screenshot
- The language in use.
- Any other language: the whole game changes at once, including the word lists.
- 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 |
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 leastwordsPerRoundwords. 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. -
wordsPerRoundis 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.webpwith your own image of a similar shape (keep the file name). - Backdrop: the two pictures in
assets/whose names start withocean-sceneandocean-portraitare 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.mp3with your own loop, keeping the name. - Narrator: the recordings are in
audio/narrator/en/,pt/andes/, 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
- Copy
source/src/i18n/en.tsto<code>.ts, translate the texts and keep every {…} written in braces. - Copy
source/public/data/themes/en.jsonto<code>.jsonand write native words for each of the 35 themes. - Register the code in
source/src/i18n/index.ts(the listsLANGS,LANG_NAMESandDICTS), and inlanguagesinaurora.config.js. - Add a list of words the random filler letters must never spell to
source/src/i18n/blocked.ts. - Run
node tools/check-lang.mjs <code>andnpm test, then rebuild.
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.
?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
storagePrefixfrom the settings file, followed by a dot and a short word:.prefs.v1,.campaign.v1,.best.v1and.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.
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
- 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.
- Open a terminal: Windows Terminal or Command Prompt on Windows, Terminal on macOS or Linux.
- Check the install by typing
node -vandnpm -v. Both should print a version number;node -vmust show 22.12 or higher. - Go into the folder that contains
package.json, which is thesource/folder of this download:cd path/to/source. - Install the tools exactly as locked:
npm ci. This needs internet once and creates anode_modulesfolder. - Run the checks:
npm test. All tests should pass. - Build the game:
npm run build. The result is a folder calleddist/. - Try it locally:
npm run preview, then open the address it prints. For editing with instant reload usenpm run dev. - Upload the CONTENTS of
dist/to your hosting, exactly as you would uploadgame/.
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. |
node_modules into lib/phaser/, so it is not modified or merged into the game's own scripts.
12 Updating the game
- Back up your current
game/folder, especiallyaurora.config.jsand any word list or picture you changed. - Upload the new contents of
game/over the old files, keeping the same names. - Put your own settings back into the new
aurora.config.js(keep yourstoragePrefixso saves are kept). - 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?
Does it work offline?
Does it contain ads?
Can I put it on my own domain or a sub-folder?
How many words does it have?
Can I change the words?
data/themes/. No build is needed. See "Customizing the game".Can I add my own themes?
id, and add a picture named after the id, or an emoji.Can I add another language?
Are the word lists reviewed by native speakers?
Why do accents not appear inside the grid?
How does the daily puzzle work?
Is the daily puzzle the same in every language?
Where are scores and stars kept?
Can scores be cheated?
Why does the hint button sometimes glow?
Can I turn off the combo or the daily puzzle?
dailyChallenge: false. The combo can be shortened or lengthened with comboSeconds.Can I remove languages?
languages in aurora.config.js; with one language left, the language chip disappears.How do I change the logo or the background?
How do I change the music?
audio/music/bubble-quest.mp3 with your own loop, keeping the file name.Can I remove the narrator?
audio/narrator/. The captions are still shown and the game runs normally.Does it work on phones and tablets?
Is it accessible?
Will it work inside an iframe?
How do I clear the saved progress?
Which browsers are supported?
Can I sell the game as my own?
Where do I get help?
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 itsstoragePrefix. Keep it unless the buyer asks to reset saves. - The word lists are
data/themes/<lang>.json; themeids must be the same in every language, andnode tools/check-lang.mjs <lang>checks a list. - Interface texts live in
source/src/i18n/<lang>.ts;en.tsis the source andnpm testchecks 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.