Speldesign #6

Featured image

Denna gång tänker jag skriva om vad jobbat med nyligen. Jag har arbetat mycket på att få en snyggare HUD (Heads-Up-Display) och även med en mycket svårare del som har krävt mycket tid. AI (artificiell intelligens). Men först, lite HUD.

Som jag nämnde i tidigare blogg så har jag arbetat en hel del med HUD på senaste. I början så var det bara två olika bars som representerade spelarens liv och energi. Men efter att ha haft testare som spelat så sa alla samma sak, att det är otydligt vad som är vad. Och vad det används till. Så jag lade till texter där det står ”Health” och ”Energy”. Men Featured imagegruppen sa att dem tycker det vore roligare med en mer visuell representant än bara en tråkig text. Så en grafiker (Håkan Pettersson) gjorde ett hjärta och ett batteri som jag placerade bredvid dem olika bars’en. Så nu finns det ett fint litet hjärta och batteri som representanter av liv och energi.

Hur jag gör är att jag ritar ut dem med enkel kod och uppdaterar ständigt koordinaterna så dem ligger uppe i hörnet av skärmen bredvid bars’en.

Featured image

Nu lite AI! Jag tror att AI är nog det värsta jag jobbat med när det kommer till kod. Hur gör man? Hur börjar man? Det är många som sa till mig att AI är svårt men när jag satte mig med det själv så fick jag själv se hur svårt det var.

Det enda jag lyckades med, efter att ha suttit flera timmar med kodande, var att fienden ständigt följer efter spelaren. Och eftersom fienden är snabbare än spelaren så blev det en ganska svår fiende.

Hur jag gjorde kanske blir konstigt om jag försöker förklara i ord men det är så jag föredrar att skriva mina bloggar. Jag gjorde att koden räknar ut en vinkel mellan spelaren och fienden. Vinkeln har tre hörn som den utgår ifrån. Längst uppe i hörnet, spelaren och fienden. Efter den så blir det Pythagoras sats (C = sqrt(A^2 + B^2)). Då får den som sagt ut vinkeln och vänder sig hela tiden mot spelaren och rör sig alltid i den riktningen.

Varför tycker jag är ganska uppenbar. Vi kan inte ha en fiende som bara ligger och flyter. Först så sprang den runt i cirklar vilket gjorde att det inte blev någon utmaning för spelaren. Men nu så när den följer efter så skapar den en bättre utmaning för spelaren.

Speldesign #5

Hej, här kommer lite uppdatering om vad jag hållit på med.

Som jag nämnde förra blogg-posten så hade jag gjort en meny. För att använda menyn så tryckte man ner ‘W’ för att gå uppåt och ‘S’ för att gå neråt. Detta var tydligen på tok för oklart om hur man gjorde. Så under speltestning, så när spelarenFeatured image satte sig ner så frågade han eller hon direkt: ”Hur använder man menyn?”.  Så jag lade till en kort förklaring under alternativen om hur man använder menyn. Egentligen tänker jag byta ut ‘W’ och ‘S’ till uppåt-pil och neråt-pil. Varför är för att det skulle kännas mer naturligt för det flesta användarna. Under speltestet så testade alla pilarna och inte ‘W’ och ‘S’. Varför jag inte byter ut redan nu är för att ‘W’ och ‘S’ är programmerade att bara kännas av en gång per tryck. Så även om man håller ner någon av alternativen så kommer den ändå bara hoppa ett snäpp. Koden uppdateras många gånger per sekund så det var viktigt att programmera att den bara känner av en gång eftersom det annars var näst intill omöjligt att välja i menyn, då det bara är tre alternativ. Så säg att den uppdateras 20 gånger i sekunden och man trycker ner någon knapp lite snabbt, så är ändå knappen nere i nästan en sekund. Då har den alltså hoppat 20 gånger. Så därför gjorde jag en kod som gör att den inte kan hoppa mer än 1 gång på tryck, även om man håller nere knappen.

Featured image

Jag har även jobbat en hel del med HUD (Heads-Up-Display). HUD är saker som ger spelaren en uppfattning om vad som händer på skärmen. Som om du har en HP-bar (health-point bar) så ger det spelaren en uppfattning om hur mycket liv den har. Eller om du kanske visar ammunition, så är det en slags HUD. HUD är alltså en visuell representant av vad som händer på skärmen.

Vad jag gjort är att jag la till vad saker och ting var. Typ som i vår Healt-point bar, så står det ”Health 100%”. Så det står vad det är och hur mycket man har. Den visas även visuellt av att när man tappar liv så försvinner en bit av baren, och när desto mindre liv man har, desto mindre ser man. Detta beskriver jag i en av mina tidigare bloggar.

