SOL Frame key art
GAME DESIGN DOCUMENT · v1.0

SOL FRAMESOL DEFENSE PROTOCOL

16 SECTORS 6 WEAPONS 1–2 PLAYERS 3 LANGUAGES
16
Sectors
160
Waves
16
Bosses
6
Weapons
4
Difficulties
3
Languages
TitleSOL Frame
GenreTop-down vertical arcade space shooter · wave shooter · co-op
ModesSingle-player · Local 2P co-op · Online co-op (PeerJS)
PlatformsWindows (Electron) · Web (HTML5) · Android APK · iOS web / future IPA
LanguagesEnglish · العربية (RTL) · 日本語
Players1–2
Session3–8 min per sector · 60–90 min full campaign
View2D vertical, fixed camera, top-down
EngineCustom HTML5 Canvas + vanilla JavaScript · Web Audio · WebRTC
StatusShip-ready build — “SOL Defense Protocol”
01

Executive Summary

SOL Frame is a fast, neon arcade space shooter built around a single promise: become the weapon.

You pilot a lone “Frame” fighter against a 16-sector invasion — ten waves per sector, a unique dreadnought boss at the end, and a five-second salvage window before IRIS warps you onward. Guiding you is IRIS, the SOL Command AI who teaches every system as you first meet it, reacts to combat in real time, and speaks in three languages.

MASTERY

Instant mastery curve

One input to steer, one to fire, one to launch missiles. Depth comes from heat management, weapon levels, and positioning — not from memorising bindings.

ESCALATION

Escalation you can see

Every sector repaints the entire battlefield — sky, nebula, planet, enemy armour and effects — so progress feels like travelling somewhere new.

COMPANION

A companion, not a menu

IRIS replaces tutorial text with voice and dialogue, turning onboarding into a mission briefing and combat into a conversation.

ECONOMY

Replay-loop economy

Food → missiles, credits → upgrades, score → extra lives, weapon crates → in-run power. Every kill can feed the engine.

02

Vision & Design Pillars

Clarity over chaos

Even at peak density the player must read threats, the HUD, and their own power state at a glance. Neon-on-black contrast, crisp hitboxes, and a heat bar that screams before it fails.

Every sector is a place

The 16 sectors are not palette swaps; each owns its sky, nebula, planet, asteroid density, enemy mix, drift and boss. Warping should feel like a journey.

A companion AI that earns its voice

IRIS is the emotional through-line — she briefs, teaches, warns and celebrates, in the player’s own language.

Play anywhere, together

The same campaign runs on PC, browser and phone, with local and online two-player. No platform is second-class.

Respect time & device

Save/continue at any pause, four difficulties, particle-density scaling, three languages, mobile auto-fire.

03

Story & Setting

Humanity’s expansion into deep space — driven by the instinct to explore and to find resources — discovered worlds already inhabited by peoples strikingly like us, set apart by strange biologies and ancient augmentations. Alliances became a single union spanning many worlds.

Then the union’s own connective tissue became the vector. As travel between worlds intensified, a mysterious virus spread through the population. It inflames the brain, seeding paranoid delusions that everyone nearby intends them harm. The infected become violently convinced — attacking and destroying everything they encounter, permanent dangers to all others.

Out of the collapse, an organised invasion formed: a coordinated hostile grid of 16 sectors, each blockaded by a dreadnought. SOL Command has one answer left. You.

Your assignment. You are a Frame pilot — a single-seat fighter dispatched by SOL Command. Break the invasion sector by sector. Ten waves stand between you and each dreadnought. Destroy it, salvage what you can in five seconds, and IRIS warps you onward. Clear all 16 sectors and the invasion is broken.

IRIS — SOL Command

IRIS is the player’s artificial-intelligence handler and only ally in a hostile grid. She appears as a masked, gem-crowned figure linked by cabling to the SOL network.

  • Delivers the opening tutorial in context as the player first performs each action.
  • Warns about overheat, hazards, boss arrival and low supply.
  • Congratulates on weapon pickups, satellite recovery and extra lives.
  • Speaks English, Arabic and Japanese with dedicated voice clips.
  • Can be muted as a voice, or silenced entirely via IRIS Transmissions.

