Grafiskt Utbildningscenter VT 2015. FPS Controller asset. Håkan Johannsson

Relevanta dokument
Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10

GYMNASIEARBETE: NINJARENA - VÅRAT EGET SPEL

SLUTRAPPORT. Sebastianlund.com. Individuellt mjukvaruutveckingsprojekt, 1DV430. Författare: Sebastian Lund WP11 Datum:

Post Mortem för Get The Treasure!

LNU INDIVIDUELLT MJUKVARUUTVECKLINGSPROJEKT. Honey Hunter. Androidspel. Martin Karlsson 1/17/2014

Read Texterna består av enkla dialoger mellan två personer A och B. Pedagogen bör presentera texten så att uttalet finns med under bearbetningen.

Mina listor. En Android-applikation. Rickard Karlsson Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.

Solowheel. Namn: Jesper Edqvist. Klass: TE14A. Datum:

Workplan Food. Spring term 2016 Year 7. Name:

Writing with context. Att skriva med sammanhang

Projektrapport. Till Projektet Bluetoothstyrd bil

Utvärdering SFI, ht -13

Folkbibliotek & digitalisering

BOENDEFORMENS BETYDELSE FÖR ASYLSÖKANDES INTEGRATION Lina Sandström

Ökat personligt engagemang En studie om coachande förhållningssätt

Vikingarna. Frågeställning: Ämne: Historia, vikingarna.

Adding active and blended learning to an introductory mechanics course

Elevernas uppfattningar om alltmer digitaliserad undervisning

- den bredaste guiden om Mallorca på svenska! -

[SLUTRAPPORT: DRAWPIXLZ (ANDROID-APP)] Slutrapport. Författare: Zlatko Ladan. Program: Utvecklare av Digitala Tjänster 180P

Att stödja starka elever genom kreativ matte.

Hoppa till... Exportera till Excel

Användning av Erasmus+ deltagarrapporter för uppföljning

Information technology Open Document Format for Office Applications (OpenDocument) v1.0 (ISO/IEC 26300:2006, IDT) SWEDISH STANDARDS INSTITUTE

FK Electrodynamics I

English. Things to remember

Självkörande bilar. Alvin Karlsson TE14A 9/3-2015

Flervariabel Analys för Civilingenjörsutbildning i datateknik

Föreläsning 4 IS1300 Inbyggda system

Hur tycker du kursen har varit? Tycker du att kursens upplägg har underlättat för dig att uppnå lärandemålen?

Har du läst kursen på Campus eller distans Campus 8 53% Distans 7 47%

Vätebränsle. Namn: Rasmus Rynell. Klass: TE14A. Datum:

Swedbank Mobile Loadtesting. LoadRunner Mobile App protocol

Pedagogisk planering. Ron Chlebek. Centralt Innehåll. Svenska/Engelska. Lego Mindstorms. Syfte: Matematik

Quick Start Guide Snabbguide

2.1 Installation of driver using Internet Installation of driver from disk... 3

samhälle Susanna Öhman

Att välja och planera ett projekt

Obemannade flygplan. Namn: Hampus Hägg. Datum: Klass: TE14B. Gruppmedlemmar: Gustav, Emilia, Henric och Didrik

Slutrapport. Super Mario klon. Tomas Wallin tw222bv WP

SCRATCH är ett nytt programmeringsspråk som gör att du kan skapa dina egna interaktiv historier, animationer, spel, musik och konst.

employee engagement concept (Eec) - a respectful work life designed around people -

3D skulptering Cinema4D

AGIL KRAVHANTERING. Hitta behoven bakom kraven!! Thomas Nilsson! Agile Coach & Mentor! CTO, Responsive

Exempel på gymnasiearbete inom humanistiska programmet språk

Beijer Electronics AB 2000, MA00336A,

Kursvärdering 1DV433 Strukturerad programmering med C++ LP Lärare: Tommy Löfqvist 17 svar

Health café. Self help groups. Learning café. Focus on support to people with chronic diseases and their families

Isolda Purchase - EDI

Lärarexamen 210hp Kultur, Medier, Estetik Datum för inlämning: 28 Mars Av: Josefin Pettersson

