Polar Games

Little Ninja Dash · buyer edition · 1.0.0

Little Ninja Dash · Buyer Guide

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 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. Optional advertising
  11. Map of the files
  12. Optional development
  13. Updating the game
  14. Common problems
  15. Frequently asked questions
  16. Support and version history

1 Overview and package contents

A slingshot action platformer: a little square ninja chases the red clan that kidnapped his partner. 51 stages in 5 worlds (Garden, Ice, Lava, Clouds, Fortress), each closing with a boss, 13 enemy types, checkpoints, chests, breakable scenery, an opening and an ending story, 10 outfits and 6 weapons. Interface in 14 languages, recorded English narrator, 7 music tracks.

Single player, offline. No accounts, online ranking, real-money purchases or analytics. Ads are off and nothing is bundled from any ad network; you can plug in your own provider (see Optional advertising). The game makes no requests outside your own folder.

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

DOCUMENTATION.html
documentation/index.html
game/
source/
THIRD-PARTY-LICENSES/

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.

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

4 Controls and how the game works

Press and hold anywhere on the screen: time slows down. Pull back like a slingshot to aim (the guide shows the path), then release to dash. Hold again in mid-air to change direction. Every enemy you touch while dashing is defeated, and each hit gives your speed back. Take down every enemy to open the portal, then reach it to clear the stage. Collect the 3 stars of each stage and earn medals for all stars, no deaths and a time under par.

Mouse or touch: hold, pull back, release. Keyboard: Enter or Space starts from the title; F, J or K throws a shuriken or fires the power of the equipped weapon when its button is shown; Esc or P pauses and resumes. The first stage teaches the controls step by step; the tutorial can be skipped.

Stars unlock outfits. Points from each stage buy weapons; replays earn a quarter. The Flame, Frost, Thunder, Venom and Apocalypse blades each add a special power; the Apocalypse blade can be bought after the World 4 boss. Checkpoint flags save your place inside long stages. Bosses need several hits.

Stages open one after another across the five worlds. Beating the World 5 boss plays the ending and unlocks The Princess outfit.

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. Title screen
Figure 1. Title screen

Marks on the screenshot

  1. Play continues from the next open stage.
  2. Outfits and weapons.
  3. Options: language, sound, quality and accessibility.
Figure 2. Aiming in slow motion
Figure 2. Aiming in slow motion

Marks on the screenshot

  1. Hold, pull back and release: the guide shows where you will land.
  2. Enemies left; defeat them all to open the portal.
  3. Pause (Esc or P).
Figure 3. Stage map
Figure 3. Stage map

Marks on the screenshot

  1. Arrows switch between the five worlds.
  2. Each stage shows its stars and medals.
Figure 4. Outfits and weapons
Figure 4. Outfits and weapons

Marks on the screenshot

  1. Stars unlock outfits.
  2. Points buy weapons.
Figure 5. Options
Figure 5. Options

Marks on the screenshot

  1. Interface language (14).
Figure 6. Stage clear
Figure 6. Stage clear

Marks on the screenshot

  1. Medals: all stars, no deaths, time under par.
  2. Next stage or back to the map.

6 Settings available

The interface has 14 languages (English, Portuguese, Spanish, French, German, Italian, Dutch, Polish, Turkish, Russian, Indonesian, Japanese, Korean and Simplified Chinese). It follows the browser language on first start and the player can change it in Options; the choice is saved. The narrator is recorded in English and is used with every language. Options also hold music, sounds and narrator volume, slash style (blood or ink), graphics quality (full, medium, light), assist and less motion.

7 Customize your copy

Edit game/ninja.config.js (no rebuild needed): storageKey keeps the saves of each installation apart, and the ads block turns optional advertising on and sets its frequency. In the source edition the same file is source/public/ninja.config.js.

// game/ninja.config.js  (source/public/ninja.config.js in the source edition)
window.NINJA_CONFIG = {
  storageKey: 'my-site.ninja.save.v1',
  ads: { enabled: false, everyLevels: 3, graceSec: 240, minGapSec: 180 },
};

8 Languages, sound and accessibility

