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.