Välkommen in på min hemsida. Som företagsnamnet antyder så sysslar jag med teknisk design och konstruktion i 3D cad.


GYMKEEPER ANDREAS SÖDERSTRÖM

CHEMICAL KEMIKALIER I MAT. 700 miljoner på ny miljöteknik. Rester i mer än hälften av alla livsmedel

Equips people for better business

Preschool Kindergarten

Här kan du sova. Sleep here with a good conscience

Väderklockan. Sebastian Buks (Ursäkta alla Keynoteanimationer, det var så roligt bara...) Monday, November 15, 2010

Andy Griffiths Age: 57 Family: Wife Jill, 1 kid Pets: Cats With 1 million SEK he would: Donate to charity and buy ice cream

Mönster. Ulf Cederling Växjö University Slide 1

Webbreg öppen: 26/ /

Week/vecka Monday/måndag Tuesday/tisdag Goal/mål

Engelska åk 5 höstterminen 2013

Rapport elbilar Framtidens fordon

Utbytesprogrammet Linneaus-Palme University of Fort Hare (Faculty of Education) och Umeå Universitet (Pedagogiska institutionen)

Teknikprogrammet Klass TE14A, Norrköping. Jacob Almrot. Självstyrda bilar. Datum:

App analytics TDP028

Kursutvärderare: IT-kansliet/Christina Waller. General opinions: 1. What is your general feeling about the course? Antal svar: 17 Medelvärde: 2.

GRUNDKURS I C-PROGRAMMERING

The Intelligent Timer

The Municipality of Ystad

TDDD78 Att välja och planera ett projekt

PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI

Med Reality Energy Log REL kan du hålla koll på dina elkostnader med hjälp av ett knapptryck.

PD104A - Introduktion för Produktuteckling och design

Webbregistrering pa kurs och termin

C-UPPSATS. Animation för spel

Slutrapport. Interaktiv Mjukvaruutvecklingsprojekt. HIF-Spelet. Ett XNA-spel. Christian Ulf

Styrteknik 7.5 hp distans: E-1000 och E-Designer

Småprat Small talk (stressed vowels are underlined)

Hip Hip hora Ämne: Film Namn: Agnes Olofsson Handledare: Anna & Karin Klass: 9 Årtal: 2010

Att använda data och digitala kanaler för att fatta smarta beslut och nå nya kunder.

Evaluation Summary - CD5570 DoA, distans VT 2004 Dan Levin

The tradition of hanging plush dice (also known as fuzzy dice or raggardice) in the rear mirror started in the USA in the '50s.

VIDEODAGBOKEN. Individuellt Mjukvaruutvecklingsprojekt. En dagbok i videoform online. Robert Forsgren (rf222ce) UD

Lights in Alingsås Nordens största workshop inom ljussättning i offentlig miljö.

INSTALLATIONSGUIDE TILL ANDROID UTVECKLINGSMILJÖ

Ready for Academic Vocabulary?

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

GeoGebra in a School Development Project Mathematics Education as a Learning System

TDDD78 Att välja och genomföra ett projekt

Låt oss ta hand om din utveckling, medan du själv utvecklar ditt företag

Arbetsrapport CEQ, KIM015

Dagbok Mikael Lyck

Utvärdering SMD180 LP1 2006

1:5 SLUTRAPPORT - POST MORTEN LARS EHRMAN WP

SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS

Cambros elektroniska utvärderingssystem

#minlandsbygd. Landsbygden lever på Instagram. Kul bild! I keep chickens too. They re brilliant.

DIGITALA PROJEKT Väderstation

Transkript:

Grafiskt Utbildningscenter VT 2015 FPS Controller asset Student Handledare Håkan Johannsson Per Djerf

Abstract Often when people who aren't professional game developers want to make a game they build their gam in an open SDK (Software Development Kit) game engine. Unity Engine is an open SDK that is popular for hobby game developers. In school the last one and a half year i have learned how to produce games i Unity. My favorite game genre is close quarter combat First Person Shooters. Call Of Duty and Counter Strike is two typical games in this genre. I have for a long time dreamed about making my own FPS game but i didn't know how to start or how to solve mechanical problems. And i saw on social medias around game development that i wasn't alone with this problem. So for examination project i decided to develop a asset for unity that would contain a pre fabrication object with all the basic necessary function that you would need to start up your own FPS game development. I did some research on different functions in Unity and decided that the best way to develop the asset was to code the framework in C-sharp witch is one of the code language built into unity. The project took longer then expected and i ran into a numbers of problems throughout the work process. Since i never before had worked in C-sharp i had to spend a lot of time to learn the syntax of the code language and its different functionality. 2

