BGP Week 8

Måndag 16/5 Jobbat med guards field of view – Jag följde en tutorial på youtube, i stort sätt går det ut på att skicka ut massa raycast som sedan ritar ut en shader mellan varandra. Ifall en raycast träffas en vägg så kollar den ifall dem två raycast bredvid också träffar en vägg och ifall en av dom inte gör det, så skickas en ny raycast ut i mitten mellan dom. Ifall den nya raycasten inte heller träffar väggen så skapas en ny raycast osv.

Buggfixat inför GGC, bland annat en bugg där guardsen dansar runt varandra.
Börjat arbeta med att guardsen kan vänta på fångarna vid podsen, så att dem inte står och dansar kring podsen. Jag löste det genom att skapa två punkter bredvid poden så att när vakten var framme så gick den till den punkt som var längre ifrån så att vakten inte blockar fången när fången ska gå in i poden.

Tisdag 17/5 Fixat så prisoner stannar vid monitors som inte är aktiverade på vägen. Lade till partikeleffekt när fången blir transporterad. Fixade massa buggar. Scientist och suspicion. Uppdaterade prefabs.
Fixade bugg då destinationen inte sattes av vakten. Problemet var att jag satte destination på flera ställen så därför blev det knasigt.

Onsdag 18/5 Rättade till mina raycast. Dom bakåt och åt sidan var lika långa som dom framåt vilket dom inte ska vara. Problemet var att jag inte hade bytt variabel som sätter längden.

Fixade en bugg med distraction då tutorial-interactable inte hade ”Room-Script” på sig. Det var ingen game-breaking bugg men det var ändå en irriterande bugg som spammade konsolen.
Fixade bugg när vakten skulle vänta på fången vid poden, så ställde den sig och blockade. Fixat med animationer och lagt till en när vakten väntar på fången vid poden.

Torsdag 19/5 Gjort partikeleffekt när fången är fri. Gjorde säkerhetsspärr till partikeleffekterna så att det är garanterade avstängde när spelet startar.
Arbetat med Andreas (Technical Artist) så att hans distraction funkar tillsammans med mina vakter och scientist. Interactable vet att den har en vakt vid sig. Gjort att flera fångar kan bli eskorterade åt gången.

Fredag 20/5 Fixat buggar- Bland annat en bugg där prisoner gick till fel pod. Fixade en errorbugg när prisoner skulle hämta prisonpodinformation. Polish. Massa polishing.

Week 7 BGP

Måndag 9/5 – Scientist. Så, idag har jag för det mesta bara arbetat med att göra AI till vår Scientist, som blir vår andra fiende till spelet. Tidigare hade vi bara vakter som går runt på nivån och jagar fångarna och skickar tillbaka dom till deras cell men nu har vi även då Scientist. Skillnaden är att Scientist själv inte utgör något direkt hot mot fångarna, utan istället ska springa till vakterna och leda dom till platsen där dom såg fången gå. Scientist hittar närmsta vakt på samma sätt som vakterna hittar närmsta Prison Pod, som jag nämnt i tidigare blogg. Den räknar ut distansen mellan sig själv och alla vakter och tar alltid den med längsta skillnaden, varav detta uppdateras; så ifall en vakt är närmare, men är flera rum bort och det finns en vakt utanför så kommer Scientisten till slut springa till den som är utanför rummet eftersom den kommer få kortare distans än den första som räknades ut. Alltså; Scientist räknar ut fågelvägen. Och fågelvägen är inte alltid den kortaste vägen i spelet, så ifall Scientisten väl börjar röra sig ditåt och hittar någon som är närmare, kommer den välja att gå till den närmare istället.

Scientist är gjord på samma sätt som vakterna och fångarna, med en State Machine som hanterar beteende. Än så länge har den bara två beteende och det är att den går runt till punkter och ifall den ser en fånge går den över till nästa beteende och springer till närmsta vakt och leder vakten till platsen där den såg en fånge.

Tisdag 10/5 Fixat med vakterna. Jag har gjort så med animationer och ett stort ”!” (utropstecken) dyker upp när dom ser en fånge. Det är för att ge spelaren mer feedback om att man har blivit tagen, eftersom speltestare har tyckt det varit dåligt visat.