IRIS is the warm counterpoint to the cold, geometric enemy fleet — and the narrative voice of the opening.

IRIS, the SOL Command AI
IRIS · SOL Command

Bosses as antagonists

Each dreadnought is introduced by a COMMS INCOMING transmission and taunts the player in a single, memorable line that reflects its nature.

#SectorDreadnoughtTaunt
1Iron VeilVEIL WARDEN“Iron holds this gate. You will scratch the paint, then fall.”
2Ash OrbitCINDER HOST“Ash in your lungs. Fire in your wake.”
3Rift GateRIFT STALKER“The gate is a mouth. I am the teeth.”
4Crimson BeltBLOOD CROWN“The belt is red for a reason. Add yours.”
5Null ClusterTHE ABSENCE“Nothing lives here. You are the exception I will correct.”
6Dread ReachDREAD NAIL“Reach for me. I will pin you to the dark.”
7Spine CorridorSPINE TYRANT“The corridor is narrow. So is your future.”
8Ember RimCINDER QUEEN“Embers first. Then the burn.”
9Void HorizonHORIZON EYE“I see every vector. You have none left.”
10Blacksun GateBLACKSUN“Light dies at this gate. You are next.”
11Core AnvilANVIL KING“Hammer. Anvil. You are the work.”
12Last BastionBASTION LORD“The last wall still stands. You will not.”
13Wraith EdgeWRAITH“Catch a ghost. Miss. Bleed.”
14Storm DriftSTORM REAVER“The drift is a blade. I swing it.”
15Scar ExpanseSCAR TITAN“Every scar here is a warning. Read it.”
16Final SiegeLAST SIEGE“This is the end of the map. Make it loud.”
04

Target Audience & Positioning

PRIMARY

Ages 16–35

Arcade shooter, bullet-hell and co-op fans who love classic vertical shooters with modern polish.

SECONDARY

Mobile players

Casual players who want a deep game in short, satisfying sessions.

TERTIARY

Arabic & Japanese players

A genuine differentiator: a shooter that fully speaks their language, with RTL Arabic layout.

Difficulty philosophy: an accessible floor with a high skill ceiling. Easy is genuinely forgiving; Extreme is a survival gauntlet that pays a 2.5× score multiplier.
05

Core Gameplay Loop

01
BRIDGE — select sector, visit the Armory, adjust settings.
▼
02
DEPLOY — warp animation and sector briefing.
▼
03
WAVES 1–9 — survive formations, kill, collect. Steer · fire · manage heat · grab food and credits · grow weapon level · recruit satellites.
▼
04
WAVE 10 — BOSS — COMMS INCOMING dialogue, then the dreadnought fight.
▼
05
RECOVERY WINDOW (5 s) — grab every drop before warp.
▼
06
WARP to the next sector · progress saved · sector unlocked · banks carried over. Repeat ×16.
▼
07
SECTOR 16 CLEARED → “INVASION BROKEN” — score, high score, new-record flourish, return to Bridge.

Minute-to-minute loop

1 · Read

Identify the incoming formation and the boss telegraph.

2 · Position

Dodge lanes; keep distance from kamikaze and armoured enemies.

3 · Fire

Hold to shoot; watch the heat rail; release before overheat.

4 · Spend

Missile when surrounded; satellites as a force multiplier.

5 · Collect

Fly over drops — every pickup is score, supply or power.

6 · Escalate

Same weapon colour raises its level; a new colour swaps the weapon but keeps the level.

06

Controls