Innehållsförteckning 1 Bakgrund 4 2 Syfte. 5 2.2 Frågeställning 2.3 Avgränsningar 3 Material och källor 6 4 Genomförande.. 7 4.1 Bakgrundsanalys 4.2 Huvudarbete 4.3 Slutarbete 5 Resultat.. 8 6 Diskussion. 9 7 Källförteckning. 10 8 Bilagor 11 3

1 Bakgrund Mitt favorit typ av spel har i många år varit skjutspel i första persons perspektiv och ur alla timmar som jag har suttit och spelat föddes idéen och inspirationen till att göra mitt egna spel som skulle innehålla de funktioner som jag anser vara viktiga för att spelet ska vara bra. Och eftersom undervisningen i skolan innehöll praktiskt undervisning i Unity Engine så såg jag min chans att förverkliga en dröm som jag har haft under en längre tid. I början av gymnasiearbetstiden var planen att med två andra personer utveckla ett simpelt spelkoncept. Men grupparbetet funkade inte och vi kom inte framåt i processen. Så projektet lades ner och jag bestämde mig för att fortsätta på egen hand. Men pågrund av omfamningen att utveckla ett spel själv skulle tiden som avsattes för att göra projektet inte räckte till så la jag mitt fokus på grundmekaniken i spelet. 4

2.1 Syfte Syftet med komponenten so jag bestämt mg för att göra var att underlätta för andra personer som delade mitt intresse för FPS spel. Mitt mål var att kunna erbjuda en komponent som är lätt att använda och som har möjligheter att finjustera alla funktionerna för att få dem att passa in i vilket spel som helst. Jag ville även ge användaren möjlighet att genom ett knapptryck stänga av funktioner som inte är önskade. Dem stora kunskaps områdena som jag fick lägga fokus på var Unitys fysikmotors funktioner och hur jag kan tillämpa dem. Men även matematiska området trigonometri som behandlar vinklar och distanser i trianglar ansåg jag vara viktigt för att kunna få vissa funktioner att funka enligt önskemål. 2.2 Frågeställningar: dessa frågeställningar blev huvudfokus innan jag skulle börja bygga upp systemet. 1: Vilket kodspråk skulle jag använda mig av. Java script och C-sharp är dem två språken som finn tillgängliga i Unity. Vilket språk har mest fördelar och bäst stabilitet i funktionerna. 2: Vilken typ av fysik skulle jag använda mig av. Valet stod mellan Rigidbody eller Character controler. Efterforskningen kring de båda alternativen blev att ta reda på vilka funktioner dem båda har och vilken komponent som skulle ge mig bästa grunden för att forma mekaniken enligt mina önskemål. 3: Hur många special funktioner kunde jag bygga in i systemet utan att påverka spelmotorns prestanda överlag. Och skulle funktionerna prestera på önskad nivå utan att föra fel med sig som skulle påverka spelarens upplevelse 4: Vilken typ av matte skulle jag behöva tillämpa för att kunna räkna ut hur jag skulle få fysiken att fungera som jag ville. 2.3 Avgränsningar: I ett FPS spel är styrningen och fysiken bara en del av hela konceptet. Animationer och 3d modeler så som spelkaraktärer och vapen är även en stor del för att få en spelkänsla. Men pågrund av tidsbrist och brist i kunskap kring 3d modellering så struntade jag i att lägga till sådana funktioner. Men jag såg till att möjligheten finns för användaren att lägga till det vid önskemål. 5

