Blogpost no.7 : Extra

Tjenare!

Som extra blogginlägg så ska jag berätta om en mindre artefakt som jag arbetade med under tiden jag satt och funderade på hur jag ska skulle lösa problem på andra artefakter jag arbetade med. Den här artefakten är inte svår eller jobbig att arbeta med och därför passade den perfekt för att öka självförtroendet och för att inte fastna i samma tankemönster som man lätt kan hamna i när man funderar på att lösa ett problem.

Det jag då arbetade med var dekorer, speciellt tavlor. Denna artefakt handlade lite mycket om programmering som om leveldesign, då jag ville uppnå att tavlan gjorde någon nytta trots att den inte har någon speciell funktion i spelet.
Jag vill då att tavlan skulle hamna på ställen där det normalt sätt såg lite för tomt ut. Tavlor har, enligt mig, en tendens att lysa upp ett rum på ett annat sätt än till exempel en bord eller en stol. Detta är för att man förväntar sig att se bord och stolar i ett rum mer än vad man förväntar sig se en dekor i form av en tavla.

painting

Bildtext: Så här ser tavlan ut.

Genom en enkel implementation så kunde jag få in tavlan i koden, detta är inget jag kommer att förklara så djupt, men det jag gjorde var att i vår Entitets-lista skriva in ett namn som syftade på tavlan. Sedan i vår klass PlayState, där vi implementerade alla andra bilder, så skrev jag in tavlan och då var bilden kopplad till ett namn och alltihop var kopplat till ett nummer. Numret jag fick ut använder jag sedan för att få tavlan att synas i spelet, genom att skriva in numret på diverse ställen i textdokumentet där vi leveldesignar.

Efter att jag diskuterat med vår lead designer så lyckades vi komma fram till ett resultat vi tyckte om och det lät testas av de andra i gruppen. Tavlans placeringar fungerade bra, men vi testade det inte med andra än gruppen. Inför beta-presentationen hade vi tavlan implementerad men veckan därefter så var det många saker som gick sönder efter en omfattande ändring i koden. Tavlan blev därefter bortglömd och blev inte implementerad till slutversionen av spelet.

Under tidspressen så var vi i gruppen stressade och vi prioriterade större och viktigare artefakter som en fungerande AI, ljud, ljus och meny istället. Det är i sådana här tillfällen som scrum-dokumentet hade varit till riktigt bra användning, men jag vill påstå att jag inte kollade på det dokumentet allt för mycket sista veckan.

Trevlig helg,

Alex Henningsson

Blogpost no.6 : Projektet

Tjenare,

Den här veckan har inte gått så bra för mig med artefakter i spelet. Jag har inte varit i skolan så mycket, detta på grund utav diverse anledningar. Så jag tänkte berätta mer om hur projektet har gått och vad jag ska ta med mig till senare projekt.

Projektet har gått bra! Det enda som har varit ganska dåligt, och väldigt specifikt för just vår grupp, är att vi har en väldigt långsam start. Vi började med projektet 2 veckor in i kursen. Detta gjorde så att vi fått en 2 veckors förskjutning på allt vi ska arbeta med. Men trots detta så har vi genom tydlig schemaläggning och regelbundna möten kommit ikapp arbetstimmarna och därav; spelet.

Spelet är i princip klart och den här veckan samt nästa vecka är till för polering och finjusteringar. Saker som hastighet på karaktären och AI på fienden är två av dom saker som krävde finjustering.

Det jag tror krävde mest arbete och polering har varit leveldesignen. Att skapa huset har krävt åtskilligt många timmar. Detta är på grund utav att dels ska alla pickups placeras ut, så att det är olika många pickups i varje rum. Sedan så ska vissa rum vara något svårare att kunna tömma på saker, för där finns det dyrare saker. Då vi har tre sorters olika golv där alla gör olika ljud så har det krävt tanke med det också. Vilka rum ska vara av denna sort och hur enkelt kommer fienden att ha för att hitta en.

Jag kommer att ta med mig schemaläggningen och regelbundna möten till nästa gång. Samt det väldigt demokratiska sättet att lösa problem på. Den idé eller tanke som får majoriteten av röster kommer att bli implementerad och använd.

Det jag inte kommer att ta med mig till nästa gång kommer vara den långsamma starten. Hade vi börjat direkt så hade vi kunnat implementera mycket mer och ha ett bättre spel till varje deadline, istället för att vara på gränsen till klara under presentations-dagen.

Detta har fungerat bra och då alla är med på just dessa regler så blir det inga bråk om vilka features och funktioner vi har i spelet. Det har varit ett mycket effektivt sätt att diskutera och bestämma beslut.

Till nästa gång, Alex

Blogpost no.5 : Gissa vad.. Power ups!

Tjena!