ActionPlayer 1Player 2 (same device)
SteerMouseArrow keys
FireHold Left MouseHold Z
MissileRight MouseX
PauseEscEsc
DialogueSpace or click
ActionMobile
SteerTouch and drag (analog)
FireAutomatic while in mission
MissileTap MISSILE
PauseHUD button
OrientationLandscape recommended
Design intent. On desktop the mouse is both aim and position — the single decision that makes the game instantly playable. On mobile, firing is removed as a choice so touch stays two-input and readable. Same-device 2P is disabled on mobile; cross-device co-op is fully supported.
07

Campaign Structure

Sectors (chapters)16
Waves per sector10 — wave 10 is the boss
Total waves160
Recovery window after boss5 seconds
Unlock ruleBeat sector n → unlock n+1
Difficulty levelsEasy · Normal · Hard · Extreme

Each sector is procedurally assembled from a hand-authored identity — sky, nebula, planet, asteroid density, enemy mix, drift and wave script — plus deterministic per-sector wave selection. Sectors are recognisable and learnable, yet varied between runs.

Sector roster — a journey across the grid

SECTOR 01
Iron Veil
VEIL WARDEN
Deep blue steel · balanced · armoured lines
SECTOR 02
Ash Orbit
CINDER HOST
Violet ash · swarm mix · falling rain
SECTOR 03
Rift Gate
RIFT STALKER
Crimson hot · fast · pincer & kamikaze
SECTOR 04
Crimson Belt
BLOOD CROWN
Blood red · dense packs · wedge & wall
SECTOR 05
Null Cluster
THE ABSENCE
Grey void · thin & slow · sniper pressure
SECTOR 06
Dread Reach
DREAD NAIL
Indigo dread · UFO-heavy · orbital rings
SECTOR 07
Spine Corridor
SPINE TYRANT
Teal corridor · narrow lanes · armoured walls
SECTOR 08
Ember Rim
CINDER QUEEN
Orange ember · fast scouts · dive attacks
SECTOR 09
Void Horizon
HORIZON EYE
Blue horizon · UFO rings · hover pressure
SECTOR 10
Blacksun Gate
BLACKSUN
Magenta eclipse · metal + UFO · lurkers
SECTOR 11
Core Anvil
ANVIL KING
Gold forge · dense heavy armour · walls
SECTOR 12
Last Bastion
BASTION LORD
Green keep · bastion formations · pincer
SECTOR 13
Wraith Edge
WRAITH
Pale wraith · fast & blinking · kamikaze
SECTOR 14
Storm Drift
STORM REAVER
Amber storm · dense rain · fast drift
SECTOR 15
Scar Expanse
SCAR TITAN
Rose scar · metal/UFO · lurching pressure
SECTOR 16
Final Siege
LAST SIEGE
Red siege · dense & fast · everything at once
08

Wave Design

Every non-boss wave is a named formation shown in the HUD. Wave size, enemy HP, spawn counts and asteroid count scale with sector and difficulty; thin/dense sector packs adjust column counts.

HUD nameFormationDesign notes
PATROL LINEGrid, 2 rows, early spawnTutorial-friendly opening wave
SWEEPStaggered double lineHorizontal sweeps
ORBIT RINGOrbiting ringUFOs from sector 5 onward
STRAFE RUNSwooping rowsAlternating direction
SCOUT SWARMWide chick gridFragile, numerous
SAUCER HUNTSwooping saucersTougher, wider hitbox
DROP PODSParabolic dropStaggered descent
ARMORED LINEArmoured grid0.66× damage taken
PINCERSplit swoopKamikaze flag
DIVE ATTACKTwin swoopDiving enemies
WEDGEV-formationFocused fire lane
FALLING RAINParabolic swarmContinuous pressure
WALL3-row gridMetal from sector 10+
ASTEROID FIELDTimed asteroid spawnDestructible terrain
BOSS · nameSingle dreadnoughtDialogue-gated
09

Enemies