Interface text lives in source/src/i18n/: strings.ts holds English, Portuguese and Spanish, and one file per language holds the other eleven. Keep the {n}-style placeholders. A test fails when a language is missing a key. Rebuild after editing.

9 Saved progress and privacy

Progress, stars, outfits, weapons and settings are saved in the browser's localStorage under the key set in storageKey (default little-ninja-dash.template.save.v1). Each browser and device keeps its own progress.

  • 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.

Keep your edited ninja.config.js and the same storageKey when you upload a new version, so players keep their progress. Upload all files of the new game/ together.

10 Optional advertising

Ads are disabled. To use them, load your own ad SDK, define window.NINJA_AD_PROVIDER before the game starts and set enabled: true in ninja.config.js. Placements: an interstitial every few stages and after each world boss, and two optional rewarded ads (double the stage points, revive at the last safe spot). The game pauses and mutes while an ad runs, gives up if the ad does not start within startTimeoutSec, and grants a reward only when your provider reports done after calling started(). Showing ads and asking for any consent required in your region are your responsibility.

// Load your ad SDK first, then define the provider before the game script runs.
window.NINJA_AD_PROVIDER = {
  id: 'my-network',
  init: async () => { /* initialise your SDK */ },
  available: (kind) => true, // 'interstitial' | 'rewarded'
  show: (kind, placement, started) => new Promise((resolve) => {
    // call started() when the ad is visible, then resolve 'done', 'skipped' or 'error'
  }),
};

11 Map of the files

source/src/main.ts starts the game and runs the main loop. source/src/config/tuning.ts holds the feel numbers, outfits and weapons. source/src/data/ holds the 51 stages and the recorded test routes. source/src/sim/ is the physics and combat, source/src/render/ draws the world and effects, source/src/ui/ builds the menus, source/src/audio/ plays music and sounds (files in src/audio/files/, with a README), and source/src/story.ts runs the opening and ending.

12 Optional development

This section is only for changing the source. The game/ folder already contains the playable build, so hosting needs no Node.js.

Only needed to change code, art or levels. Node.js 26.13 or newer (current LTS). In the source/ folder run the commands below: npm ci installs the exact versions from package-lock.json, npm test runs the regression tests, npm run build type-checks and writes the readable game to source/dist-static/, and npm run dev opens a live preview at http://localhost:5230/. Upload the contents of dist-static/ the same way as game/. On localhost only, ?debug unlocks developer shortcuts and ?debug&bot replays the recorded route of a stage.

New to Node.js? 1) Install the LTS version from nodejs.org. 2) Close and reopen the terminal and check that node -v prints v26 or newer. 3) Open the terminal inside source/ (the folder with package.json). 4) Run npm ci, then npm test, then npm run build. Common errors: node not found (reopen the terminal); npm.ps1 cannot be loaded in Windows PowerShell (use npm.cmd ci or Command Prompt); ENOENT package.json (you are not inside source/); EBADENGINE (Node.js is too old).

cd source
npm ci
npm test
npm run build
npm run dev
# http://localhost:5230/

13 Updating the game

Keep your edited ninja.config.js and the same storageKey when you upload a new version, so players keep their progress. Upload all files of the new game/ together.

Upload the new contents of game/ over the old files, keeping the names and folders.

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.

14 Common problems

  • Blank page: make sure you uploaded the contents of game/, opened the HTTP(S) address and checked the browser console for scripts that failed to load. The source/ folder is not the playable website.
  • Works on the computer but not on the server: the game does not run from a file on your computer (file://). Use a static web host or any static local server.
  • 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.

No sound: the browser needs a first click or touch before audio can start. Check the sound button on the title and the volumes in Options. Hiding the tab pauses the game.

15 Frequently asked questions

Does it need PHP or a database?
No. This edition is fully static and saves progress in the browser's localStorage.
Does it work offline?
The game loads its engine, fonts, images and audio from your own folder and calls no external services. It is not packaged as an installable offline app.

16 Support and version history

Fredoka, Lilita One and Dela Gothic One fonts: SIL Open Font License. Bootstrap Icons and Vite: MIT. Keep the notices in THIRD-PARTY-LICENSES/ and game/licenses/. Game code, artwork, music, narrator and sounds are covered by your licence for this item.

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.