Viking vs. Demons Ett spel skapat av Albin Wahlstrand 2012-06-03 1
Abstrakt Denna rapport kommer att handla om mina positiva och negativa erfarenheter inom projektet jag jobbat på de senaste 10 veckorna. Jag kommer dessutom ta upp problem jag haft och hur jag löste dem samt vad jag ska göra för att inte få samma problem nästa gång jag gör något liknande. Under detta projekt har jag kommit fram till att XNA är ganska lätt att lära sig grunderna i, men väldigt svårt att bemästra helt. Jag har lärt mig väldigt mycket inom både C#, XNA och hur man jobbar i projekt. Jag hoppas på att lära mig ännu mer. 2
Innehållsförteckning Abstrakt -s.2 Innehållsförteckning -s.3 Inledning / Bakgrund -s.4 Positiva Erfarenheter -s.5 Negativa Erfarenheter -s.5 Sammanfattning -s.6 3
Inledning / Bakgrund Målet med detta projekt var egentligen bara att få så mycket kunskap av XNA som möjligt under 10 veckor, förutom att få fram ett spel som faktiskt går att spela. När jag började arbetet började jag egentligen med att rita upp alla objekt som skulle vara med i spelet, efter detta gjorde jag så att man kunde gå runt med sin karaktär, i början av projektet fick jag titta på väldigt många handledningar om just XNA då jag aldrig använd mig av det tidigare. Det var ganska tidigt i projektet då jag mötte mitt första stora problem, Kollision, Det tog över en vecka att lösa detta, och det var lite lätt! När jag löst kollisionen så började jag titta på AI (Artificial Intelligence) till mina monster, alltså hur de ska röra sig, när de ska röra sig och åt vilket håll de ska röra sig. Efter det var klart så skulle jag ha in frukter som monstren kan droppa när man dödar dem för att hela spelaren, dessa var ganska svåra att sätta ihop med spelarens hälsa då de plockades upp (eller gicks över). Sedan var det dags att bygga upp nivån, jag ville göra så att man lätt skulle kunna byta nivå ifall man skulle vilja lägga in nya, man kan även skapa nya nivåer relativt lätt med endast en textfil. Klassen som skapar nivåerna läser helt enkelt in textfilen och konverterar texten till objekt samt ritar upp dem. Menyn är uppbyggd med massor av bools, vilket är egenskaper som bestämmer om något är sant eller falskt. Menyn var väldigt knölig att implementera i efterhand, det bör nästan ha gjorts först, tyvärr var så inte fallet och det blev mycket krångel med den fram mot slutet. Allt grafiskt material är ritat i Adobe Illustrator, där jag använd Grid Tool för att skapa ett rutmönster där jag kunnat fylla i rutor för att skapa en känsla av ett gammalt spel med stora pixlar. Testning har gjorts efter varje liten del implementerad kod, detta för att förhindra/upptäcka fel tidigt och kunna åtgärda dem så fort som möjligt. 4
Positiva Erfarenheter De första två veckorna i projektet lärde jag mig väldigt mycket genom att titta på handledningar på Youtube. Efter att ha tittar igenom dessa ett antal gånger så kände jag genast att det kanske inte var så svårt som det verkade, jag började genast på ett test projekt för att testa ungefär hur allting fungerade när man väl började koda lärde man sig ännu mer om hur saker hängde ihop. Jag har dessutom lärt mig mycket om att jobba i projekt, dokumentation, varför det är en fördel att jobba i iterationer samt anledningen till att man skriver upp risker och försöker bearbeta dem tidigt. Negativa Erfarenheter Jag trodde att kollision skulle vara så mycket lättare än det faktiskt var, hur man flyttar rektanglarna på ett bra sätt, vad som ska hända när de möts. Det största problemet var att hitta ett bra sätt att komma på vilken sida de möts på. För att förhindra detta problem skulle jag ha läst på mer om objekten inom XNA, då hade jag direkt vetat att det finns inlagt redan som Rectangle.Bottom, Rectangle.Top etc. Det hade gått mycket snabbare och smidigare om jag hade vetat om det innan jag började med kollisionen. En annan sak som gick mindre bra var att lägga in själva menyn efter att spelet var färdigt, då jag behövde skriva om hälften av all kod jag skrivit när jag skulle implementera detta. Därför ska jag, nästa gång jag gör ett spel, börja med att lägga in menyn eller i alla fall göra det väldigt tidigt. 5
Sammanfattning Under kursens gång har jag lärt mig massor om XNA och även utvecklat mig inom C#. Jag har också blivit mycket bättre på att dokumentera under iterationerna. Jag hittade en jättebra programmeringshemsida där man kan ställa frågor och få hjälp, den kommer användas i fler projekt. Eftersom det är ett spel jag skapat så finns det mer eller mindre oändliga utvecklingspotentialer, jag kan bland annat lägga in flera banor för att göra spelet längre. Jag kan dessutom lägga in en spara/ladda funktion för att låta spelaren börja där den slutade förra spelomgången. Självklart kan jag även förbättra grafiken, samt fixa buggen med att man kan knuffa in monster i väggar. Jag kan lägga in fler monster och lägga in flera olika drops från monstren, som vapen eller rustningar för att höja skadan man gör eller sänka skadan man tar. Något jag kan bli ännu bättre på är att strukturera dokumentationen, jag vet att speciellt min tidsrapportering inte ser jättefin ut den kommer göras annorlunda nästa projekt. 6