Lag et komplett 2D-plattformspill som ÉN selvstendig HTML-fil. Svar kun med hele filen i én kodeblokk, uten forklaring før eller etter. ## Tekniske krav (viktig) - Én fil: `index.html` med all HTML, CSS og JavaScript inline. Ingen eksterne filer, bilder, fonter, CDN-er eller biblioteker. - Skal kjøre ved å dobbeltklikke på filen (file://). Ingen webserver, ingen `fetch`, ingen ES-moduler (`type="module"`), ingen import. - All grafikk tegnes med Canvas 2D-kode (rektangler, sirkler, polygoner). All lyd lages med Web Audio API (oscillatorer). Opprett AudioContext først ved første tastetrykk. - `localStorage` brukes til rekorder, men alltid inni `try/catch`, så spillet virker selv om det er blokkert. - Canvas 960×544 (30×17 ruter à 32 px), skalert til vinduet med bevart sideforhold og `image-rendering: pixelated`. Mørk bakgrunn rundt. - Fast tidssteg på 60 oppdateringer/sek med akkumulator i `requestAnimationFrame`. - Fullstendig, kjørbar kode. Ingen plassholdere, ingen «// resten her», ingen TODO-er. - All tekst i spillet på norsk bokmål med æ, ø, å. ## Konsept «Operasjon Nordlys»: en sidescrollende plattformspiller med tema Det norske forsvaret. En liten norsk soldat (grønn hjelm, kamuflasjeuniform, sekk, lite norsk flagg på armen) løper mot høyre gjennom et brett, hopper på fiender, slår i kasser fra undersiden og når målet på slutten av brettet. Kameraet følger bare fremover, og spilleren kan ikke gå tilbake ut av skjermen. ## Kontroller - ← → (eller A/D): gå. Shift: løp. - Mellomrom / ↑ / W / Z: hopp (svøm i undervannsbrettet). - ↓ / S: dukk (ikke under vann). - X / J: skyt (bare med gevær). - I jagerfly (se under): piltastene (↑ også W/Z/mellomrom, ↓ også S) flytter flyet, X skyter (hold inne). I fallskjerm: ← → styrer. - På ski (se under): ↑/mellomrom hopp, ← → snurr i lufta, ↓ hukende (mer fart) på bakken og grab i lufta, ← brems på bakken. - Enter: start/fortsett. Esc: tilbake til menyen. I menyen: ↑ ↓ eller 1–5 velger brett. - `preventDefault` på piltaster og mellomrom. ## Fysikk - Fliskollisjon akse for akse (først X, så Y) mot et rutenett. - Akselerasjon og friksjon. Maksfart 3,3 når du går og 5,4 når du løper. - Hopp: startfart ca. −10,6 (litt mer ved høy fart). Lavere tyngdekraft (0,45) mens hopptasten holdes og farten er oppover, ellers 0,95. Det gir variabel hopphøyde. Maks fallfart 13. - «Coyote time» (6 bilder) og hoppbuffer (7 bilder). - Faller du ut nederst på skjermen, dør du. ## Dukking - Mens ↓/S holdes på bakken, dukker soldaten: hitboksen krymper fra toppen, så føttene står på samme sted (liten 22×30 → 22×22, forsterket 22×58 → 22×32). Han går på kne, med geværet i samme høyde på kroppen. - Dukket på bakken kan han ikke gå (farten glir ut med friksjon), men han kan snu seg. - Hopper han mens han dukker, holder han seg dukket i lufta til tasten slippes. Han reiser seg bare hvis det er plass over hodet; ellers forblir han dukket. - Prosjektilet går ut i høyde y + 21 fra toppen av hitboksen. Stående går skuddet derfor over lave fiender på bakken, mens det treffer dem fra dukket stilling. - Beregn hitboksen med én funksjon av (stor, dukket), og la både kraftnivå-endringer og dukking gå gjennom den, så føttene alltid står stille. ## Jagerfly-seksjon (første del av Luftforsvaret) Luftforsvaret starter i et F-35 over skyene. Etter ca. 20 sekunder blir flyet skutt ned, piloten hopper ut i fallskjerm, og resten av brettet spilles til fots. - Banen får 150 ekstra ruter først. Banebitene begynner ved rute 150. Rute 0–99 har ingen bakke, og fra rute 100 er det vanlig bakke, så fallskjermen alltid lander på land. - **Spillerens fly:** hitboks 48×16, tegnet 56×18 fra siden med nesa mot høyre: grå skrog, lyseblå cockpit, mørkere halefinne med lite norsk flagg, vinge under og blafrende oransje etterbrennerflamme. Start i x = 3·32, y = 6·32. HUD viser «SKROG» med 4 grønne felt i stedet for geværikonet, og «JAGERFLY!» med kontrollene i 4 sekunder. - **Styring:** kameraet ruller 3 px per bilde av seg selv, og flyet følger med. Piltastene gir ønsket fart 4,5 i hver retning, nådd med 20 % per bilde. Flyet holdes mellom cam + 8 og cam + 960 − 168 bortover og mellom y 70 og 464. X skyter hvert 8. bilde så lenge den holdes (maks 6 skudd, fart 16). - **Fiendtlige jagerfly** (48×16, mørkegrå, mørkerød halespiss, nesa mot venstre) står i banedata som `J` i (rute, rad): (30,5) (36,9) (42,4) (48,11) (55,7) (60,3) (64,10) (72,6) (78,8) (84,4) (90,10) (95,6) (102,3) (106,9) (112,7) (118,5). I tillegg kommer tre droner i (40,8) (70,12) (100,12), og medaljerader i (20,8) ×5, (52,5) ×4 og (88,9) ×4. Jagerflyene flyr 2,2 px per bilde mot venstre med y = start + sin(fase·1,3)·40. Første skudd kommer etter 60 bilder og så hvert 110. bilde, men bare når flyet er på skjermen og mer enn 60 px til høyre for spilleren. Skuddet er en oransje kule (8×4) som sikter på spilleren med fart 3,8. Nedskutt fly gir 200 og faller opp ned. - **Skade:** fiendekuler og kollisjon med fly eller drone (fienden dør, +100) koster ett skrogfelt, med eksplosjon og 90 bilder usårbarhet. Tomt skrog betyr døden, og hele brettet starter på nytt. - **Nedskyting:** når cam + 960 ≥ (150 − 8)·32, blinker «ADVARSEL: MISSIL!». Spilleren mister kontrollen (farten avtar 10 % per bilde), og et hvitt missil med rød spiss og røykspor kommer nedenfra til høyre og søker mot flyet med 9 px per bilde. Ved treff: stor eksplosjon, vraket spinner ned med røyk, og «UTSKYTING!» vises. - **Fallskjerm:** piloten blir vanlig soldat (22×30) med vy = −7. Deretter tyngdekraft 0,3 til maks fallfart 1,2, og vx = 2,2 ± 1,2 med ← →. Skjermen er rød med hvit midtstripe og har liner ned til skuldrene. Teksten «Styr fallskjermen med ← →» vises i 3 sekunder. Når han lander på bakken, tar vanlig spill over, og kameraet følger som normalt. - Bakgrunnsflyene i Luftforsvaret-himmelen skjules mens spilleren flyr eller henger i fallskjerm, så de ikke forveksles med fiender. ## Kamera og høye brett - Kameraet har både x (`cam`) og y (`camY`). x følger spilleren framover som før og går aldri bakover. All verden (fliser, løype, fiender, gjenstander, skudd, partikler, poengtekster, mål) tegnes med `ctx.translate(0, −camY)`. HUD og tekster på skjermen tegnes etterpå uten forskyvning. - Et brett kan ha flere rader enn skjermen (rutenettets høyde = antall rader, ikke 17). Brettbyggeren tar et valgfritt antall rader og en radforskyvning `oy`, som legges til alle radnumre, også for fiender. Bakken ligger alltid på rad oy+15 og oy+16. - Brettet deles i **bånd** {x0, x1, oy}. Inne i et bånd står kameraet fast i høyden (camY = oy·32), og faller spilleren under (oy + 17)·32 + 40, dør han. Utenfor båndene følger camY spilleren, så føttene står 45 % ned på skjermen, avgrenset til brettets høyde. camY glir mot målet med 15 % per bilde. - Vanlige brett er ett bånd med oy = 0, så de oppfører seg nøyaktig som et brett med fast skjerm. Bare Hæren bruker høyden. - Målet (flaggstang, bygning) tegnes og poengberegnes i båndet der det står. ## Ski-seksjon (slutten av Hæren) Hæren ender med en lang utforløype over mange skjermhøyder, ca. 270 ruter og ca. 80 rader ned. Trappa på åtte trinn (rute 194–201, høyde 1–8) leder opp til starten. Delen av brettet før løypa ligger øverst (bånd oy = 0). Målområdet ligger nederst i et eget bånd, der oy = løypas sluttrad − 15 (ca. 71), og brettet har oy + 17 rader. - Løypa er en polylinje i piksler, ikke fliser. Bygg den med `buildSkiTrack(202, 7, deler)` fra rute 202, rad 7. Delene er: - `['bakke', lengde, fall]` (ruter; negativt fall = oppover) - `['kløft', bredde, fall]` (hull uten bakke) - markører som plasseres et stykke framover fra der løypa er kommet: `['stein', a]`, `['tre', a]`, `['scooter', a]`, `['medaljer', a, antall, høyde over bakken]` - `['storbakke']`, som merker hoppkanten på storbakken, og `['skred']`, som merker hvor snøskredet starter Til slutt rundes løypa av til en hel rad (4 ruter slakt ned) og en hel rute. - Bruk nøyaktig disse delene (K = `['bakke',1.4,0.6],['bakke',1.4,-0.2]`, én kul): `['bakke',10,4],['stein',5],['bakke',8,3],['medaljer',2,3,2],['bakke',10,3],['bakke',2,-1.2],['bakke',0.3,0.9],['medaljer',2,4,3],['bakke',12,4], K×6, ['scooter',2],['scooter',10],['tre',4],['tre',16],['stein',17],['bakke',22,6],['bakke',18,4.5],['bakke',14,8],['bakke',3,0.3],['storbakke'],['bakke',2,1.5],['medaljer',6,5,3],['bakke',28,17],['bakke',8,2],['skred'],['bakke',6,0.5],['bakke',10,3],['bakke',2,-1.2],['bakke',0.3,0.9],['medaljer',2,3,3],['bakke',12,4],['bakke',12,3.5],['bakke',3,0.3],['kløft',4,1.5],['medaljer',-3,4,2],['scooter',4],['bakke',10,3], K×3, ['tre',6],['bakke',14,5],['bakke',8,1],['bakke',10,0.5],['bakke',10,0]` Det gir oppvarming med stein, hoppkant, kulekjøring, skog med snøscootere, en stor hoppbakke (tilløp 30°, hoppkant, kul og lang unnarenn), snøskred, en hoppkant til, en kløft, flere kuler og en slak utkjøring inn mot mål. - Medaljer legges som buer: medalje i går i rute floor(x/32)+i, `høyde` rader over bakken, og de midterste én rad høyere. Bakkerutene under løypa er tomme. - Etter løypa kommer målbåndet: vanlig bakke, en trapp på 4 trinn fra 4 ruter etter løypa, flaggstang 12 ruter etter og kaserne 20 ruter etter. - **Inn og ut:** når midten av soldaten passerer starten, får han ski automatisk: dukking avbrytes, farten blir max(4, |vx|), og «PÅ SKI!» med kontrollene vises i 5 sekunder. Samtidig lagres et **sjekkpunkt** på toppen av trappa. Dør han etter det, starter han der i stedet for på starten av brettet (et nytt spill nullstiller sjekkpunktet). Ved slutten av løypa står det «SKIENE AV», vx blir min(fart, 5,4), og vanlig fysikk tar over. - **På bakken:** soldaten følger bakken. Bruk den eksakte hellingen a til segmentet han står på: fart += sin(a)·0,3 − 0,008; hukende (↓) +0,05; brems (←) −0,12. Farten holdes mellom 2,5 og 10, og han flyttes fart·cos(a) bortover per bilde. - **Avgang:** hopp gir vy = fart·sin(a) − 7. Han letter også av seg selv når neste segment er mer enn 0,35 rad brattere nedover (hoppkant og kultopp), eller når bakken faller bort raskere enn han følger (kløft). Da beholder han farten og retningen fra bakken. - **I lufta:** tyngdekraft 0,45 og maks fallfart 13. ← → snurrer 0,13 rad per bilde (→ forover). Uten snurr retter han seg 0,05 rad per bilde mot hellingen under seg. ↓ i lufta er grab. - **Landing:** han lander hvis føttene er under bakken og var høyst 14 px under den forrige bildet; ellers har han truffet veggen i en kløft, vx blir 0, og han faller. Avviker vinkelen hans mer enn 0,65 rad fra den utjevnede hellingen (målt ±6 px), velter han: «VELT!», 45 bilder uten kontroll, farten til 2,5 og snøsprut, men ingen skade. Ved ren landing gir hver hele snurr (summen av egen snurr / 2π, avrundet) 500 poeng («SALTO», «2× SALTO»), grab i over 20 bilder 200 («GRAB») og lufttid over 70 bilder 100. Tok han av innen 2 ruter fra storbakkens hoppkant, regnes hopplengden: (landing − avgang) i ruter · 4 meter, 5 poeng per meter («71 m»). - **Farer:** steiner (24×18) og grantrær (hitboks 14×42, tre lyse grønne lag med snø på, så de skiller seg fra skogen bak) skader som fiender og setter farten til 2,5. Å falle i kløfta er død (død når han er 250 px under den høyeste kanten). - **Snøscootere** (40×22, mørkerød med fører, roteres etter bakken) kjører nedover løypa i 3,5 px per bilde når de er aktivert, så spilleren tar dem igjen i skogen. Hopper han på dem, dør de (+200). Treffer han dem fra siden, tar han skade. Kommer de til en kløft, faller de. - **Snøskred:** når soldaten passerer skred-merket, starter et skred 700 px bak ham med «SNØSKRED!». Det flytter seg max(7, min(11, 8,6 + (avstand − 400)·0,012)) px per bilde, så det ligger ca. 500 px bak i full fart: én velt går bra, to gjør det ikke. Når skredet når ham, dør han. Det stopper og blekner bort når han når målportalen. Skredet tegnes som en vegg av hvite og lyseblå snøskyer langs løypa bak fronten, med snøsprut. Den venstre skjermkanten får en hvit gradient (260 px) som blir tettere jo nærmere skredet er, og det romler lavt hvert 20. bilde. - **Kamera:** på ski ligger kameraet med 22 % av bredden foran soldaten i stedet for 40 %, og glir dit med 12 % per bilde. Loddrett følger det soldaten (se «Kamera og høye brett»). I Hæren løftes fjell og skog i bakgrunnen litt når kameraet går ned (camY·0,05, maks 100 px). - **Tegning:** snøen tegnes som tre lag (lys overflate, blågrå skygge 16 px ned, mørkere 46 px ned, ned til bunnen av skjermen) med hvit kantlinje. Kløftene står åpne. Det er en START-portal (rød) og en MÅL-portal (mørkeblå) 6 ruter før slutten, små slalåmflagg hver 9. rute (vekselvis rød og blå) og grå steiner med snø på toppen. Soldaten roteres rundt føttene (bakkens helling på bakken, egen vinkel i lufta). Han har røde ski (56 px med oppbøyd tupp) og en stav, og vises dukket når han er hukende eller tar grab. Velt vises som at han tipper bakover. ## Fliser (tegn i banedata) - `#` bakke (fast), `S` stein/plattform (fast), `P` søyle (fast, 2 ruter bred) - `?` forsyningskasse: slås fra under og gir en medalje (+200) med en liten sprett-animasjon. Blir så en tom kasse `U`. - `R` spesialkasse: ser ut som `?`. Gir **feltrasjon** hvis spilleren er liten, ellers **gevær**. - `B` ammokasse (treboks med teksten «AMMO»): knuses av forsterket spiller, ellers spretter den bare. - `C` medalje: gullmedalje med rødt og blått bånd, samles ved berøring (+100). 50 medaljer gir ett ekstra liv. - Slår spilleren i en kasse, dør fiender som står oppå den. ## Kraftnivåer 0. Liten soldat (22×30 px). 1. **Forsterket** etter feltrasjon (22×58 px, høyere kropp og lengre bein). Kan knuse ammokasser. Rasjonen er en grønn boks med «FELT RASJ» og damp. Den stiger opp av kassen og glir bortover. 2. **Gevær** (samme størrelse som nivå 1, soldaten holder et svart automatgevær). Geværet ligger stille med gul glød når det kommer ut av kassen. Med gevær skyter du raske prosjektiler rett frem (fart 12, maks 3 samtidig, munningsflamme, gult sporlys). Prosjektilene dreper alle fiender. - Blir du truffet, går du ned ett nivå og blinker usårbar i 2 sekunder. Treffes du på nivå 0, dør du. ## Fiender - Trampes på ovenfra (spilleren spretter opp). Berøring fra siden skader spilleren. - Gåfiender snur når de treffer vegg og faller ned i hull. Flyvende fiender beveger seg mot venstre i en sinusbølge. - Fiender aktiveres først når de nærmer seg skjermen. - Døde fiender blir flate en stund eller snus opp ned og faller ut av skjermen. - De fleste fiender er maskiner: fiendtlige beltekjøretøy (UGV), droner, fiendtlige jagerfly, undervannsdroner, sjøminer og datavirus. I tillegg finnes en fiendtlig fallskjermjeger (se under), uten nasjonalitet. Ingen blod. ### Pansret vogn (34×24) - Grønngrå hjulgående panservogn med lite tårn, kort kanon og rødt blinkelys. Kjører som en gåfiende (fart 0,9). - Hopper spilleren på den, lukker den lukene (tårnet senkes, kanonen trekkes inn) og blir stående (+100). Spilleren spretter opp. - Går spilleren inn i en stående vogn, eller hopper på den, sparkes den bort fra spilleren og glir i fart 7 (+50). Den spretter fra vegger, dreper alle fiender den treffer (+200 hver) og skader spilleren hvis den treffer ham fra siden (kort fritak like etter sparket). Hjulene spinner, og det spruter gnister. - Hopper spilleren på en glidende vogn, stopper den. - Etter 6 sekunder (360 bilder) i ro kjører den igjen; de siste 1,5 sekundene rister den som en advarsel. - Skudd dreper den. ### Fallskjermjeger (22×30) - Soldat med blå beret, blå og hvit stripete trøye og grågrønn uniform. Starter øverst på skjermen og daler under en olivengrønn skjerm med liner (fallfart 1,1, svak sideveis vugging). - Når han lander, forsvinner skjermen, og han snur seg mot spilleren og går som en gåfiende (fart 1,0). - Trampes han på i lufta, faller han (+200). Etter landing blir han flat (+100). Skudd dreper ham. ## Mål og flyt - På landbrettene: en trapp av steinblokker, så en flaggstang. Når spilleren når stanga, **heises det norske flagget** (rødt med hvitt og mørkeblått kors i riktige proporsjoner, 22:16). Spilleren får bonuspoeng etter hvor høyt hen traff stanga, glir ned og marsjerer inn døren på en bygning (navn per brett). Gjenstående tid telles over til poeng. - Tidsgrense 300 sekunder. 3 liv. Når livene er brukt opp: «OPPDRAG MISLYKTES». Ved seier: «OPPDRAG FULLFØRT!» og Enter gir neste brett. - HUD øverst: SOLDAT + poeng, medaljer, grennavn + sted, LIV, TID, og et geværikon når du har gevær. - Rekord lagres per brett og vises i menyen. ## Meny Tittel «OPERASJON NORDLYS» med norsk flagg. Under står en liste med 5 brett som kan velges fritt. Hvert brett viser nummer, grennavn, sted, en kort beskrivelse og rekord. Bakgrunnen til valgt brett vises bak menyen, og under listen står kontrollene, blant annet «← → gå ↓ dukk Shift løp Mellomrom hopp/svøm X skyt (med gevær)». ## De 5 brettene (ca. 200–230 ruter lange; Hæren ca. 500 ruter og 88 rader med skiløypa, Luftforsvaret ca. 350 med jagerflysonen) Bygg brettene med hjelpefunksjoner (row, col, pillar, gap, enemy) og gjenbrukbare «biter» som settes etter hverandre: flatt parti med en pansret vogn og en gåfiende, kasserekke med en fallskjermjeger over, lite hull, stort hull med trinnstein, søyler i økende høyde, svevende kasserad med medaljer over, pyramide av stein, flygende fiender pluss en fallskjermjeger og (for luftbrettet) øyer av plattformer over et stort hull. Pass på at alle hopp er mulige. Banedata bruker fiendekoder som tema-objektet oversetter: W = gåfiende, F = flyger, A = pansret vogn, D = fallskjermjeger. Hæren, Sjøforsvaret og Luftforsvaret har pansret vogn og fallskjermjeger. I Ubåtvåpenet og Cyberforsvaret blir A en vanlig gåfiende, og D utelates. 1. **HÆREN – Finnmark** («Snø, fjell, nordlys og utforløype på ski»): mørk polarnatt, blinkende stjerner, animert grønt og lilla nordlys, snøkledde fjell og furuskog (parallakse). Bakken er brun stein med snø på toppen. Søylene er betongbunkere med skyteskår. Fiender: UGV, drone, 3 pansrede vogner og 4 fallskjermjegere spredt utover brettet. Brettet slutter med ski-seksjonen (se over). Målbygning: «KASERNE». 2. **SJØFORSVARET – Haakonsvern** («Kaier, containere og kaldt sjøvann»): lys dagshimmel, sol, skyer og grå fregatter i bakgrunnen på sjøen. Bølger synes i hullene. Bakken er betongkai med gul og svart kantstripe. Søylene er røde containere. Mål: «HAAKONSVERN». 3. **LUFTFORSVARET – Ørland** («Kampfly over skyene – så videre til fots»): starter med jagerfly-seksjonen (se over). Blå himmel, skyer i flere lag, jagerfly-silhuetter som flyr forbi og et skyhav nederst. Bakken er gress, og plattformene er metall. Mange øyer over hull. Mål: en hangar med buet tak. 4. **UBÅTVÅPENET – Vestfjorden** («Kampsvømmer under vann»): undervannsfysikk. Hver hopptast gir et svømmetak oppover (vy = −4,6) uansett, tyngdekraften er 0,16 og maks synkefart 2,6. Det er lavere maksfart, en vannoverflate du ikke kan svømme over, bobler og tang i bakgrunnen og lysstråler fra overflaten. Spilleren er dykker med maske, gul flaske og svømmeføtter. Steinsøyler henger fra taket og står opp fra bunnen (grotter). Fiender: sjøminer (kan ikke trampes på, må unngås eller skytes, eksploderer), undervannsdroner og krabber. Prosjektilene er torpedoer med bobler. Bunnen er sand. Ingen flaggstang: målet er å svømme inn i luka på en stor ubåt, «KNM ULA», med norsk flagg på tårnet. 5. **CYBERFORSVARET – Jørstadmoen** («Rens nettverket for skadevare»): svart bakgrunn med grønne fallende 0 og 1 og et svakt rutenett. Bakken er et kretskort med neongrønne linjer, søylene er serverrack med blinkende LED-lys, og kassene er neonfarget. Fiender: røde virus-«bugs» med «ERR» og flimrende glitch-fiender. Mål: «DATASENTER». Hvert brett har eget tema-objekt: farger for bakke, stein, søyle, uniformsfarger på soldaten (grønn for Hæren, marineblå for Sjøforsvaret, blågrå for Luftforsvaret, svart våtdrakt for dykkeren, mørk for Cyber) og hvilke fiendetyper som brukes (W, F, og A/D der de finnes). ## Gjemt boks og bonusrom Hvert brett har én gjemt boks (`H` i banedata): usynlig, ikke fast fra sider eller ovenfra, men spilleren treffer den når han hopper opp under den. Da blir den en tom kasse `U`. Plassering (rute, rad): Hæren (38, 11). For brett som bygges av biter brukes `[bitnummer, ruter inn i biten, rad]`: Sjøforsvaret [3, 5, 11], Luftforsvaret [5, 0, 11], Ubåtvåpenet [4, 10, 9] og Cyberforsvaret [3, 4, 11]. - **Helikopter** (ubåt under vann) dukker opp to rader over boksen. Helikopteret er grønt med lyseblå cockpit, halebom, roterende rotor, meier, lite norsk flagg og en taustige på ca. 70 px. Ubåten er gul med to koøyer og propell. I 5 sekunder (300 bilder) svever det opp og ned (sin(t·0,08)·12) og stiger 0,35 px per bilde (ubåten 0,15) med svak sidedrift. Så flyr det opp med 4 px per bilde (ubåten til høyre) og forsvinner. - Rører spilleren kroppen eller stigen (hitboks 40×90, ubåten 50×24), henger han på (dukking avbrytes, usårbar) og løftes ut av skjermen. Ubåten drar i stedet av gårde mot høyre og akselererer. Spilleren jager ikke etter det; uten kontakt forsvinner det bare. - **Bonusrommet** er et separat brett på 40×17 ruter. Det nåværende brettet (rutenett, fiender, gjenstander, kamera, bånd, løype og mål) lagres og legges tilbake etterpå. Det har ingen fiender og ikke noe mål, og tiden går som vanlig. Bakgrunnen er brettets egen. - Landbrett: bakken er skyer (fast flis `K`, hvit og buet på toppen, lyseblå om natta, mørk med cyan kant i Cyber). Det er en skytrapp i (5, 13), en lang skyplattform i rad 10 fra rute 9 og en sky i (29, 13). Medaljer ligger på rad 14 med annenhver rute tom. Hæren staver **«SAP»** i medaljer (bokstaver 3×5 med mønsteret S 111/100/111/001/111, A 010/101/111/101/101, P 110/101/110/100/100, fra rute 11 med 5 ruters mellomrom, rad 5–9). De andre landbrettene har en trekant av medaljer over plattformen og par av medaljer ved endene. - Ubåtvåpenet: en undervannsgrotte med steintak (rad 0–1), steinsøyler fra bunn og tak, en ring av 12 medaljer og flere medaljerader. - «BONUS!» eller «SKATTEGROTTE!» vises ved ankomst. Helt til høyre (rute 35, rad 9) svever et helikopter (ubåt) som venter. Rører spilleren det, blir han tatt med tilbake. - **Retur:** spilleren kommer tilbake på første rute 12–40 ruter fram fra boksen der det er bakke under ruten og naboene og fri plass i radene 10–14 over. På land daler han i fallskjerm fra toppen av skjermen uten drift framover (bare ← → styrer), og under vann begynner han å svømme i rad 3. Fiender nærmere enn 6 ruter fra landingsstedet fjernes. ## Bakgrunnsaction (bare pynt) Alle brett unntatt Cyberforsvaret har action i bakgrunnen. Den påvirker ikke spillet, kolliderer ikke med noe og nullstilles når brettet starter. Hver type har sjanse 1/N per bilde for å dukke opp. Objektene ligger i skjermkoordinater og forskyves med kameraets x-bevegelse ganget med en parallaksefaktor (0,1 for fly og luftvern, 0,15 for fallskjermer og ubåter, 0,3 i horisonten, 0,6 for vannsprut). - **Hæren** (tegnes bak skogen): transportfly (N 420) som krysser i y 50–140 med blinkende lys og slipper 4 små fallskjermjegere, som daler 0,5 px per bilde og vugger til de forsvinner bak skogen. Lysgranater (N 170) skytes opp fra horisonten, daler sakte (maks 0,4) med en gul glorie (40 px) og lever 7 sekunder. Eksplosjoner bak skogen (N 130) har et oransje glimt og tre grå røykdotter som stiger, og annenhver gang en svak, dyp lyd. Sporlys (N 220) er fire gule streker som skytes skrått opp. Silhuettene er lysere enn nattehimmelen. - **Sjøforsvaret:** fly (N 520) og helikoptre (N 480) med blinkende rotor, vannsprut (N 110) som stiger og faller på sjøen, eksplosjoner i horisonten (N 160) og lysgranater (N 260). - **Luftforsvaret:** luftkamp (N 380), der to jagerfly-silhuetter jager hverandre fra venstre mot høyre med gule sporlys imellom. Luftvernsprengninger (N 70) er mørke røykdotter med oransje kjerne. I tillegg kommer hvite fallskjermer (N 260) og eksplosjoner (N 300). - **Ubåtvåpenet:** dypvannsbomber (N 120), tønner som synker 0,9 px per bilde til en tilfeldig dybde og så sprenges i en lysende ring med bobler og en dempet lyd. Torpedoer (N 300) krysser med boblespor, og store mørke ubåtsilhuetter (N 900) glir sakte forbi. - Mens spilleren flyr jagerfly eller henger i fallskjerm, dukker det ikke opp fly eller helikoptre i bakgrunnen, så de ikke forveksles med fiender. ## Effekter og lyd - Partikler: kasse-splinter, eksplosjoner, gnister når kuler treffer vegg, bobler. - Poeng som flyter opp fra treffpunktet. Medaljer spretter opp av kassen. - Korte lydeffekter: hopp, svømmetak, medalje, tramp, knust kasse, power-up-melodi, geværmelodi, skudd, eksplosjon, skade og seiersfanfare. Spillet skal kunne spilles fra start til mål på alle 5 brettene.