Polar Games

13 tables · 40 medals · 14 languages · 1.0.0

Pinball Odyssey

Install the playable game by uploading its files. This guide covers installation, controls, screens, configuration, languages, saves and optional development.

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. Quick installation by FTP
  3. Requirements and hosting
  4. Controls and how the game works
  5. Screens and controls explained
  6. Settings available
  7. Customize your copy
  8. Languages, sound and accessibility
  9. Saved progress and privacy
  10. Map of the files
  11. Optional: edit and rebuild
  12. Updating the game
  13. Common problems
  14. Support and version history

1 Overview and package contents

13 themed pinball tables, a campaign that opens them one by one, 40 medals, free play, 14 interface languages, a recorded announcer, music and sound effects. This is a standalone browser edition with no ranking, ads or online features.

Not included: online ranking, online multiplayer, advertising SDKs, real-money purchases, native apps and hosting. All 13 tables share one tested physics layout and rule set; a new table changes the theme, words and artwork, not the layout. The announcer is English only.

This manual describes version 1.0.0. Open documentation/index.html by double-clicking it. This guide works without internet.

2 Quick installation by FTP

Installing takes a few minutes. It needs no build step, terminal, database or PHP.

  1. Extract the purchased ZIP on your computer.
  2. Open the game/ folder. Keep its files and subfolders together.
  3. Upload only the contents of game/ by FTP or your hosting file manager to an empty folder, such as public_html/my-game/.
  4. Open https://your-domain.example/my-game/ in a modern browser.
Warning Do not double-click index.html on your computer. The game must be opened through an HTTP(S) address.

3 Requirements and hosting

  • A current version of Chrome, Edge, Firefox or Safari on a computer, tablet or phone.
  • Any static hosting over HTTP or HTTPS. HTTPS is recommended.
  • No npm, terminal, database, PHP, account or build step. The game loads everything from your folder.

The example above uses a subfolder. Keep all files together so the relative paths keep working.

4 Controls and how the game works

Touch: tap the left or right half of the table for the flippers; hold the right half and release to launch. Desktop mouse: the left and right buttons are the flippers; hold the right button and release to launch (the pause menu can switch to clicking each half of the table). Keyboard: left and right arrows or Z and / for the flippers, Space to launch, Up to nudge (too much causes a tilt), P or Esc to pause, M for sound. A How to play screen opens on the first game and from the table select and pause menus.

5 Screens and controls explained

The captures below are real game screens from version 1.0.0, in English. Numbered marks point to the controls, and the legend under each capture explains them.

Figure 1. Main menu
Figure 1. Main menu

Marks on the screenshot

  1. 13 themed pinball tables, a campaign that opens them one by one, 40 medals, free play, 14 interface languages, a recorded announcer, music and sound effects. This is a standalone browser edition with no ranking, ads or online features.
Figure 2. Gameplay
Figure 2. Gameplay

Marks on the screenshot

  1. Touch: tap the left or right half of the table for the flippers; hold the right half and release to launch. Desktop mouse: the left and right buttons are the flippers; hold the right button and release to launch (the pause menu can switch to clicking each half of the table). Keyboard: left and right arrows or Z and / for the flippers, Space to launch, Up to nudge (too much causes a tilt), P or Esc to pause, M for sound. A How to play screen opens on the first game and from the table select and pause menus.
Figure 4. Settings
Figure 4. Settings

Marks on the screenshot

  1. The interface has 14 languages and follows the browser language; change it on the table select or pause screen. The announcer is recorded in English for every language. Music, announcer and effects have separate volume sliders in the pause menu. To edit texts, change the dictionaries in lang/ and keep the {placeholders} unchanged.

6 Settings available

The interface has 14 languages and follows the browser language; change it on the table select or pause screen. The announcer is recorded in English for every language. Music, announcer and effects have separate volume sliders in the pause menu. To edit texts, change the dictionaries in lang/ and keep the {placeholders} unchanged.

7 Customize your copy

Each table's name, theme words, colours and zone names are defined in js/tables.js, and its artwork lives in mesas/<table>/. The bronze score (500,000 points) and the medal rules are in js/campaign.js, scoring and rules in js/rules.js, and audio levels in js/audio.js. After editing source/, run npm run build to copy the files to game/, or copy the changed files yourself.

