Att skapa spel

Om dataspel

Dataspel har funnits nästan lika länge som datorer. Från början var det enkla varianter av analoga spel, som tennis och luffarschack. Spel som Pong och Space Invaders (Rymdattack i vår version, båda finns som Scratchuppgifter) kom på 1970-talet. Pacman, en annan klassiker, är ett japanskt spel som lanserades som arkadspel 1980 och som ville nå en bredare målgrupp och även få flickor intresserade av spel.

Frågor:

  • Vilka spel gillar du?
  • Vad finns det för olika sorters spel?
  • Tror du att olika spel riktar sig till flickor eller pojkar?

Spelgenrer

Precis som för filmer och böcker, finns det olika genrer för dataspel. Här är det delvis andra genrer som gäller, eftersom dataspel är en blandning av berättelse och lek/spel. Genrer kan t ex vara strategispel, äventyrsspel, pusselspel, actionspel, musikspel, sportspel, skräckspel.

Det finns även olika genrer för hur du spelar. För spel där du ska skjuta finns det t ex så kallad First person shooter (förstapersonsskjutare, där du ser spelvärlden med huvudkaraktärens blick, eller Third person shooter (tredjepersonsskjutare) om du ser huvudkaraktären utifrån. 

Spelvärldar

Spelvärld kallas den miljö som spelet utspelar sig i och som även innehåller möjligheter och begränsningar för vad spelaren kan göra. Spelvärlden kan fungera mer eller mindre realistiskt, det kan finnas magi och övernaturliga fenomen eller fungera precis som i den verkliga världen.

Det kan upplevas som att spelvärlden är hur stor som helst och att du har alla möjligheter, men spel har alltid begränsningar. Någonstans tar spelvärlden slut. En spelvärld kan också vara väldigt avgränsad, som t ex i en labyrint eller en fotbollsplan.

Spelkaraktärer och avatarer

En spelkaraktär eller spelfigur är den som spelaren styr i spelet, t ex Super Mario, Pacman eller Lara Croft, och även de övriga karaktärer som datorn styr. Lite mer komplexa spelkaraktärer har programmerade egenskaper, känslolägen och personligheter. Om spelaren själv kan välja utseende och egenskaper till sin spelkaraktär, kallas det för en avatar.

Spelkaraktärer kan också delas in i protagonist, som betyder ”tidig kämpe” eller ”tidig tävlare” och är huvudkaraktären som spelaren styr, och antagonist som är motståndaren.

I presentationen finns två bilder på Super Mario och Lara Croft. Förutom frågorna till bilderna (vilka de är, vilket spel de kommer ifrån, hur spelvärlden ser ut) kan ni gärna prata om stereotyper och kvinnligt/manligt i spel. 

Frågor:

  • Vilka spelkaraktärer känner du till? Har du någon favorit?
  • Kan du säga vem som är protagonist och vem som är antagonist i något spel?
  • Hur brukar en hjälte/protagonist se ut i spel?
  • Hur brukar en motståndare/antagonist se ut i spel?
  •  Känner ni till några spelkaraktärer som är flickor eller kvinnor?
  • Varför tror ni att det finns fler manliga karaktärer än kvinnliga?
  • Hur brukar kvinnliga spelkaraktärer se ut?
  • Hur brukar manliga spelkaraktärer se ut?
  • Om ni fick skapa ett eget spel, vem skulle vara hjälten/protagonist då?

Spelets berättelse och spelmekanik

Spel är en blandning av berättelse och lek/spel, och är därför en form av interaktiv berättelse som är mer komplex än en vanlig berättelse med en enkel röd tråd.I spel är det spelaren som styr och som kan påverka berättelsen. Det finns olika valmöjligheter och varje gång du gör ett val ändras berättelsen. Det är inte ens säkert att det finns ett slut eller ett mål med spelet!

Istället för att prata om dramaturgi, finns ludologi för dataspel. Ludo betyder spel. I spel är det spelaren som styr och som kan påverka berättelsen. Det finns olika valmöjligheter och varje gång du gör ett val ändras berättelsen.

Men egentligen är det inte spelaren som styr, utan den eller de som skapat spelet som bestämmer! Bakom varje spel finns en speldesigner som har bestämt: Vad är möjligt att göra? Vad är inte möjligt? Vad händer när spelaren gör vissa val? Vad händer när spelaren lyckas eller misslyckas med något? Hur vinner du spelet? När förlorar du? Och så vidare. Detta kallas för spelmekanik.

Gameplay

Ett begrepp som också används är gameplay, vilket beskriver allt som har att göra med spelarens interaktion med spelet. Spelmekanik är reglerna för spelet, vilka möjligheter och begränsningar som finns, medan gameplay handlar mer om upplevelsen och känslan i spelets handling.

Att skapa dataspel

Att skapa ett dataspel kan vara enkelt men också väldigt komplext. Stora spel skapas av stora team, med många människor inblandade som har erfarenhet och ofta utbildning inom sitt område. Exempel på roller som finns i en spelstudio: producent, speldesigner, spelprogrammerare, ljudläggare, 3D- och 2D-grafikerför olika delar i spelet (för textur t ex).

När du precis har börjat med programmering kommer du kanske inte kunna skapa de spel som du själv spelar till vardags. För att komma igång kan du prova på att skapa några enklare, klassiska spel som skapades på 80-talet så väl som förenklade versioner av nya spel. 

Planering av berättelse och spelmekanik

Om du har skapat berättelser redan har du antagligen provat på att göra storyboards. För att skapa spel kan du också göra storyboards där du bestämmer spelvärld, karaktär, mål med spelet, hinder och lösningar. Men du behöver samtidigt göra ett schema över spelmekaniken, vad som ska hända när spelaren interagerar med berättelsen. Här sätter du upp regler och villkor för spelet, och kan därefter planera hur detta ska skapas med kod.

Tips: Gör gärna övningen ”Storyboard för spel” där ni tillsammans går igenom och ritar upp ett storyboard/schema för spelet Pacman. 

Grafik och animation

En stor del av arbetet bakom ett spel handlar om grafiken, bilderna, av t ex miljöer och karaktärer. Det delas in i 2D-grafik (även för konceptskisser inledningsvis) och 3D-grafik. Grafiken för mer komplexa spel delas in i många olika delar, t ex texturering som handlar om att skapa olika ytor för väggar, hus, mark, kläder och så vidare. Animering är ett eget område och det som ger rörelse till grafiken.

Ljud

Ljudläggning är en viktig del för spel. Ljudeffekter förstärker det som händer i bild, men bakgrundsljud används också som ett sätt att skapa spänning, visa på olika känslolägen och så vidare.

Spelprogrammering

Att programmera handlar inte enbart om att skapa kod, det är lika mycket planering. Du behöver planera spelets handling och spellogik, möjligheter och begränsningar, och dela upp spelet i flera mindre delmoment för att kunna planera hur koden ska se ut. Det gör du till exempel genom att rita storyboards eller scheman över hur spelet ska byggas upp.

Uppgifter i Scratch

På temat spel kan du prova på att göra några varianter av enkla spel, inspirerade av gamla klassiker så väl som nyare spel. Här är några exempel:

Pong är ett klassiskt spel för två spelare, men som också går att spela själv. Du styr två plattor och studsar en boll fram och tillbaka över spelplanen. Spelet var från början ett arkadspel från Atari och kom 1972.

Rymdattack (Space Invaders) bygger på ett klassiskt spel från 1978 som heter Space Invaders. I vår version styr du en rymdraket som ska skjuta mot attackerande robotar.

Labyrinten är ett exempel på en hel genre dataspel som det finns massor av varianter på. Ett tidigt labyrintspel hette Gotcha och lanserades av Atari 1973. Pacman är också ett labyrintspel.

Eget spel – eller remixa klassikerna

Vill du hellre skapa ett eget spel utifrån de funktioner de har lärt sig, gör först ett storyboard för spel och fundera på hur du kan koda varje delmoment. Var uppmärksam på att det blir genomförbart och inte allt för komplext. För varje gång du ger spelaren ett val som förändrar handlingen kan mängden kod du behöver göra öka exponentiellt!

Här är exempel på spel skapade i Scratch och som visar hur du kan skapa spel utifrån dina egna intressen och att spel kan se ut på väldigt olika sätt:

Begrepp inom programmering som introduceras

Här är några exempel på begrepp inom spelprogrammering som vi introducerar i uppgifterna till Scratch:

Kollision: I spel behövs en funktion som känner av kollision, det vill säga om en sprajt nuddar eller krockar med något i spelvärlden. Om du t ex krockar med en vägg, och då ska studsa tillbaka, eller möter ett monster och då ska bli uppäten.

Om det sprajten möter är ett fast, orörligt objekt som t ex en del av bakgrunden, kan du använda koordinater. I Scratch kan du även använda objektets färg. Är det en annan sprajt kan du i Scratch känna av den.

Variabel: Kan ses som en slags behållare (burk, byrålåda) där du lägger information, t ex ett värde, som kan ändras medan programmet körs. Används ofta i spel för att skapa poängräkning eller räkna antal liv en spelkaraktär har. Du skapar egna variabler och kallar dem för t ex ”poäng”. Sedan skapar du kommandon för att variabeln ”poäng” ska öka eller minska när något händer i spelet.

Slumptal: Ibland vill du kunna göra oförutsägbara händelser i spelet, för att skapa ett överraskningsmoment för spelaren. T ex att ett monster kommer fram från olika håll vid olika tillfällen, slumpmässigt. Då kan du använda slumptal, för att t ex ange en sprajts riktning.

Kloner: Säg att du skapar ett spel där huvudkaraktären möter ett monster. För att spelet ska bli svårare ju längre du spelar, kan du göra så att det dyker upp fler och fler monster. Då är det bra att kunna skapa en klon! En klon är en exakt kopia av en sprajt, både till formen och hur den är programmerad. På så vis behöver du inte skriva samma kod flera gånger för varje monster. Klonerna kan ändå programmeras så att de beter sig lite olika. (Jämför med att skapa instanser av en klass inom objektorienterad programmering.)

Andra läromiljöer

Det här är webbaserade lärmiljöer för er som vill prova något annat än Scratch:

  • Spelprogrammering.nu: skapa spel med Javascript, svenska.
  • Kodu: gratis program för PC för att skapa 3d-spel med visuellt programmeringsspråk. 
  • Code Avengers: gratis grundkurs bl a för att skapa spel med Javascript, engelska.
  • Crunchzilla Game-maven: övningar i Javascript, engelska, 16 år och uppåt.
  • Code Combatspel som lär ut Javascript, första nivån gratis, engelska, 13 år och uppåt.
Har du kommentarer till materialet på den här sidan? Mejla info@kodcentrum.se