Annars har jag jobbat med animationer och kod en hel del. Som med Scientist, så först går dom runt helt vanligt, men sen när dom ser en fånge så börjar dom springa. När Scientist hittar en vakt börjar även vakten springa och ifall dom inte hittar någon fånge går dem sen tillbaka till sina platser. Vakterna kollar ständigt efter fången och lämnar Scientist ifall den hittar någon och animationen blir när att den springer. Men när den har fått tag i en fånge och ska eskortera den till en Prison Pod så får den animation att gå.

Onsdag 11/5 Fixat med animationer och vakten. Jag blev inte riktigt klar igår utan fick fortsätta mitt arbete idag. Men nu funkar det att vakten börjar springa när den ser fången och går tillbaka efter.  Fixat animation för scientist så att Level Designer kan välja vilka punkter som scientisten ska ”arbeta” vid. Okej så; tidigare hade jag att scientisten går till specifika punkter där den går över till en animation som ser ut som att den jobbar. Men problemet var att ifall Scientist behövde gå längre sträckor så började den kapa kanter så vår Level Designer bad om ett system då han personligen kan välja vilka punkter som animationen ska spelas vid. Så jag gjorde att när en Scientist kolliderar med en punkt som är taggad med ”WorkBench” så aktiveras en variabel som säger åt animationen att spelas. Den animationen kan när som helst avaktiveras ifall då Scientist ser en fånge och måste leta rätt på en vakt.

Torsdag 12/5 Arbetat med Level Designer. Idag har jag för det mesta hjälpt till för att skapa en tutorial level. Vår Level Designer håller på att skapa en level som ska hjälpa spelaren att förstå hur man spelar. Så det jag gör att att se till att mitt arbete fungerar tillsammans med den leveln. Ett exempel på problem som vi stötte på var att ifall vakten som befinner sig på leveln hittar en fånge så visste den inte vart den skulle ta vägen med den. Det som hände var att den försökte plocka in alla Prison Pods som var på hela leveln, fastän bara en var aktiv. Jag löste det genom att säga att den bara ska leta efter aktiva och ifall den då hittar en inaktiv, ska den bara ignorera den.

Jag har även arbetat massa med animationer så att rätt animation spelas när ett visst event sker. Som exempel ifall en fånge blir hittad så sätter den sig på knä och väntar på att bli eskorterad.

Fredag 13/5 Buggfixat. Jag har stött på massa buggar som borde ha uppenbarat sig tidigare men som vi inte stött på ändå. En är med NavMeshAgents egna variabel ”RemainingDistance” som räknar ut hur långt det är mellan agenten och dess destination. Det som händer är att den vägrar räkna ut distansen och mycket av min kod är beroende på det. Som när en vakt eskorterar en fånge så vill jag att vakten ska gå till närmsta Prison Pod, eller när Scientist ska hämta närmsta vakt, eller när mina navmeshagenter ska röra sig mellan punkter. Jag har haft enorma problem med just ”RemainingDistance” då den säger att distansen antingen inte existerar eller säger att distansen är oändlig. Så jag har valt att räkna ut distansen med hjälp av Unitys egna Vector.Distance, som tar in två vektorer och räknar avståndet mellan dom. Problemet med Vector.Distance är att den räknar ut fågelvägen  mellan två vektorer och inte själva avståndet som agenten måste färdas.

En annan bugg jag arbetat med under en längre tid är att ifall en vakt går fram till en fånge vid ett hörn i en korridor, så kan ibland fången blocka vakten, ifall Prison Poden är närmare fången än vakten. Det löste jag genom att använda mig av ”Navmesh Obsticle”. Problemet är att en Navmeshagent kan inte också vara en obsticle. Så det jag gör är att vakten räknar ut avståndet mellan sig själv och närmsta Prison Pod och ifall fången är närmare, så avaktiveras fångens NavMeshAgent och aktiverar NavMeshObsticle så att vakten vet att den måste gå runt fången; alltså att den inte bara kan försöka trycka sig rakt fram, då den tror att vägen är fri.

Lördag 14/5 Buggfix med prefabs. Jag har arbetat med prefabs och uppdaterat värden som varit nödvändiga för projektet. Jag har även fixat så att vakten skickar ifrån sig fler raycast för vi stötte på ett problem, då korridoren var för lång så blev det för långt mellanrum mellan de olika raycasten och hittade ibland inte fången tillräckligt snabbt.

 

Week 6 BGP