8 Languages, sound and accessibility

The interface has 14 languages and follows the browser language; change it on the table select or pause screen. The announcer is recorded in English for every language. Music, announcer and effects have separate volume sliders in the pause menu. To edit texts, change the dictionaries in lang/ and keep the {placeholders} unchanged.

9 Saved progress and privacy

Progress is saved in the browser's local storage under keys that start with pinball-odyssey.template.: opened tables, medals, best score per table, settings, language and the How to play flag. Clearing site data resets everything, and changing the address or hosting origin starts a new save.

  • There is no account and no cloud sync. Records stay on this device.
  • Private mode, storage restrictions, clearing site data or changing the address can remove access to saved progress. The game keeps running without saving.

10 Map of the files

game/                      upload these contents
source/                    editable project (plain HTML, CSS, JavaScript)
  index.html               page markup and script order
  css/base.css hud.css menus.css
  js/storage-keys.js       save-key names
  js/i18n.js               language lookup
  js/physics.js            ball and flipper physics
  js/rules.js              scoring, multiball, medals triggers
  js/audio.js              sound, music, announcer, effects, score display
  js/tables.js             the 13 tables: names, words, colours
  js/campaign.js           campaign, medals, table loading
  js/render.js             drawing
  js/input.js              keyboard, mouse, touch
  js/ui.js                 menus and layout
  js/main.js               game loop and start
  lang/                    14 language dictionaries
  fonts/ mesas/ som/ marca/  fonts, table art, sounds, logo
  tools/ tests/            copy command, local server, tests
documentation/index.html   this offline guide
DOCUMENTATION.html         shortcut to the guide
THIRD-PARTY-LICENSES/      font licence

Each table's name, theme words, colours and zone names are defined in js/tables.js, and its artwork lives in mesas/<table>/. The bronze score (500,000 points) and the medal rules are in js/campaign.js, scoring and rules in js/rules.js, and audio levels in js/audio.js. After editing source/, run npm run build to copy the files to game/, or copy the changed files yourself.

11 Optional: edit and rebuild

You do not need Node.js to host the game. It is only used for the included tests and the copy command. New to Node.js? 1) Install the LTS version from nodejs.org (it must be 26.13 or newer). 2) Close and reopen the terminal, then run node -v and npm -v; both must print a version. 3) Open the terminal inside the source/ folder (the one with package.json). 4) Run npm test to check the project, then npm run build to copy the game into the game/ folder next to source/, and npm start to try it at http://localhost:5300/. 5) Upload the contents of game/ to your hosting. There are no dependencies to install. Common errors: node or npm not found (reopen the terminal or fix PATH); on Windows PowerShell, npm.ps1 cannot be loaded (use npm.cmd test or Command Prompt); ENOENT package.json (you are not inside source/); EBADENGINE or a syntax error (Node.js is older than 26.13).

cd source
npm ci
npm test
npm run build
npm start
# http://localhost:5300/

12 Updating the game

Progress is saved in the browser's local storage under keys that start with pinball-odyssey.template.: opened tables, medals, best score per table, settings, language and the How to play flag. Clearing site data resets everything, and changing the address or hosting origin starts a new save.

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 Common problems

Missing textures or sound: confirm the complete upload and the file name case, and that .mp3, .js, .css and font files are served with correct types.

The interface has 14 languages and follows the browser language; change it on the table select or pause screen. The announcer is recorded in English for every language. Music, announcer and effects have separate volume sliders in the pause menu. To edit texts, change the dictionaries in lang/ and keep the {placeholders} unchanged.

Not included: online ranking, online multiplayer, advertising SDKs, real-money purchases, native apps and hosting. All 13 tables share one tested physics layout and rule set; a new table changes the theme, words and artwork, not the layout. The announcer is English only.

14 Support and version history

Third-party notices (the Exo 2 font, SIL Open Font License) are in THIRD-PARTY-LICENSES/. Use of the game, artwork and audio follows the CodeCanyon licence you purchased.

Support and customization: willian@polargames.com.br. Include your purchase or licence reference. This guide does not promise response times or a schedule of future updates.

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.