KindDescriptionBehaviourNotes
OrdinaryStandard fighterFormation flight, dives, boltsBaseline
Chick (Scout)Tiny fast craftSwarms, fragileNever drops bombs · 0.58× size · 42% food
UFOSaucerSwoops, strafes1.2× HP · wide hitbox · bomb-capable
MetalArmoured craftHeavy formed lines0.66× damage taken · bomb-capable
RockAsteroidFalls, drifts, collidesDestructible · 22% food · collision costs a life
Egg / BombDropped explosiveFalls, splats on contactCosts a life on contact
BossDreadnoughtUnique movement + fire kitFull-screen HP bar + dialogue

Boss behaviour kits

Bosses are data-driven from 16 distinct combinations of movement and fire patterns.

MOVEMENT sweepfigure-8dashchasestillorbitcorridorbouncehoverlurkanvilweaveblinkzigzaglurchsiege
FIRE volleybombsburstspreadsniperspiralstreamringdualstitchslamneedlerainscattersiege
Escalation: bosses scale in HP, fire rate and size. LAST SIEGE is the largest and toughest (1.35× HP, 1.22× scale); ANVIL KING is the most durable (1.28× HP).
10

Player Systems

The Frame fighter

HITBOX

Smaller than its sprite — 0.7 × 0.75 of the ship box — for fair dodging.

START

3 lives and 2 missiles.

RESPAWN

Brief invulnerability after a hit; respawn if lives remain, otherwise SYSTEM FAILURE.

MOVEMENT

Free two-axis steering in the bottom area of the screen.

Weapons — six armaments

All weapons share a level system (0–10, shown as 11 effective tiers) that increases outlets, bullet size and damage. Same colour = +1 level; a new colour switches weapon but keeps the level.

Spread bolts

Ion Blaster

Fan of accelerated bolts. The reliable all-rounder. Heat 6.5

Fast straight

Neutron Gun

Narrow, high-speed projectiles; +15% damage. Heat 4.2

Continuous lightning

Lightning Fryer

Locks onto the nearest enemies and chains to a second target. Beam

Continuous plasma

Plasma Rifle

Lock-on beams that ramp damage while held on one target. Beam

Instant piercing beams

Laser Cannon

Vertical beams that hit the first enemy in each lane. Heat 10

Homing bolts

Photon Swarm

Homing bolts; at level 6+ can supercharge (red, +25% dmg). Heat 4.8

Timing + coordination: At level 10 a shot deals the full 1.08× enemy base HP. The fire interval differs per weapon (Green 7, Photon 9, Orange 10, others 8 frames), giving each a distinct rhythm.

Heat & overheat

Heat builds with every shot or beam tick and decays when not firing. At 100% the weapon overheats and vents over ~3 seconds. Lightning and Plasma build heat fastest — sustained beams demand disciplined trigger control.

0%WARNOVERHEAT 100%

Ordnance, satellites & economy

MISSILES

Area damage

Free, limited-stock tactical ordnance — not cooldown-based. Start with 2. Restock in the Armory or by filling the food counter (50 food = +1). Use to clear swarms and punish bosses.

SATELLITES

Orbiting gun droids

A satellite orbits the player and fires with them, extending coverage. Maximum of 2, from rare drops and the Armory.

ResourceSourceUse
FoodDrops — drum 1, burger 3, roast 10 units50 units → +1 missile; also awards score
CreditsCoin drops (1 or 5)Armory — lives, missiles, satellites
ScoreKills, pickups, bonusesEvery 100,000 → +1 life (repeatable); high score
Atomic / upgradeVery rare drop+1 weapon level
Weapon crateUncommon dropLevel up or switch weapon
COMBO

Kill multiplier

Consecutive kills build a combo multiplier shown in the HUD (e.g. COMBO x4), increasing score per kill and rewarding aggressive, uninterrupted play.

RECOVERY

The five-second window

When a boss dies, drops flood the screen for 5 seconds. Fly over them before IRIS warps the ship. Every boss kill becomes a short, greedy, high-adrenaline finale.

11

Progression & Meta

IN-RUN

Persistent power

Weapon level is permanent for the run (switching colour keeps it). Satellites, missiles, lives and credits carry across sectors.

SAVE

Continue exactly