Jo, så det är Torsdag och dags för ett nytt inlägg om vad denna vecka har bestått utav.  Den här senaste veckan har tyvärr inte varit lika produktiv som vanliga veckor; för min del. Det jag har arbetat med är power ups. Med tanke på att vi har så många olika sorters power ups så arbetar jag med nya power ups och detta tar längre tid än väntat med tanke på att koden inte varit förberedd för alla olika power ups med olika speciella beteenden.

Den här veckan har jag arbetat med magic carpets. En ny power up som också har en motsvarighet. En power down!

Den ena är röd och den andra är grön och dom är motsatser. Kolliderar man med den ena så får man 30 sekunder extra tid på sig att spela och kolliderar man med den andra får man -30 sekunder. Man måste alltså passa sig och komma ihåg vilken färg som är bra och vilken som är dålig. Vi valde att använda oss utav dom här för att öka den taktiska känslan hos spelaren. Vi vill att spelaren ska tänka en extra gång innan man kliver på en sådan här matta. Ibland kan Otto stå i ett speciellt rum när spelaren går dit och genom det så kan det ta längre tid att ta sakerna i det rummet än vanligt. Därför så vill vi att spelaren ska fundera på hur mycket tid spelaren har och beräkna ungefär hur lång tid det kan ta att tömma ett rum och spelaren ska också lyssna efter vart Otto kan vara någonstans.

Vi tror att den här power up:en och power down:en kan ge spelet den extra knuffen för att få spelet som vi vill ha det; Ett taktiskt och spänningsfyllt spel.

Tyvärr, som jag skrev i början, så har denna vecka inte varit så produktiv för min del av diverse orsaker. Så mina två mattor fungerar inte som dom ska än. Dels för att testingen har varit svår samt att spelet kraschat vid flertalet tillfällen på grund utav mattorna.
Testingen har varit svår med tanke på att mattorna inte existerar i grafik. Det är också på grund utav detta ni inte kan få en bild att se på. Detta får jag lösa under nästa vecka, under poleringsveckorna!

Imorgon är det dags för beta-presentationer och detta innebär att det är ynka 2 veckor kvar av tiden att göra klart spelet.

Alex

Blog post no. 4: Minnesluckor och…. Power ups!

Tjenare,

Den här veckan har det inte varit lika mycket arbete på funktioner i spelet som det brukar vara. I början utav veckan så insåg vi att spelet laggade en del efter att vi gjorde den fullständiga kartan att spela på. En karta som var ungefär fem gånger så stor som den tidigare, och vi kom fram till att minnesluckor kan vara en del av problemet.

Genom att ladda ned Visual Leak Detector så kunde jag implementera dom filerna i projektet för att sedan hitta dom minnesluckor vi hade. När jag gjorde det första gången så såg jag att vi hade nästan 6600 stycken. Detta är ofantligt många, och minnet dom tog upp var ungefär vårt hela spel gånger 2. Jag hittade var dom största problemen fanns och detta var i entitets-listorna. Jag loopade då igenom dom och raderade alla när spelet skulle stängas av och då var jag helt plötsligt nere på runt 8 minnesluckor. Efter lite sökande i projektet så kunde jag få bort dom också.

Detta gav mig tyvärr ingen bättre visuell presentation och det var knappt bättre FPS på spelet, men vi tror att om jag inte hade gjort detta så hade spelet till slut kraschat under ett speltest vilket hade varit katastrofalt.

Det jag härnäst ska prata om är ännu fler power ups. Då vi har definierat flertalet power ups i designdokumentet, närmare 11 st om jag inte minns fel. Några av dom är mindre power ups som inte förändrar spelet så mycket samt att vi har några som förändrar spelet mycket mer. Nästan alla har helt olika sätt dom spelförändrar på så det kräver en del bakgrundsarbete innan man faktiskt kan implementera dom.

Det jag har arbetat mest på den här veckan är amuletten. När man använder amuletten så ökar det värdet på alla objekt man tar upp med 30% i 30 sekunder. Detta krävde att jag skapade nya funktioner i vår Score-klass som skulle ändra på värdet av alla objekt man kan plocka upp. Sedan pekare från att man aktiverade amuletten som startade en timer samt satte den nyskapade funktionen till true för att den i sin tur skulle aktivera alla ändringar i värde på objekten.

Amulet

Med tanke på att vårt spel baseras på både tid och poäng så är den här power up:en en kraftig spelförändrare. Den kommer göra så att spelaren blir lite mindre försiktig gällande var fienden är någonstans då spelaren vill använda sig utav amuletten så effektivt som möjligt. Detta ökar poängen samtidigt som det ökar risken väldigt mycket.

Till nästa gång,

Alex

Blog post no. 3: More Powerups

Tjenare,