Måndag 2/5 – Raycast. Fixade klart raycast åt framåt och åt sidan. Först kunde vakten bara kolla som en kon framför sig men nu kan den även kolla åt sidorna och bakåt. Jag började även jobba på att fångar och vakter kan gå genom dörrar.
Fel – Fångarna känner av att vägen går att gå, men den vill inte börja röra sig. Så; Jag använder mig åter igen av NavMesh och i detta fall finns det något som heter Path.Parthial, vilket är att den känner av ifall vägen mellan sig själv och sin destination är ”hel”, alltså att det går att gå mellan punkterna.

Tisdag 3/5 – fixade klart fångar och dörrar. Hur jag löste problemet från i Måndags är att jag uppdaterar ständigt fångens destination till där den egentligen skulle gå så när dörren väl är öppen så vet den att vägen är fri. Av någon anledning visste den inte när den kunde gå med det jag hade innan men om jag hela tiden säger åt den att uppdatera sin destination så vet den då när dens väg är fri. Jag skapar en tom Vector3 variabel där jag sparar positionen på destinationen där fången skulle gå och uppdaterar det så länge vägen är Path.Parthial som jag nämnde tidigare.
Jag har börjat arbeta med vakter och dörrar. Problemet är att vakter ska känna av att något är fel när dem kommer till en stängd dörr och jag vet inte hur jag ska göra det beteendet.

Onsdag 4/5 – Vakter och dörr, vetenskapsman. Jag började arbeta med vakter och dörrar men gav upp det arbetet ganska snabbt då jag inte är helt hundra på hur dem ska reagera vid det eventet. Istället började jag arbeta med vår sista AI ”Scientist”. Jag skapar alla scripts som krävs för att börja skriva AI. Jag skriver även grunderna så att dom kan gå runt till specifika punkter.

Torsdag 5/5 – Fortsatt med Scientist. Skapade ett beteende att dom går fram till sina punkter, kollar runt och sedan går vidare. Jag försöker skapa ett beteende för att få scientist att se ”levande” ut. Alltså; jag vill få det att se ut som om den går runt och jobbar.

Fredag 6/5 – Scientist. Jag bytte ut hela sättet att få scientist att se levande ut. Istället för att med kod göra att den roterar och håller på så hade vi tydligen redan färdiga animationer som gör exakt dom grejerna. Så jag har lärt mig om animationer i Unity tillsammans med kodningen. Det jag gör att är att när scientisten går fram till en punkt så aktiveras en variabel som gör att en animation spelas och den går över till en animation där gubben kollar runt. Just nu ser det mer ut som om scientist är nyfiken / misstänksam mer än att den arbetar. Det är något jag kommer pyssla med den kommande veckan

Week 5 BGP

Måndag 25/4 Idag har jag arbetat med raycast. Tidigare har jag använt en sfär runt mina karaktärer som använder AI men det kommer inte funka i längden. Så jag har använt mig av raycast som är en kollisioncheck som kollar i ett streck rakt fram. Strecket växer och krymper beroende på om den krockar med något. Alltså, ifall strecket går in i väggen så slutar den vid väggen och kollar därför inte vad som är på andra sidan av väggen. Systemet vi hade innan så var det att om kollisionen gick igenom väggen, så krockade den med sakerna på andra sidan väggen också, vilket vi inte vill ha till vårt projekt. Så jag har gjort att kollisionen kollas med raycast istället.

Tisdag 26/4 Jag har arbetat med prison-pods. Tidigare har vakterna i vårt spel fört fångarna till ett fängelse men för att visa att spelet utspelas i en mer futuristiskt miljö så ville vi ha pods där fångarna eskorteras och blir tillbakaförda i.  Jag fixade klart raycasten någorlunda, det är en smal kollision men den funkar. I måndags fick jag problem med att raycasten skötte beteendet hos vakten vilket gjorde att vakten gick över till nästa state för tidigt.
Fel – jag får inte remaining distance att funka. Det finns en inbyggd i Unity metod som räknar ut hur långt avståndet är mellan en agent och en position. När jag försöker använda den metoden så säger den att den blir ”oändlig”. Detta är ett problem jag har suttit med under en längre tid och har ännu inte fått förklarat varför det inte funkar.