Save from Pause stores sector, wave, weapon, heat, lives, missiles, satellites, score, food and P2 state. CONTINUE GAME restores it.

PERSIST

Between sessions

High score and settings persist locally. Reset Progress wipes all save data.

Armory

ItemCostEffect
LIVES50 credits+1 life
MISSILES75 credits+5 missiles
SATELLITE150 credits+1 orbiting droid (max 2)

Difficulty

LevelEnemy HPEnemy speedBomb rateScore multiplier
EASY0.7×0.55×0.35×0.8×
NORMAL1.0×0.68×0.45×1.0×
HARD1.4×0.82×0.6×1.5×
EXTREME1.8×0.95×0.75×2.5×

Difficulty is chosen per deployment and changes both the challenge and the reward.

12

Multiplayer

LOCAL CO-OP

Same device

Player 2 joins with Arrow keys / Z / X. Each pilot has independent lives, score, weapon, heat, food, coins and satellites. Respawn positions are offset so ships do not overlap.

ONLINE CO-OP

Two devices

Built on PeerJS peer-to-peer with six-digit room IDs. Host creates a room; guest joins with the ID; the host starts the mission. State synchronises each frame. Mobile requires two phones on the internet.

Status feedback is explicit: WAITING FOR THE SECOND PLAYER… · CONNECTING… · SECOND PLAYER CONNECTED · LINK LOST.
13

Audio Direction

MUSIC

Procedural engine

Music is generated in real time via the Web Audio API: a distinct sector theme per chapter, plus a boss arrangement that switches on dreadnought arrival or dialogue. Lead, percussion and bass respond to mode with deterministic per-sector seeds.

SFX

Combat texture

Per-weapon fire, missiles, explosions, pickups, UI, splats, warps and boss impacts. SFX volume is independently adjustable.

VOICE

IRIS in 3 languages

16 events × 3 languages = 48 pre-rendered clips, covering tutorial, lives, missiles, mission briefing, heat, overheat, hazards, weapon, food, coins, satellite, rocks, boss, loot, P2 and save.

Two independent toggles: IRIS Transmissions (tips) and IRIS Voice (audio).
14

UI / UX & HUD

IN-MISSION

HUD

  • Top-left: score, hearts, credits, missiles, weapon icon + level, food (x/50), combo
  • Top-centre: SECTOR n · WAVE n/10
  • Heat rail: weapon temperature with warn/overheat states
  • Boss bar: appears only for dreadnoughts
  • Boss dialog: “COMMS INCOMING” panel, click/space to dismiss
  • P2 HUD: second set of indicators in co-op
MENUS

Screens

  • Bridge: high score, Continue, Start Mission, Multiplayer, Armory, Settings, Exit
  • Sector Navigation: 16-node grid, unlocked nodes interactive
  • Armory: credits and three purchasables
  • Pause: Resume, Save, Armory, Restart, Main Menu
  • Settings: audio, particles, language, fullscreen, IRIS toggles, reset
  • Game Over: SYSTEM FAILURE, score, new-record flourish
  • Multiplayer: host / join / status panels

Accessibility & inclusivity

Three full languages

Including RTL Arabic layout with mirrored typography and alignment.

Per-language fonts

Rajdhani/Orbitron for Latin, Cairo for Arabic, Noto Sans JP for Japanese.

Performance scaling

Particle density setting: Low / Medium / Ultra.

Skip-friendly teaching

IRIS transmissions can be skipped; seen tips are remembered and not repeated.

Mobile comfort

Auto-fire while in mission; landscape guidance.

Reduced motion

Animations and transitions disabled for users who prefer less motion.

15

Art Direction

Neon vector minimalism on deep-space black. Flat-shaded geometric craft, clean silhouettes, soft glows, starfields and parallax nebulae. Enemies are deliberately cute-menacing — smiley saucers and simple icons made sinister by scale and context. The player is a small, bright triangle of cyan/white light. Weapons are the spectacle: lightning arcs, plasma beams, piercing lasers, homing photons.