Återigen så ska jag skriva om powerups. Det jag har pysslat med denna vecka, till skillnad från förra veckan, är att jag har börjat fokusera på enbart powerups. Fram till betan så skall jag få samtliga powerups implementerade och funktionella på rätt sätt. Idag, Torsdagen den 26/2, samt igår så har jag arbetat med vår rustning. Det är en rustning som man kan stjäla av Otto som gör så att spelaren rör sig långsammare samt kan ta två skott istället för ett.

Jag använde samma tankesätt som när jag gjorde björnmattan. Jag skapade variablar som var av datatypen boolean för att enkelt kunna ändra på hastigheten på spelaren, genom att när spelaren stal rustningen så aktiverades min bool variabel som ändrade spelarens rörelse-hastighet till en lägre.

Att få Otto att behöva skjuta två skott istället för ett har jag inte fått att fungera ännu, men det är på gång. Detta skall jag och mina gruppkamrater gå igenom under Fredagen tänkte vi.

Det är i princip samma anledning till varför vi gör powerups som i det förra inlägget. Det är dels för att vi måste, och det är dels för att göra spelet mer dynamiskt. Det är roligare för spelaren att spela om spelreglerna och miljön ändras, om än bara lite grann. Att ge spelaren möjlighet att kunna gömma sig på olika sätt för sin fiende, i ett spel som går ut på att stjäla saker i någons hus, gör det mer spännande. Att se sin fiende komma närmare när man står i en rustning och fienden bara vandrar förbi en gör det hela helt annorlunda. I andra fall, om man inte hade haft det där gömstället, så hade spelaren blivit tagen och dödad direkt.

Att ge fler taktiska möjligheter för spelaren är något vi i gruppen ville gå efter också. Att inte bara ha dom klassiska powerups:en där man får spelaren att springa snabbare eller få mer pengar för varje sak man lyckas plocka upp, utan också ge spelaren ett annat sorts övertag. Att kunna välja när man vill gömma sig för sin fiende med hjälp av björnmattan eller rustningen ger spelaren ett övertag som kan vara hur länge spelaren vill. Men inte hur många gånger han vill, för är spelaren försenad till rustningen när spelaren kliver in i den så blir spelaren upptäckt och högst troligt tagen och dödad av sin fiende.

Armor

Det här är en bild av den, och den kommer att stå längs väggar på relativt få ställen i huset. Det är inte definierat var den ska stå eller hur många det ska finnas utav den ännu.

Till nästa gång,

Alex

Blogpost no. 2: Power Ups / Uppgraderingar

Tjenare,

Ikväll tänkte jag ta inlägget på svenska istället. Lite variation skadar ju inte!

Så, under den här veckan har jag återigen arbetat med ett par olika artefakter. Men mitt ansvarsområde har varit power ups, eller tillfälliga uppgraderingar.

En power up är en funktion som finns i många spel där man genom att interagera med vissa saker får extra mycket kraft på något sätt. Man får ett tillfälligt övertag över sin motståndare.

Som krav i vår uppgift så skall man ha med power ups, tre st närmare bestämt. Men med tanke på att det inte är deadline för projektet förrän om fem veckor så startade vi med bara en.
Till imorgon, Fredag den 20e Februari, så har vi vår första presentation. Det är deadline för den första riktiga milstolpen: Alpha. Alpha är stadiet i en mjukvaru-utvecklingsprocess som visar hur programmet/spelet ungefär ska se ut och fungera. Den innehåller en mängd funktioner som kommer att finnas senare, fast de är ofta väldigt buggiga och bristfälliga. Alphan ger användaren en första blick i vad spelet går ut på och vad det går ut på. Det man gör när man låter folk se och testa alphan är att ta reda på vad folk gillar och ogillar, för att sedan förändra dessa funktioner. Betan är nästa stora milstolpe. Det talar vi om vid ett annat tillfälle.

Vi valde att börja med vår björnmatta. Det spelaren gör med björnmattan är att först lokalisera den i huset, sedan plocka upp den. För att använda den så klickar spelaren på tangent ‘A’. Det som händer då är att fienden, Otto, tappar bort spelaren. Rent visuellt sätt så gömmer sig spelaren under björnmattan.

I kod så är det inte riktigt det som händer! I kod så säger jag till spelet att när spelaren plockat upp björnmattan och klickar på ‘A’ så slutar Otto att leta efter en, samt att spelaren inte kan röra på sig längre. Med tanke på att jag inte hann få in fler funktioner till Otto så fungerar inte power up:en som den ska än. Det Otto egentligen ska göra är att gå iväg och leta efter spelaren på nytt, men just i det här stadiet så stannar Otto upp och står kvar där han stod när spelaren klickade på ‘A’.