3 Material och källor Materialet som jag använt mig av var Unity SDK som huvud program då det var den spel plattformen som mitt arbete skulle användas på. Till Unity följer programmet Monodevelop med som är Unitys egna kod redigeringsprogram. Unity är ett omtalat internationellt företag med miljontals användare varje år. Därför ansåg jag att det var ett pålitligt program att använda för mitt ändamål. Under första delen av arbetet när den största delen av efterforskning gjordes märkte jag att det i princip inte fanns någon litteratur i form av böcker. Men däremot har Unity en hemsida med dokumentation över alla funktioner som finns tillgängliga i programmet. Eftersom företaget själva la ut informationen om programmet på deras hemsida så tolkade jag materialet och källan som säker källa för hämtning av information. För information om kodningens uppbyggnad använde jag mig även av Microsofts hemsida då dem är företaget som skapat programmeringsspråket C- sharp. Hade även under arbetets gång hjälp av extralärare som var utbildade i ämnet och som hade många års erfarenhet av att göra spel i Unity SDK. Deras hjälp och kunskaper tolkade jag därför som högst trovärdiga. 6

4 Genomförande 4.1 Första tiden ägnades åt att samla information om området och sortera ut va som vad behövligt till vilken del av arbetet. Skrev ut dokument hämtade från Unitys egna hemsida om spelmotorn, dess funktioner och komponenter. Mycket av informationen handlade om Rigidbody och Character controller fysikkomponenterna, men även information om kodspråket C-sharp och dess syntax. Sådan information hämtades senare även från Microsofts hemsida vid behov. 4.2 Character controller komponenten var den fysikkomponenten som verkade vara lättast att använda då den redan hade många funktioner inbyggda i sig som skulle kräva en del kodning för Rigidbody. Därav blev valet att använda character controller. Efter att bakgrundsanalysen var klar spenderades dem första veckorna på att bygga upp grunden för komponenten och få dem simpla rörelsefunktionerna att funka. Dessa funktioner utgjorde grunden för resten av funktionerna. Pågrund av omständigheter med lärarbyte och andra skoluppgifter var arbetet efter planeringen mot vecka två. Men arbetet fortsatte och och tempot ökade gradvis. Deadlinen för arbete sköts upp från sin ursprungliga vecka sju. Pågrund av denna uppskjutning och problem med character controller komponentens begränsningar byttes den ut mot Rigibody. De grundsystem som gjorts tidigare programmerades om för att passa till Rigidbody komponenten. Specialfunktionerna begränsades också till bara double jump och wall running 4.3 Slutskedet av arbetet bestod av optimering av funktionerna v 15-16. Sedan hittades vissa brister i systemet och sista tiden gick åt till att koda om grund systemet för wall running funktionen då det fanns alldeles för många bugar i systemet. 7

5 Resultat Efter veckor med arbete och omständigheter blev komponenten klar för användning. Styrsystemet funkar och specialfunktionerna Double jump och Wall running fungerade som önskat. Uppskattningen av tiden visade sig inte stämma överens med den tiden allting tog. Att bygga upp grund rörelsefunktionerna gick bättre än förväntat men däremot så blev specialfunktionerna mer invecklade än förväntan och krävde längre och mer invecklad programmering. Men tillslut fungerade allting enligt önskemål. Frågeställningarna blev fler och mer fördjupande under processens gång och vissa antagningar som gjordes i början av projektet visade sig inte stämma överens med vad som togs fram i slutändan. Eftersom att efter halva tiden så byttes character controller komponenten ut mot Rigidbody så blev programmeringen av funktionerna helt annorlunda än vad som hade använts tidigare innan bytet. Slutligen blev resultatet av arbetet med nya kunskaper att ett projekt av den här storleken mer tid och energikrävande mot vad som hade förväntats. Allt detta trots att projektet skalades ner från den första idéen av ett komplett spel till att bara lägga fokus på själva styrsystemet bakom. 8