SOL Frame gameplay
Live gameplay — plasma beams carving a dreadnought escort screen in a red sector.
SECTOR THEMING

Every sector repaints the field

Sky gradient, nebula colour, planet tint, enemy vest/skin, bolt colour, aura and meteor density. Sectors 5, 10 and 13 are deliberately “dark” unlit voids — they feel wrong and hostile.

BRAND

Logo & key art

Wordmark SOL FRAME in glowing yellow Orbitron with the subtitle SOL DEFENSE PROTOCOL. Key art shows the Frame fighter unleashing plasma against a red dreadnought and escorts. IRIS key art depicts the gem-crowned SOL Command AI.

SOL Frame cover
Cover composition — the neon wordmark over live combat.
16

Technical Design

LayerImplementation
RenderingHTML5 Canvas 2D; procedural sprites painted to offscreen canvases and cached
LogicVanilla JavaScript; objects for bullets/particles; fixed update ticks
AudioWeb Audio API — procedural music + pre-rendered IRIS voice clips (MP3)
NetworkingPeerJS (WebRTC data channels), six-digit room IDs
PersistencelocalStorage — settings, high score, run save
Desktop buildElectron wrapper — 2-Windows/, SOL Frame.exe
Web buildSelf-contained SOL Frame.html + peerjs.min.js + iris/
Mobile buildCapacitor / Android project → APK; installable web app
PWAmanifest.json — fullscreen, theme #010103
PLATFORM MATRIX
WindowsPortable .exe, no install
WebStatic hosting or local file
AndroidAPK via Android Studio
iOSSafari Home Screen, or Mac + Xcode IPA
PERFORMANCE TARGETS
  • 60 FPS on mid-range laptops and modern phones at Medium particles.
  • Particle-density setting protects frame-rate on low-end devices.
  • Sprite caching avoids per-frame vector redraws.
17

Content Inventory

16
Sectors
10
Waves / sector
160
Total waves
16
Unique bosses
15
Wave events
6
Enemy kinds
6
Weapons
11
Weapon tiers
4
Difficulties
3
Languages
16
IRIS voice events
14
Drop types
18

Save Data & Settings

KeyStored
High scorelocalStorage
LanguagelocalStorage
Volumes (master / SFX / music)localStorage
Particle densitylocalStorage
IRIS tips / voice toggleslocalStorage
Seen tutorial tipslocalStorage
In-run saveSerialised run state (sector, wave, ship stats, banks, P2)
19

Future / Post-Launch Roadmap

NEAR-TERM

More to master

  • New sector variants & boss kits after sector 16
  • Endless / survival mode from the existing generator
  • Online leaderboards
  • Achievements & unlockable ship skins
MEDIUM-TERM

Wider reach

  • iOS App Store release (signed IPA)
  • IRIS inter-sector story transmissions
  • Additional languages via a voice pipeline
  • Remappable controls & gamepad support
LONG-TERM

Ecosystem

  • Sector / wave editor from the data-driven traits system
  • Competitive co-op scoring
  • Ghost replays
20

Appendix — Build & Play

PLAY FROM SOURCE

Browser: open 1-Game/SOL Frame.html

Windows: run 2-Windows/SOL Frame.exe

Mobile: install the APK, or host 1-Game/ over HTTPS

REBUILD PROMO IMAGES

cd 6-Promo && ./build.sh

Needs Node, Python + Pillow and Microsoft Edge. The pipeline poses the real renderer and screenshots it headlessly.

REGENERATE IRIS VOICE

python _iris_tts.py

Produces the 48 MP3 clips across English, Arabic and Japanese.

MOBILE BUILD

cd mobile
node sync.js && npx cap sync android

Then Build > Build APK(s) in Android Studio.

21

Localization & Language Switching

SOL Frame launches with three fully supported locales — English, العربية (Arabic, RTL) and 日本語 (Japanese). Language is a live runtime setting, not a build-time choice: the player opens Settings → 言語 / LANGUAGE, picks a locale, and every menu, HUD label, tutorial transmission and IRIS line re-renders instantly — no reload, no lost progress.