Jag beräknade att power up:en skulle ta ca. åtta timmar att göra. Den tog mellan fem och sex timmar att göra, utan att den blev helt fullständig. Jag skapade power up:en genom att lägga in en ny funktion i Enemy-klassen vars enda uppgift var att säga om spelaren aktiverat eller inte aktiverat power up:en. Om funktionen sa att power up:en var aktiverad så stoppades Ottos söknings-funktion. Söknings-funktionen är funktionen som bestämmer om Otto jagar och letar efter spelaren eller inte. För att få hela power up:en att fungera så behöver jag skapa en ny söknings-funktion där han inte jagar spelaren, utan bara letar efter spelaren. Jag vet på ett ungefär hur jag ska göra detta, men fick det inte att fungera så det är inte implementerat än.

Bilden nedan visar en bild på hur björnmattan ser ut.

BearRug -FirstDraft-

Vid senare milstolpar, antingen den slutgiltiga eller till betan så kommer det finnas en animation när spelaren har björnmattan på sig. Detta är inte animerat, ritat, sketchat eller implementerat i det här tidiga stadiet.

Till nästa gång,

Alex Henningsson

Blogpost no. 1: Spaceshooter

Hi all!

This is the first blogpost since we started this new project I am going to explain real quick what the project is about.
We are pretty much the same group that we worked in during the last project, when we were supposed to create a spaceshooter-concept. In this project we were supposed to pick a spaceshooter-concept that another group made and then create the game based on that concept.

We picked a game called Fancy Mansion which is a game where you are playing a thief inside a fancy mansion and the goal is to steal a lot of the valueable items inside of it.

One of the artifacts I have been working on this week is the walls-class. Since we have multiple different kinds of walls (read: multiple different colours on the walls) we decided to create a class for them instead of just create it hard-coded in the state where walls will be, which is called PlayState.
All walls will behave the same; just stand still and have collision against everything. If we did not create a class for them we would have to write the code multiple times in PlayState with pointers to each sprite. It would take more memory and power from the computer and make the game slower.

I started of by creating the walls in the PlayState-class. We started to  write the same code multiple times which is just plain stupid. It was here we decided to create the wall-class and it was enough with a few lines of code to get the same result. But the result was faster and we got a nicer code structure. A nice code structure is almost one of the most important features when writing software, because if something goes wrong it is extremely hard to debug if the code is unreadable.

The wall-class was not especially hard to make, but it made difference in the development of the game. After that we could just call the class in our PlayState-class and in our map-textfile we could write the number of the entity that was the specific wall we wanted.

In the picture below I will show you the collision that was created, and it is the same collision against every wall even though I am only showing you one example of the collision. You can see the collision since the old man on the left side is wanting to catch the guy to the right.

nannana blogginläggcollision

 

Until next time: Have a good one!

/ Alex

Frogger: Week 3

Hi Again!

Sorry for the long waiting for this post. I have been busy celebrating the holidays with friends and family. And therefore I have not been working to hard on this project.

But, right before the celebration started I managed to get my frog to move. My next steps is to create the cars and logs and make them move. I think this will not be a big deal, since I got my frog to move by pressing keys.

After this I need to create lives and a timer, and I think that is my whole game. Of course, I have to add sound and music aswell.

Later this week you will get a bigger update on how my other objects went.

Cya!

Create a game: Week 2

Hello,

As I have started to write Frogger I have had a few problems that I have been able to solve with help from classmates and teachers. This is how far I have come so far:

froggerUC

 

As you can see I have been able to insert the title, the background and the frog. This took a few hours, but after help from teachers and classmates it was easy. Easier than I thought.

My latest and hardest problem, which have made me doubt if I even understand what I am doing, is that I can’t get the frog to move. I have tried countless different attempts, but none have worked, yet.

If I can’t get it to work I will stop working this project and make a new clean one where I write the game engine by myself using the Arkanoid engine as a helping hand. I have a bit more than one week less time to create the game but it does not matter. Since my future is based on the things I learn here and not the grades I get I want to understand it.

Cya next week, then you’ll hear about how I did! Alex

Project : Create a Game

Hi!

This week we have had some lectures about project management and how to put images and text on to the screen. And we have done this because we are to begin our project this week! And we are to create a game, and not any game. We are going to create a clone of an old arcade game! I have chosen Frogger.

Frogger

This is a picture of the normal gameplay when playing Frogger. The idea of the game is to move your frog from the bottom of the screen to one of the positions at the top.

The last couple of weeks when we, in class, wrote Arkanoid we wrote the engine for it at the same time. So this is the engine I will use for this project aswell, since I have not the skills to create my own just yet. Therefor I write the engine again, in the same way we did in class, so I can really understand what it is that I am writing and why.

This is a task that both gives me more understanding, since I can write my own comments on it and I get more experience with writing code in a good and fast way.

Engine: This includes things like the Draw manager, Input manager and Sprite manager. It also includes the class Mouse and Keyboard which gives the user/player the possibility to use the mouse and the keyboard.

I will post another post next week, and I should have made some progress by then. So until then; take care!

Cya, Alex