Onsdag 27/4 Fixat klart raycasten. Fixat podsen så att vakten tar fågelvägen inte den nödvändigtvis snabbaste vägen. Jag struntar i att använda unitys egna metod och räknar ut själv avståndet mellan två punkter. Problemet är att agenten inte nödvändigtvis tar den snabbaste vägen, utan tar den vägen som den tror är närmast. Men ibland måste den då springa runt massa väggar och hinder för att ta sig till den destinationen, istället för att med unitys egna metod räkna ut kortaste vägen och ta den istället. Jag fixade så att spelaren måste öppna en dörr för att släppa lös fången. Det är något jag kommer arbeta vidare på senare.
Allmänt fel – Vakten vet bara att den eskorterar en, oavsett ifall det är fler.

Torsdag 28/4 Fixade bugg så att fången teleporterades tillbaka, och ibland inte. När fången har blivit tagen ska den teleporteras tillbaka till sin cell. Jag har haft jätte problem med det här då helt plötsligt inte fången vill bli teleporterad fastän jag skriver specifikt i koden att den ska bli det. Det var frustrerande men till slut lyckades jag hitta en lösning som fungerar. Det jag måste göra är att stänga av navmeshen (agenten) och sen teleportera den till vart den nu ska för att sen aktivera navmeshen igen.

Torsdag var en dag för Alpha test och stunden innan dem skulle testa vårt spel så hittade vi en bugg som gjorde att spelet blev ospelbart. Buggen gjorde att fångarna inte gick till rätt monitor eller ifall dom blev tagna, gick direkt tillbaka till där dom blev tagna fastän dom blivit teleporterade till sin cell.

Fredag 29/4 Buggfix. Efter en hetsig vecka så varvade gruppen ner med att bara arbeta med saker vi redan påbörjat. Vi finslipade saker och gick igenom feedback som vi fått ifrån alphatestarna. Jag personligen satt och fixade buggar och optimerade och strukturerade kod, vilket jag tycker var nödvändigt. Som grupp gick vi även igenom projektet och tog bort onödiga filer och skript som vi inte längre använder.

Week 4 BGP

Måndag 18/4 – Fixade klart fången. Jag fixade klart det sista med fången så att rätt vakt eskorterar rätt fånge. Tidigare fick jag problem med att när jag hade flera fångar och vakter så kunde det bli fel när en vakt skulle eskortera en fånge. Jag lyckades lösa det genom att fången sparar en variabel med vad för objekt den kolliderar med och om objektet då är en vakt och fången inte eskorteras av en annan vakt, så kommer fången följa efter vakten.

På slutet av dagen började jag läsa på om nytt system för AI. Jag läste av en klasskamrats blogg att han också arbetar med AI och använde sig av ett system som verkade bättre än det jag själv använder. Jag har nu läst igenom hans blogg och kollar tutorial om hur det funkar. Tutorialen kan man se här: http://unity3d.com/learn/tutorials/modules/beginner/live-training-archive/state-machine-interface

Tisdag 19/4 – Refactoring (Omgjort arbete). Jag har nu arbetat med ny AI-hantering. Förut använde jag eget system som blev spaghetti-kod (massa onödig kod som sköts på dumt sätt) och nu använder jag ett system som fungerar. Jag hade tidigare använt väldigt mycket hårdkodning (manuellt uträknade variabler och algoritmer istället för att vara dynamiskt uträknade), men valde istället att använda ett system som det fanns en tutorial till. Jag har alltså skapat en ”state machine” (kod som hanterar event åt AI – Artificiell Intelligens ). Jag använder mig av ”Interface klass” vilket som i C++ är samma sak som virtuell abstrakt klass. Alltså, en klass som andra klasser ärver metoder ifrån. Så alla klasser som ärver ifrån klassen, måste använda samma metoder annars säger koden ifrån. Varför man vill göra så är för att man vet alltid att dem klasserna kommer att ha dom metoderna så man kan göra en till klass som säger i vilken ordning metoderna och klasserna ska köras med. I mitt fall så använder jag state machine till mina vakter och min abstrakta klass heter ”iGuardState”. Sen skapar jag klasser som ska ärva av iGuardState som är vaktens beteenden, alltså; Patrullering, jaga och eskortera.

Bild 1: State machine. Bilden visar en bit av koden som hanterar den nya AI-systemet.

Efter klasserna skapar jag då min state machine klass som skapar en instans av alla klasserna i början när projektet körs och säger att patrullering är vaktens första beteende. Patrullering fungerar på samma sätt som jag nämnt tidigare i bloggen, att användaren själv sätter ut punkter  som vakten går emellan. I patrulleringen så kollar hela tiden vakten ifall det finns en fånge i närheten och om det finns det så går vakten in i sitt ”jaga” beteende och sätter fart mot fången. När väl vakten är framme vid fången så går den över i sitt eskortering beteende och guidar fången till närmsta fängelse.

 