Design intent. One data-driven LOCALES table feeds the entire interface. A locale is data, not code — shipping a fourth language means adding one locale block, a font stack and a voice set, with no changes to game logic.
Try it live. Use the AR / JP / KO / EN switch at the top-right of this page to translate the entire document — headings, tables, captions and this section included. The choice is remembered in your browser.

Localization matrix

Representative interface strings across all three shipped locales. The Japanese column uses natural, game-native phrasing (e.g. 兵装庫 for the Armory, システム障害 for System Failure) rather than a literal translation.

KeyEnglishالعربية日本語
scoreScoreالنقاطスコア
livesLivesالأرواحライフ
missilesMissilesالصواريخミサイル
creditsCreditsالرصيدクレジット
weaponWeaponالسلاح武器
levelLevelالمستوىレベル
foodFoodالطعامフード
comboComboالتتابعコンボ
sectorSectorالقطاعセクター
waveWaveالموجةウェーブ
bossBossالزعيمボス
start_missionStart Missionابدأ المهمةミッション開始
continue_gameContinueمتابعةコンティニュー
armoryArmoryمستودع العتاد兵装庫
settingsSettingsالإعدادات設定
multiplayerMultiplayerاللعب الجماعيマルチプレイ
exitExitخروج終了
resumeResumeاستئناف再開
system_failureSystem Failureعطل النظامシステム障害
warp_readySystem Cleared — Warp Readyتم تأمين القطاع — الاستعداد للانتقالシステムクリア、ワープ準備
boss_eliminatedBoss Eliminatedتم القضاء على الزعيمボス撃破
comms_incomingComms Incomingاتصال وارد通信着信
extra_lifeExtra Life!حياة إضافية!エクストラライフ!
cannot_affordNot Enough Creditsرصيد غير كافٍクレジット不足
select_difficultySelect Threat Levelاختر مستوى التهديد脅威レベルを選択
easyEasyسهلイージー
normalNormalعاديノーマル
hardHardصعبハード
extremeExtremeمتطرفエクストリーム

Language switching — runtime flow

01
Player opens 設定 / Settings and taps the 言語 / LANGUAGE selector.
▼
02
setLanguage(lang) is called — en, ar or jp.
▼
03
The active LOCALES block is swapped and all bound labels re-render in place.
▼
04
<html lang> is updated; rtl is toggled for Arabic; the Japanese font stack is enabled.
▼
05
The choice is written to localStorage and restored on the next launch.

Typography & layout per language

LATIN

English

Rajdhani for body copy and Orbitron for headings. Standard left-to-right layout with condensed, uppercase HUD labels.

RTL

العربية

Cairo typeface with a mirrored interface: text alignment, HUD ordering and padding flip for right-to-left reading. Punctuation and numerals follow Arabic conventions.

CJK

日本語

Noto Sans JP with relaxed letter-spacing and non-uppercase labels, since full-width characters do not need tracking. Japanese line-breaking avoids orphaning short particles.

Voice & audio per language

Every IRIS tutorial and reaction line exists as a pre-rendered clip in all three languages — 16 events × 3 languages = 48 MP3 files under iris/ (for example ja-heat.mp3 and ar-heat.mp3). If a clip is missing, the game falls back to the browser's Speech Synthesis API using the locale's BCP-47 tag (ja-JP, ar-SA, en-US) before finally falling back to English text.

Safe switching. Changing language mid-run never interrupts play: the active wave, weapon level, heat and banks are all language-agnostic. Only visible copy changes. Arabic also preserves the numeric HUD values untouched.

Adding a fourth language

DATA

Locale block

Add one entry to LOCALES with the same key set. Missing keys automatically fall back to en, so a partial locale is safe to ship and refine.

ASSETS

Fonts & voice

Register a font stack for the script and generate the 16 IRIS clips via python _iris_tts.py. No gameplay code changes are required.