6 Diskussion Projektet har överlag varit väldigt roligt och intressant. Har lärt mig väldigt på vägen trots att allting inte gick som det var planerat från först början. När min idé för gymnasiearbetet var att göra ett helt spel var planen överambitiös och inte tids realistisk. Har lärt mig med tiden och arbetets gång att saker och ting inom spel utveckling tar längre tid och att när som helst kan saker sluta fungera utan någon egentlig förklaring. Och eftersom att jag aldrig tidigare jobbat med C-sharp så blev det en utmaning i sig att lära sig hur det fungerar och vad som är faktiskt möjligt att göra. Eftersom att jag bytte ut huvud fysikkomponenten i mitt arbete efter ungefär halva tiden så insåg jag att efterforskningen bakom komponenternas funktion var på en alldeles för grundlig nivå. Och senare i arbetsprocessen blev jag tvungen pågrund av tidsbrist tvungen att minimera antalet specialfunktioner till enbart två. Detta var ändå bra då det fick mig att vara mer noggrann med varje liten del. Och det gjorde att jag lärde mig massor om hur Unitys fysikmotor fungerar. Att arbeta inom en strikt tidsram var väldigt stressande under vissa moment men samtidig uppbyggligt då jag lärde mig att prioritera min tid och att kunna begränsa mig till att bara göra vissa saker. Och eftersom mina förkunskaper om Unitys funktioner och programmering var på en väldigt grundläggande nivå så blev utmaningarna väldigt stora då jag var tvungen att läsa mig till det mesta själv. Men det positiva bakom det hela är att jag har lärt mig massor kring spelutveckling men även skapat nya kontakter inom branschen som jag hoppas på kunna använda mig utav särare efter min gymnasietid. Hade även underskattat komplexiteten av att redogöra allt i en vetenskaplig rapport. Men alla dessa erfarenhets bär jag mäed mig i framtida studier och projekt. 9

Källförteckning Unity Technologies http://docs.unity3d.com/manual/physicssection.html http://docs.unity3d.com/scriptreference/index.html Microsoft C-sharp guide https://msdn.microsoft.com/en-us/library/67ef8sbd.aspx 10

Bilagor använda fysik komponenter Färdiga komponenten 11

Arbetsplan Bakgrund: Jag kommer jobba i Unity 3D SDK (software development kit). det är ett program skapat för att utveckla spel och appar. Mitt projekt kommer handla om att koda ett styrsystem som ska kunna tillämpas på karaktärer i olika sorters spel. Därför kommer komponenten behöva många olika funktioner men samtidigt vara lätt att använda för folk som inte har varit med och skapat den. Syfte: Syftet med projektet är att skapa en produkt som jag själv har känt ett behov utav tidigare. personer som inte har tid eller kunskap att göra det själva ska kunna ladda ner produkten som en fil och tillämpa i sitt spel lätt och smidigt Metod: Kommer söka runt på internet efter andra som har gjort liknande saker tidigare för att få inspiration och idéer. Har även en ämnes kunnig lärare som ja kan bolla ideér med och komma på lösningar på problem under processen. Jag kommer inte behöva några externa redskap förutom Unity och Monodevelop som är ett program för att skriva koder. Unity stödjer flera typer av kodspråk däribland C-sharp vilket är det Kodspråket jag har bestämt mig att använda mig av. jag väljer det framför tillexempel Java pågrund av att det är effektivare kodspråk med fler användningsområden än Java. Målgrupp: Min målgrupp har ingen bestämd åldersgrupp utan jag riktar mig till folk som är nya inom spelbranschen precis som jag. folk som är i situationen att dem har en ide som dem vill verkställa men vet inte riktigt hur dem ska göra. Medium: Ska skapa produkten och om jag är nöjd och vill ge ut den så kommer jag försöka göra reklam för den på twitter och via folk jag känner över internet. Dokumentation: Dokumentation sker på Tumblr 12

Planering Vecka Del klar 47 Basic styrsystem klart 48 49 50 Dublejump klart 51 52 1 Boost slide klart 2 Optimering 3 Optimering / första utkast raport 4 Buggfixar 5 Buggfixar 6 Sista check på systemet / inlämning rapport 7 Redovisning Arbetes logg v 47-48 samlades information v 49-52 kodade jag det grundläggande styrsystemet v 1-3 började jobba på specialfunktionerna v 4 insåg bristerna och begränsningarna med character controller och bestämde mig för att byta till Rigidbody v 5-8 arbetade om grunderna i styrningen för att anpassa efter Rigidbody komponenten v 9-12 byggde upp specialfunktionerna Double jump, wall run v 13-14 la till begränsad sprint och wall run time v 15-18 optimerade funktionerna, ändrade vissa funktioners grundkod för att få allt att fungera bättre 13