Onsdag 20/4 – State machine till fångarna. Fixat fången så att den har likadant som vakternas state machine. Jag kopierade det mesta från vaktens kod men fångens olika beteende är; Röra sig, bli eskorterad och inaktiv. Röra sig är när spelaren sköter rörelsen (kommer berätta mer om det senare), bli eskorterad är när vakten har hämtat upp fången och eskorterar fången mot fängelset. Inaktiv är när fången väl är i fängelset, då jag enbart bara stänger av kollisionen för fången så att den står och blir ospelbar.

Blogg31.png

Bild 2: bilden visar hur min nya scen ser ut där jag testar mina nya state machines. På bilden ser man en dörr (längst nere på bilden i mitten med ett rött sträck i sig, då det transparenta är där spelaren kan klicka för att öppna dörren). En ”distraction”(till höger om dörren, transparent bord med dator på) som spelaren aktiverar för att distrahera vakten. Sfärerna är punkter vakten går emellan. Vita, lilla fyrkanten i mitten är fängelset. Fyrkanterna som flyger är skärmar.

Torsdag 21/4 – Monitors. Jag gjorde om tv-skärmarna som tidigare var spelarens sätt att röra fångarna så att den hanteras med hjälp av en Enum. Anledningen till att jag gjorde om skärmarna var för att det tidigare var också väldigt hårdkodat och jag kom på ett sätt man kunde göra det väldigt mycket smidigare. Genom att använda mig av Enum (enuminator) som är en metod som håller heltal så kan jag aktivera skärmarna så att de också får ett beteende. I Enumen finns det; On, Off, Idle, som är På, Av och standby. När skärmen är på, så blir den grön, om skärmen är av så blir den röd och standby gör inget i nuläget. Skärmarna känner av ifall de har en fånge vid sig och ifall det blir aktiverade då och en annan skärm aktiveras, så går fången från skärmen till den andra. Jag gjorde också så att skärmarna stängs av direkt så spelaren har aktiverat två stycken så att spelaren kan direkt aktivera två till. Anledningen till det var för att vi tog emot feedback om att det var jobbigt att spelaren behövde manuellt stänga av skärmen igen för att sen kunna aktivera två andra.

Koden  fungerar så att jag har en metod som aktiveras efter 0.1 sekunder och då stängs skärmarna av.

Jag tänkte senare att standby ska vara att skärmarna pekar dit fången går. Men det är ingen prioritering för nuvarande så avvaktar med det. Det är också en sak som är i diskussion.

Fredag 22/4 – Bugg fix. Idag har jag till mestadels bara fixat buggar eftersom det ska vara speltestning senare idag. Ett exempel på en bugg jag hanterade var; ibland stannade både vakter och fångar och stod helt stilla. Anledning till det var för att jag hade i koden skrivit att när det har nått sin destination så ska deras hastighet sättas till noll. Jag sätter deras hastighet till noll för att när man använder navmesh och sin agent har nått sitt mål så ställer sig agenten och ”vobblar” på sitt ställe (alltså går fram och tillbaka väldigt snabbt). Det jag gjorde var att varje gång agenten byter beteende så får den även en garanterad hastighet. Speltestning verkar ha gått bra.

Bild 3: Speltestningen pågår för fullt och vi får användbar feedback till vårt spel. På datorskärmen ser man en glimt av spelet som då en testare spelar. 

Week 3 BGP

Måndag 11/04 Påbörjad rörelse för spelaren – Började arbeta med monitors. Monitors är rörelsen till spelet F.R.A.U.S, då man som spelar som AI och kommunicerar med fångarna genom teknologi.

Bild 1: Grön fyrkant = aktiverad monitor. Röd fyrkant = avaktiverad monitor. 

 

Jag har gjort så man kan klicka på en monitor så byter den färg från röd till grön eller från grön till röd. Röd menar att den är avstängd och grön är att den är igång.
Gjorde en kollision som kollar efter fångar.

