Bag kulisserne: sådan byggede vi LateTowers, et tower defense-spil tegnet helt i kode

Ingen spilmotor, ingen billedfiler til heltene, og balloner, der er de samme, hver gang du spiller en bane. Sådan virker LateTowers indeni, og hvorfor vi lavede det sådan.

LateTowers startede som en lille idé: et roligt spil til de sene timer, noget man kunne lade køre, mens man læste eller chattede, og vende tilbage til senere. Siden er det vokset til 31 helte, ti lande, årstidsbegivenheder og en Steam-version på vej. Her er et kig på, hvordan det er bygget, og på nogle af de valg bag det, som man ikke kan se udefra.

Ingen motor, ingen download

LateTowers er skrevet i almindelig JavaScript og tegnet på et HTML-lærred (canvas). Der er ingen spilmotor nedenunder. Det var et bevidst valg: en motor lægger megabytes til, som skal hentes, før man kan spille, og mange LatePals-medlemmer ligger med en telefon i sengen, nogle gange på en svag forbindelse. Hele spillet, regler og tegninger med, indlæses på omtrent den tid, det tager at åbne en almindelig hjemmeside, og det kører ens på en fem år gammel telefon og en gamer-pc.

Spillet er delt i to. Én fil indeholder reglerne: hvor meget skade en pil gør, hvor hurtigt en ballon bevæger sig, hvad en boss gør, når den bliver vred, og hvad en opgradering koster. Den anden tegner alt og tager imod dine tryk og klik. Regelfilen ved intet om skærmen, så vi kan køre den alene, tusindvis af baner ad gangen, og teste spillets balance uden at tegne et eneste billede.

Helte tegnet i kode

Ingen af heltene er billedfiler. Hver eneste en, fra aben med pilene til den trehovedede hydra, er tegnet af former i kode: ellipser, kurver og omrids, malet med materialer som pels, fjer, stof, metal, bark eller skæl. Et lys fra øverst til venstre giver hver helt højlys, og en blød skygge på den modsatte side giver dybde. Det færdige billede gemmes i hukommelsen, så tegnearbejdet kun sker én gang og ikke tres gange i sekundet.

At tegne i kode er mere arbejde i starten, men det betaler sig. En helt kan blinke. Den kan løfte armen, før den kaster, så du ser den tage tilløb, før pilen forlader hånden, og pilen flyver først, når armen kommer ned. Den kan bære nissehue i december og kaninører til påske, og farven på et skin lægges oven på heltens eget lys og skygge i stedet for at male den flad. Da vi i efteråret tegnede heltene om med hænder, ben og vinger, der bevæger sig, fulgte alle skins og årstidsdragter med af sig selv.

De samme balloner hver gang

Ballonerne på hver bane kommer fra en tilfældighedsgenerator, der får banens nummer som "frø". Det betyder, at bane 120 altid sender de samme balloner i samme rækkefølge, uanset hvem der spiller den, og hvor mange gange. Det lyder som en lille detalje, men det gør spillet fair (alle møder den samme bane 120), det gør det muligt at genskabe fejl, og det lader serveren tjekke din fremgang, hvilket bringer os til dommeren.

En dommer på serveren

Dit spil kører i din egen browser, og det er det, der gør, at det virker uden internet og føles øjeblikkeligt. Ulempen ved et spil, der kører på spillerens maskine, er, at man kan få spillerens maskine til at lyve. Derfor kigger en lille dommer på vores server på, hvad der har ændret sig, hver gang dit spil gemmes: steg guldet med et beløb, der er muligt for den bane og den tid? Havde du virkelig råd til den helt? Kunne du være nået til den bane siden sidst? Dommeren kender de samme priser som spillet. Passer noget ikke, sættes gemningen tilbage til den sidste gode. Det er det, der holder Top 10 ærlig, uden at spillet skal vente på serveren ved hvert skud.

Mens du er væk

LateTowers er et "idle"-spil: det kører videre, når du lukker det. Det gør vi på to måder. Er du væk i op til et kvarter, spiller spillet simpelthen den manglende tid, når du kommer tilbage, hurtigt og uden at tegne noget, så du vender tilbage til præcis den kamp, du ville have set. Er du væk længere, ville det tage for lang tid på en telefon at spille hvert sekund, så i stedet regner spillet ud, hvor meget guld dine helte ville have tjent, og betaler det. Din gemning ligger på din konto, så du kan lukke spillet på telefonen og åbne det på computeren, og det virker også uden internet: det husker din fremgang og afleverer den til serveren, når du er online igen.

Balance ved simulation

Hvor hurtigt skal man komme gennem banerne? Hvor rig skal man være efter en uge? I stedet for at gætte kører vi regelfilen gennem en simulator, der spiller tusindvis af baner med fornuftige valg og måler, hvor lang tid hver bane tager, og hvor meget guld, diamanter og kister der kommer ud. Da spillerne fortalte os, at spillet gik for hurtigt, og at de druknede i diamanter, ændrede vi tallene, kørte simulatoren igen og sammenlignede kurverne, før noget nåede det rigtige spil. Alle helte kan også ramme ved siden af, især på hurtige balloner langt væk, så selv et stærkt hold ikke føles som en maskine.

Hvad der kommer

Steam-versionen er på vej og bruger den samme konto, så din fremgang følger med. Vi bliver ved med at tilføje helte, lande og begivenheder, og du kan se alt, hvad der er ændret, på vores Nyt-side. Vil du prøve, er guiden til LateTowers og helte-leksikonet gode steder at starte, og virker noget ikke, som du forventer, vil vi meget gerne høre om det på vores kontaktside.

Stadig vågen? Du er i godt selskab.

LatePals er et gratis socialt netværk for natteravne og skifteholdsarbejdere. Chat, del og find folk, der er vågne, når du er.

Opret din gratis konto