Hur jag gjorde det var att jag ritar ut en text som hela tiden uppdateras med spelarens koordinater. Så den kommer alltid ligga uppe i vänstra hörnet. Spelaren har egentligen 200 i liv. Men jag ville visa spelaren i procent eftersom dom flesta är vana vid det. Så jag tar spelarens liv och delar den med 2. Så kommer den visa spelarens liv i procent. Varför inte spelaren bara börjar på 100 i liv är för att health-point baren ritas ut med livet. Det gjorde att 100 blev en för liten representant av livet. Så varför är bara rent visuellt.

Jag har även gjort att fienden kan dö. Den får en liten health-point bar vid sig och när den når 0 så ”dör” den. Hur den funkar, är att den tar fiendens koordinater och följer efter fienden hela tiden. den börjar på 40, och precis som jag skrev om spelarens healthbar så är det bara för rent visuellt sett som jag sätter dom värdena.

Jag la även in text som hjälper spelaren att förstå hur man spelar. Som man kan se på bilden bredvid spelaren så står det ”Use ‘Mouse1’ to shoot”. Det står så ändå tills spelaren skjuter. Det finns olika tips medans man spelar. Så om man kommer till en dörr så står det hur man öppnar den. Det står även hur man gasar. Texten försvinner när man har använt sig av tipset. Så om man öppnar en dörr, så kommer den inte längre visa hur man öppnar en dörr. Eller som jag skrev, så när man skjuter så kommer den inte längre visa hur man skjuter.

Hur jag gjorde var att jag skrev ut texten och så längre spelaren inte använder sig av dom knapparna så kommer texten ligga där. Rent programmeringsmässigt så är det en variabel som hålls true tills knappen blir nertryckt.

Varför jag gjort som jag gjorde var för under speltestningen så var det ingen som testade vårt spel som förstod hur man spelade. Så hade det inte varit för att jag satt med dom så hade alla som testade bara suttit och tryckt runt på olika knappar. Det kändes som det var nödvändigt att lägga till det jag gjorde för att vem som helst ska kunna spela.

Ett problem jag stötte på var om spelaren t.ex. tryckte på ”E” innan den kommit fram till en dörr så var texten borta. Detta har dock bara hänt en gång under de 10 gångerna vi testat. Jag skulle kunna lägga till att den måste gå genom dörren innan texten försvinner men det får i sådana fall bli något till final.

Jag hoppas att denna post varit lärorik och kan hjälpa folk som funderar på att göra likadant eller bara generellt ge idéer om hur man skulle kunna göra.

Speldesign #4

Hej, nu tänker jag skriva lite om en artefakt jag arbetat på. Denna vecka har jag specifikt arbetat på en meny. Jag tog på mig detta för jag hade en idé om hur man skulle kunna göra. Jag testade min idé och den funkade fin fint. Jag gjorde med hjälp av programmet vi jobbar med (Visual Studio) att jag skrev fram tre olika texter. En för vardera alternativ.

Som alternativ har vi: Featured image

– Start Game

– Options

– Exit

Det är ganska uppenbart vad dom gör men tänker ändå snabbt gå igenom dom.

Start Game – sätter igång själva spelet.

Options – har ingen direkt funktion utan är ännu ett arbete pågående. I Options är det meningen att man skall kunna höja och sänka volymen och om jag hinner skulle jag kunna lägga in ett alternativ som gör att man får välja mellan fullscreen eller windowed. Vissa människor föredrar windowed så tänkte att det vore snällt att lägga till det som ett alternativ.

Exit – stänger bara av programmet.

Hur jag gjorde var att jag skrev ut tre olika texter som jag placerade uppe till vänster som skulle representera de olika valen. Sedan skapar jag en liten gul pekare för att visa användaren vart den befinner sig. Jag gjorde den gul för att den skulle sticka ut lite från resten vilket skulle göra det tydligare för en användare att använda sig av menyn.

Jag försökte experimentera med att även lägga till en triangel till höger om fyrkanten så den skulle se ut som en pil, men stötte på ett problem. Det blev en pil när man startade upp spelet men om spelaren förlorade och kom tillbaka till menyn så vred sig allt av någon mystisk anledning jag inte känner till. Så jag gav upp idén om att ha en pil och körde på att ha en liten fyrkant istället.

Hur menyn fungerar är att fyrkanten jag skrev om tidigare kan gå mellan tre olika värden. I detta fall kan kan vi kalla dom ” 1, 2, 3″. Därefter kunde jag bara skriva koden så att dom olika värden fick beteenden.

Alternativ nummer 1 fick vara att man gick vidare till nästa scen. I detta fall var det att den gick vidare till spel-scenen.

Alternativ nummer 2 har som sagt inget direkt beteende. Så den ligger bara där för att se fin nu.

Alternativ nummer 3 så stänger man av hela programmet.

Så egentligen har inte den lilla fyrkanten något att göra med själva texten. Jag gjorde så här för jag hade en idé om att man kunde göra så. Det finns säkert smidigare sätt att lösa det på men detta fungerade så körde på det.