Tisdag 12/04 Fortsatt rörelse – Jag satte ut punkter nedanför skärmarna så att det första fångarna gör när spelet startas är att gå till den punkt som är närmast.
Jag har gjort ifall användaren sätter igång två skärmar så kommer fången gå till den andra skärmen.
fel – fången ska egentligen bara röra sig ifall den skärmen den står vid aktiveras. Men den går i alla fall. Alltså; ifall spelaren aktiverar två skärmar så kommer fångarna gå till den andra skärmen som aktiverades, fastän dem inte står vid en skärm som har aktiverats. Det ska fungera så att dom ska bara gå ifall deras skärm är aktiverad, då ska dom gå.

Onsdag 13/04 Fixad rörelse – Fången funkar som den ska när den går mellan skärmar. Användaren behöver aktivera skärmen framför fången först och sen den andra skärmen som aktiveras
blir den skärm som fången går till. Ifall två skärmar är igång och den första skärmen inaktiveras, så blir den andra skärmen satt till skärm 1.

Bild 2: Fången (svart fyrkant, blå pil) går ifrån skärm 1(grön fyrkant) till skärm 2. 

Jag fortsatte även mitt arbete med AI och vakters beteende. Jag ville testa så att fångarna prioriterar att bli tagna framför att utföra sitt kommando att gå mellan skärmarna.
fel – ifall en vakt hittar fler än en fånge, hämtar den och eskorterar bara en av fångarna.
fix – Loopar igenom en lista med alla fångar, ifall flera har blivit ”hittade” men bara en eskorteras så får alla andra som också blivit hittade samma destination som den som eskorteras. Alltså; Ifall en vakt hittar fler än bara en fånge så kommer även dom andra nu också eskorteras.

Torsdag 14/4 Bugg fix – Optimerar och strukturerar kod. Eftersom jag tidigare hittade ett fel att en vakt bara kunde eskortera en fånge åt gången har jag valt att spendera dagen till att fixa buggar.
Exempel på bugg: Om en vakt eskorterar en fånge och en annan vakt hittar en annan fånge, så kommer den andra fången försöka springa till den första fången.

Det är en bugg jag ännu arbetar på.

Fredag 15/4 Prefabs – Idag har jag enbart på strukturen av kod och göra prefabs av mitt arbete.

Bild 3: En bild på när en vakt (röd pil, guldfärgad cylinder) eskorterar en fånge (grön pil, svart kub) till fängelse (gul pil, vit sfär).

Tillsammans med arbete från mina grafiker och andra kodare så borde vi ha tillräckligt till att göra en spelbar, rättvis prototyp. Det hade varit skönt för oss att kunna börja speltesta våra mekaniker.

Week 1-2 BGP

Nu har allvaret dragit igång på riktigt och produktionen av spelet F.R.A.U.S har verkligen fått en bra start. Jag personligen är kodare och sitter enbart med att skriva script. Min huvudsakliga fokus har legat på att skapa en AI; Artificiell Intelligens. Spelet F.R.A.U.S går ut att du som spelare spelar som ett virus som infiltrerat korrupta företag som gör inhumana experiment på fångar, rädda fångarna utan att bli upptäckt. Spelet är ett stealth spel (bli inte upptäckt) där du styr faciliteten, snarare än att ha fysik närvaro. Du vilseleder vakter och forskare och leder ut fångarna genom att kommunicera till dom genom teknologin i faciliteten.

 

Första veckan gick lite segare, då det för det mesta gick ut på att fördela arbete mellan gruppmedlemmar. Vi satte upp en Product Backlog som vi har att följa på hemsidan ”Trello”. Vecka 1 gick för det mesta ut på att sätta upp arbetet för resten av det kommande veckorna. Vecka 2 drog arbetet igång med en rasande fart. Mitt arbete för vecka 2 ser ut:

 

Måndag 4/4 – AI pathfinding. 

Bild2.png

Bild: En bild på scenen jag arbetar i när jag skapar AI. Scenen innehåller vakter (guldfärgade cylindrar), deras walking path (svart prickar), fångar (vita boxar) och deras walking path (blå cirklar). Lilla rummet till vänster är ett rum jag skapade Torsdag 7/4 som jag förklarar vad det gör senare i bloggen. 

Patrol och AICharacter (script). Gå till förutsatta punkter. Punkterna är en lista med punkter som skaparen själv måste sätta ut. Skaparen skriver in hur många punkter det är och sätter ut objekt och säger vilken punkt som är vilket objekt.

Unity har en egen pathfinding som heter NavMesh. Med NavMesh så kan skaparen av scenen säga hur hela nivån kommer se ut med väggar och höjder så sätter den ut en plan där agenter till NavMesh kommer kunna röra sig på. Sen sätter man dem objekt som ska ha pathfinding till agenter så vet dom att dom inte kan gå in i väggar eller hoppa över stora objekt, istället gå runt dom. Jag lärde mig om den pathfinding här: http://docs.unity3d.com/Manual/Navigation.html .

Sen började jag skriva AIn som ska hantera event. Jag ville att när vakten ser en fånge ska den spara sin nuvarande position för att sen när den hämtat fången, ta sig tillbaka till punkten den utgick ifrån. Problemet jag stötte på när jag försökte spara den nuvarnde positionen är att den temporära punkten fick en updaterad position varje frame, fastän den inte borde det. Det problemet löste jag senare på Onsdag.

 

 

Tisdag 5/4 – Cirkulär kollision Skapa en cirkulär kollision som checkar efter tagen ”Prisoner”. Skriver ut i Debugen. Hard-reset på Sourcetree.

Idag skapade jag en sfär som har samma position som vakten och det den sfären gör att känna av kollision med objekten runt om vakten. Så ifall sfären krockar med en fånge så aktiveras ett event med vakten. Koden funkar som att den ständigt uppdaterar sfärens position till vaktens position så får skaparen själv skriva in hur stor sfären är i diameter så man får testa sig fram hur stor kollisionen ska vara. Problemet jag stötte på var att jag kunde inte ändra variabler i vaktens script från sfärens script. Jag löste det genom att säga specifikt vilket objekt som scriptet kom ifrån. Man borde inte behöva göra så men det funkar för nuvarande, så kanske kommer behöva ändra det senare.

Onsdag 6/4 – Fixade en state_machine

Bild: Där den röda pilen pekar är när sfären kolliderar med en fånge. Då i vaktens AI script aktiveras ett Event (blåa pilar) med en egen skapad State Machine. State Machine är ett system som hanterar event. I mitt fall kan bara ett Event ske åt gången. Så ifall vakten redan hanterar en fånge så kommer den sköta hela det eventet innan den kan påbörja något nytt.  

Vakten går mellan förutsatta punkter och ifall den kommer i kontakt med ett event så avbryter den sin path och går till eventet. Just nu är det ett block med taggen ”Prisoner” som vakten går till, avaktiverar, och sedan fortsätter sin path den var på innan den gick till eventet. Problemet jag stötte på var samma problem jag hade i Måndags, den uppdaterar ständigt positionen på punkten den ska återgå till, vilket jag ingenstans i koden skriver att den ska göra. Jag löste det genom att istället för att spara punkten med en Transform variabel så gjorde jag en Vector3(x,y,z) som håller i tre koordinater. Med Vectorn så uppdaterades inte positionen och koden funkade som jag ville.

Torsdag 7/4 – Skapa Fängelse. Jag skapade ett till rum som fungerar som fängelse (se första bilden, rummet till vänster). Vakten eskorterar fången till fängelset. Funkar genom att ha en förutsatt punkt dit vakten går ifall han kolliderar med ”prisoner”. När vakten når punkten avaktiveras rörelsen på fången.
Vakten går till punkten som den var på väg mot innan den gick in i fången istället för att gå till den sparade punkten där vakten utgick ifrån.
fel – fången blockar vakten när vakten ska lämna så vakten vet till slut inte vart den ska.
lösning – inaktiverar fångens kollision och mesh-agent. Fången blir ett tomt objekt men det får jag fixa till senare.
problem – Skapar jag flera vakter så går fången till den senast skapade vakten. Problemet jag har är att i koden fungerar fysiken att den ska gå till ett objekt som är taggad med ”Guard” och därför när jag har flera vakter så

Fredag 8/4 – Bygga en test build.

Bild: det är en rörig bild. Bilden visar hur vår första build av spelet ser ut. Det man kan göra är att trycka mellanslag så rör sig en kub från rummet längst till höger mot utgången som är längst ner i mitten. 

Det builden kan göra är att vakten går runt och samlar in fångar. Jag arbetar för nuvarande med hur fångarna ska röra sig. Tanken är att aktivera tv-skärmar för att visa åt vilket håll fångarna ska gå, men än så länge har jag bara hunnit med att göra så att man trycker på mellanslag så rör sig fången till förutsatta punkter. Till den kommande veckan ska jag få till rörelsen till fångarna bättre.