5. Semester Projekt Datamatiker Artificial Intelligence og Multiplayer UCN Mathias Fjord Christensen og Rasmus Winther Jensen

Størrelse: px
Starte visningen fra side:

Download "5. Semester Projekt Datamatiker Artificial Intelligence og Multiplayer. 15-01-2014 UCN Mathias Fjord Christensen og Rasmus Winther Jensen"

Transkript

1 5. Semester Projekt Datamatiker Artificial Intelligence og Multiplayer UCN Mathias Fjord Christensen og Rasmus Winther Jensen

2 University College Nordjylland, Teknologi og Business Datamatiker DM76 Rapportens omfang: 53 Sider, ord. Projektdeltagere: Mathias Fjord Christensen Rasmus Winther Jensen Vejleder: Istvan Knoll Resume: Dette projekt omhandler udvikling af Multiplayer og Artificial Intelligence til et spil, der er udviklet i samarbejde med Dechdroid. Multiplayer delen lykkedes delvist, mens den Artificial Inteligence lykkedes. Afleveringsdato: Underskrift: Mathias Fjord Christensen Rasmus Winther Jensen Side 2 af 53

3 Indholdsfortegnelse Indledning... 5 Problemformulering... 5 Afgrænsning... 5 Målgrupper... 6 Idéudvikling af multiplayer delen... 7 Boehm s Diamant... 8 Size... 8 Criticality... 8 Dynamism... 8 Personnel... 8 Culture... 8 Planlægning Teknologivalg Risiko analyse Udviklingsmiljø Google Play Google Play Game Service Real-Time Transport Protocol (RTP) Client-Server og Peer-To-Peer Kommunikation med serveren JSON Bytearray Informationssøgning Arkitektur og krav Realtime spil Sprint Første Scrum meeting Brainstorm User stories Planlægning af test Andet Scrum meeting Sprint Udvikling under sprint Side 3 af 53

4 Evaluering af sprint Scrum meeting Sprint Udvikling under sprint Evaluering af sprint Risiko analyse for AI Undersøgelse af muligheder for AI Genetiske algoritmer Utility funktioner Neurale netværk Q-Learning Plan til egen AI Sprint Udvikling af AI Første færdige iteration af AI Evaluering af sprint Undersøgelse af multiplayer-fejlen Alternativ til Google Sprint Udvikling af utility funktioner Evaluering af sprint Kodebeskrivelse Utility Funktioner Artificial Intelligence State Machine Personligheder Konklusion Perspektivering Referencer Side 4 af 53

5 Indledning I denne rapport vil man læse om udviklingen af multiplayer funktioner til et spil til Android enheder. Man vil læse om, hvordan projektet er blevet styret, hvilke teknologier der er blevet valgt samt andre overvejelser. Man vil også læse om udviklingsprocessen, og hvilke udfordringer der er forekommet undervejs. Spillet er blevet udviklet i samarbejde med firmaet Dechdroid. Dechdroid er et lille firma, der har specialiseret sig i at lave applikationer til Android. Virksomhedens rolle i dette projekt har været at oplyse om, hvilke funktioner de mener er væsentlige at have med, når et spil skal fungere over internettet. Spillet der bliver videreudviklet på, er lavet af gruppemedlemmet Rasmus, i hans praktikperiode på 5. semester. Spillet havde alle basisfunktioner, der gjorde det muligt at spille spillet ud fra de definerede regler. Der var en simpel AI (Artificial Intelligence), hvilket der også i rapporten vil blive arbejdet på at forbedre. Dechdroid havde ønsker til, hvad de kunne tænke sig at få udviklet til spillet. Først og fremmest ville de have implementeret multiplayer delen. Derudover ønsker de en forbedret AI, da de har fået kritik af denne til betatestningen. Projektet har spændt sig over tidsperioden fra den 11/ til den 15/ Problemformulering Dette er, hvad der vil blive arbejdet med i projektet: Spillet mangler multiplayer funktioner. Dette er væsentligt, da Dechdroid ønsker dette implementeret, før de kan sende produktet på markedet. AI'en skal forbedres, da den er for nem at vinde over. Afgrænsning De multiplayer funktioner der skal implementeres, er nogen der er bestemte af Dechdroid. De ønsker følgende: Der skal være mulighed for at 2 personer kan spille mod hinanden over nettet. Det skal være muligt at invitere en ven til et spil. Det skal være muligt at kunne spille mod fremmede. Det skal implementeres med Google Play Game Service. Google Play Game Service er en SDK, Google har lavet, der gør det muligt at udvikle realtime multiplayer funktioner til Android spil. Til AI'en var der kun 1 krav, hvilket var at den skulle være sværere at slå, ved ikke at opføre sig så statisk, som den gør på nuværende tidspunkt. Side 5 af 53

6 Målgrupper Formålet med at redegøre for, hvilke målgrupper spillet er henvendt til, er at kravene til spillet bliver mere præcise, samt at spillet kan få en større succes. Eftersom spillet er lavet som en android applikation, lægger det primært op til, at spillet er henvendt til android platforme. Dog er der understøttelse af ios på Google Play servere, hvilket giver anledning til, at målgruppen kan udvides til Apple-brugerne. Android og ios brugere har det tilfælles, at de har mulighed for at downloade applikationer til deres enhed, der både kan være en mobiltelefon eller tablet. Det er en meget bred målgruppe, eftersom tallene i Danmark siger, at 7 ud af 10 voksne har en smartphone, og op imod 44% har en tablet i husstanden. Det er derfor svært at pege på hvilke segmenter af befolkningen der er den egentlige målgruppe, da alle med enten ios eller Android er potentielle kunder. 1 Som kilden også fortæller, bruger smartphone brugere omkring 6,50 kroner per applikation, og på tablets er tallet 8,50 kroner. Disse tal giver et præg om, hvor prisen for spillet burde befinde sig. Dog nævnes det også at folk er tilbøjelige til at "nøjes" med en gratisversion af en applikation, hvor reklamer kommer frem, frem for at købe en version, hvor reklamerne er væk. Ifølge denne kilde 2, er kvinderne den type spillere, der spiller et spil i 10 minutter for at slappe af. Mænd spiller gerne flere timer ad gangen. Det giver en fingerregel, om hvorledes man henvender spil til mænd og kvinder, blot ved at styre hvordan tidsforbruget på applikationen skal være. Hvis kvinder bedst kan lide at spille således, at de laver få træk ad gangen, men har mulighed for at vende tilbage til spillet, når de lyster, er det væsentligt at overveje en funktion, der understøtter dette krav. På samme måde skal der til mænd være mulighed for at lave en funktion, der gør det muligt at have en længerevarende session af spillet. Ved at have denne information i baghovedet, er det muligt at gøre noget for begge køn, der gør spillet sjovt og naturligt at spille. Målgruppen for spillet er derfor, folk der ejer enten en ios eller Android enhed, de skal være villige til at betale for applikationer frem for at vælge en gratisversion, de skal være tilbøjelige til at købe udvidelser, og det skal være folk, der kan lide at spille på deres enheder. Ud fra kilder betyder køn ikke noget, da både mænd og kvinder bruger spil-applikationer. Det er svært at sætte en alder på, hvem målgruppen kan være. Selv børn har en købekræft, da der er mulighed for at børnenes forældre vil finansiere deres forbrug på apps. En ting de alle har tilfælles, er et behov for at "slå tiden ihjel". Dette projekt vil ikke beskæftige sig med det grafiske aspekt i spillet, derfor vil denne information blive brugt til at give spillet de funktioner det behøver, for at være succesfuldt. Derfor vil der ikke blive arbejdet på, hvilke visuelle elementer der skal til for at holde spillets udseende neutralt, så det ikke appellerer til det ene køn frem for det andet. Side 6 af 53

7 Idéudvikling af multiplayer delen Da multiplayer delen af spillet er, hvad dette projekt delvist vil omhandle, er det vigtigt at få planlagt det ordentligt, og få tingene på plads inden udviklingen går i gang. Da der er et hav af muligheder for, hvad et spil kan i multiplayer miljø, skal det laves ud fra, hvordan virksomheden vil have det til at fungere og bruge den bedst mulige løsning. Det forventes, at virksomheden har bedst indsigt i, hvad lige præcis denne applikation skal kunne, og hvilken målgruppe der skal rammes. Der blev lavet storyboards, hvor der blev tegnet forskellige scenarier, hvor man går fra at komme ind på startskærmen af spillet, til multiplayer delen, og hvad der sker bagefter. Det scenarie, der blev vurderet til at være det bedste, blev taget videre, og skulle danne basis for, hvordan navigation rundt i spillet skulle implementeres. Her ses vores storyboard. Der blev ikke taget højde for noget teknisk, kun krav fra virksomheden, og det flow som virker mest naturligt at gennemgå, når man er i en app. Måden hvorpå det bedste scenarie blev valgt, var blot ved at vurdere på, hvor få steps man skulle igennem for at nå ind i et spil, om det gav mening at have given information, der hvor det var placeret, og er det åbent for mulige udvidelser senere i fremtiden. Når der er udvalgt et storyboard, skal virksomheden godkende det, og først der, er det klar til at blive videreudviklet til en løsning. Der blev lavet et storyboard, der viste, hvordan hver eneste funktion skulle fungere. Det mentes at dette ville gøre det nemmere at udvikle iterativt, da man så kan udvikle på hvert step i et storyboard. Samtidig gør det det nemmere at dele arbejdet ud imellem gruppemedlemmerne. Side 7 af 53

8 Boehm s Diamant Boehm s diamat 3 er god til at fortælle hvordan dette projekt skal gribes an. Om det er velegnet at arbejde meget agilt, eller er det bedre at arbejde disciplineret (plandrevent). 4 Size Teamets størrelse er 2 mand. Når et team er så lille, er det velegnet til agile arbejdsmetoder, da det vil være for omfattende, hvis alt skal modelleres før udviklingen starter. Værdien dette punkt vil blive tilegnet, er tilsvarende antallet af gruppemedlemmer, altså 2. Criticality Der er blevet investeret i dette projekts fremtid. Der skal betales for brug af google play servere, og så er der allerede købt grafik andetsteds fra, for omkring kr. Hvor stort tabet vil være, hvis projektet i sidste ende mislykkes, er ikke til at sige, da det er fortrolig viden hos Dechdroid. Da spillet i sidste ende skal kunne generere penge for virksomheden, vil der også være et tab, hvis spillet har mangler. For at kunne komme med bedst mulig bud på, hvilken værdi der skal vælges, kræves der indsigt i virksomhedens økonomi, hvilket gruppen ikke har, og derfor må værdien baseres på et gæt. Værdien der bliver tilegnet i denne kategori bliver Discretionary founds. Dynamism Det kode som der allerede er, og som danner basis for spillets funktionalitet, er lavet så det understøtter spillets regler. Det forventes ikke, at spillet kommer til at udvikle sig så meget, at reglerne skal til at ændres. Skulle spillet dog en dag udvikle sig så meget at der skal være mulighed for at spille 4 spillere i 1 spil, kræver det en væsentligt større spilleplade. Hvis det sker, vil det kræve udvidelser i koden. Det vil ikke tage lang tid at gøre det, derfor får det værdien 10%. Personnel Da begge gruppemedlemmer stadig er forholdsvis nye kodere, passer begge i Level 1B gruppen, på vej op imod Level 1A, hvilket er bedst egnet til at arbejde plandrevent. Culture Projektet kommer til at være præget af kaos, eftersom målene i dette projekt kræver erfaring gruppen ikke på nuværende tidspunkt besidder. Den manglende erfaring kan blive et problem, hvis det viser sig, at der er meget, der skal indlæres før projektet kan fortsætte. Værdien 90%. Side 8 af 53

9 Som det kan ses på denne model, passer projektet til den agile fremgangsmåde. Noget andet der taler for, at der burde blive arbejdet agilt er, at når gruppen ikke er større end den er, kan det være svært at nå at få udviklet noget, hvis der skal arbejdes plandrevent. Det frygtes at mængderne af dokumentation vil tage for lang tid. Side 9 af 53

10 Planlægning Til at styre udviklingen er Scrum blevet udvalgt som inspiration til udviklingsmetode. Det er ikke muligt at anvende Scrum til fulde, da der er flere kriterier, der ikke kan opfyldes for dette. For eksempel er det et team på 2 der udvikler, og derfor giver det ikke mening at lave roller, som Scrum anviser. Dog giver det god mening, at der hver uge bliver holdt et møde, hvor der bliver gjort op med, hvor langt man er nået. Særligt når det ikke er sikkert, at udviklingen kun finder sted, når teamet er samlet. Derudover ses det som værende en god idé, at arbejde agilt, da dette projekt indeholder problemstillinger teamet ikke før har arbejdet med. Det giver den fornødne fleksibilitet, der er brug for, hvis det viser sig, at problemet skal løses på en anden måde end hidtil antaget. Fordelen ved at bruge en backlog, frem for en tidsplan til at styre arbejdsprocessen, er at den er fleksibel. Der kan hele tiden tilføjes nye tasks til backloggen, hvilket er en styrke, når det stadig er uklart, om der er blevet taget højde for alt. Ved brug af en tidsplan er det bedst, hvis man har erfaring med, hvad man skal til at arbejde med. En anden praksis der bliver anvendt fra Scrum er sprint. Det har før vist sig, at gruppens medlemmer arbejder godt i sprints. Det at der bliver opsat tasks fra user stories i et sprint, hvor user stories'ne gerne har noget tilfælles, så der hver uge er noget nyt at vise i forhold til produktet. Et sprint kommer til at spænde over en uge. Eftersom projektet skal afleveres den 15. januar 2014, ses der ingen grund til at sprint'ene skal vare længere, da gruppen frygter at lange sprints kan resultere i mindre effektive sprints, eftersom man har længere tid. Ved korte sprint kræves der er ny funktionalitet hver uge, hvilket gruppen mener, er den passende. De små inkrementelle udvidelser forventes også at være med til at nedbryde kompleksitet. Der vil blive anvendt Burndown charts, så gruppen kan følge hvor meget arbejde der er tilbage, versus den tid der er tilbage. Gruppen mener, det er et godt værktøj til at gå ind og se hvilke typer opgaver der forvolder problemer/forsinkelser, som så kan tages med i betragtningen til når næste sprint backlog planlægges. Til sidst i projektet er det muligt for udviklerne at finde ud af på hvilke områder der er sket forbedringer, og hvad der skal trænes i, hvis der en dag skal laves noget lignende. Helt overordnet, er der brug for at lægge en tidsplan, så det kan ses, hvornår udviklingen skal gå fra og til. Backloggen kan beskrives som en plan for udviklingen af produktet, hvor en tidsplan planlægger hele projektperioden. Der bliver også taget inspiration fra Kanban. Der er i gruppen enighed om, at det vil gavne at visualisere workflow, hvilket vil blive gjort igennem et Kanban-board. Dette skal bruges som en motivationsfaktor, samt information for teamet, så det kan ses hvordan projektet skrider fremad. Kanban lægger også op til, at man skal begrænse sig, så man ikke kan begynde at arbejde på for mange tasks ad gangen, da det kan være forvirrende. Derfor skal teamet sætte en fornuftig grænse for, hvor mange tasks der må være "in progress". Ved at gøre dette håbes der på, at det letter arbejdet for udviklingen, og man kommer fornuftigt igennem de nye udfordringer, ved at reducere støj. Der vil også blive inddraget praktikker fra XP, så som On site Customer da Dechdroid er kunden, der har et ønske der skal opfyldes, og udviklingen sker i samarbejde med dem. Den konstante kontakt med virksomheden gør, at forventningerne Dechdroid har, kan realiseres effektivt, og projektet forhindres i at tage retning imod noget Dechdroid ikke vil være med til. Side 10 af 53

11 Collective Code Ownership er en anden praktik. Da gruppen består af 2 udviklere, vil det ikke give mening at noget kode ikke er tilgængeligt for begge. Af samme årsag vil der i projektforløbet blive brugt et online repository BitBucket, så man som udvikler kan komme i besiddelse af ny kode hurtigt. Til sidst er der par programmering. Denne praksis vil så vidt muligt kun blive brugt ved de mest komplekse tasks. Dels for bedre at undgå skriveblokader, og for at begge udviklere får en forståelse for, hvordan man går fra problem til løsning. Derudover vil korrekt brug af denne praksis, give et pænere design af koden, og refactoring vil ske løbende. Arbejdet vil blive evalueret, justeret og optimeret hver mandag, på baggrund af Scrum meetings der vil foregå hver mandag. Er der noget i projektet der resulterer i et skrivestop, skal der arbejdes på at få problemet simplificeret ved at planlægge en løsning og effektivt få det løst. Hvis det viser sig at problemet er mere krævende end forventet, skal det overvejes, om det kan udskydes til et andet tidspunkt, eller om man skal vælge slet ikke at arbejde på det. Til at danne et billede af hvor effektivt der skal arbejdes, samt tilrettelægge sprints, vil princippet velocity blive brugt. På denne måde bliver sprints tilrettelagt ud fra estimater af kompleksiteten af user stories fra backloggen. Erfaring kræves dog, hvis man ønsker at opnå det bedste resultat, da estimeringen af kompleksiteten er afgørende. Eftersom meget er nyt i dette projekt, er det ikke realistisk at håbe på de første sprint har en ordentlig velocity. Derfor skønnes det, at de første sprint bliver ringe planlagt, men i takt med at der bliver dannet en forståelse for, hvor meget der skal til for at løse problemstillingerne, vil planlægningen være realistisk i forhold til, hvad der kan præsteres i en uges arbejde. Gruppen er blevet tilegnet sig en vejleder til projektet. Vejlederens rolle er at give inputs til, hvordan gruppen kan lave et fornuftigt projekt, og bør derfor konsulteres ofte, for at projektet holdes på rette kurs. Som udgangspunkt vil gruppen som udgangspunkt vedholde at have et møde hver uge som minimum. På den måde kan vejlederen holdes opdateret. Der ses ingen grund til ikke at tage mødet, eftersom en uges arbejde bør evalueres. Fordelen ved ikke at bruge UP eller lignende udviklingsprocesser er, at gruppen ikke skal bruge unødig tid til at redigere i diverse modeller. Gruppen er enig om at plandrevne udviklingsmetoder ikke er egnede, da chancen for at kunne planlægge arbejdet godt nok til at det er effektivt, ikke er god nok. En anden fordel ved scrum er, at det er muligt for gruppen at ændre på, hvad der skal arbejdes med. Hvis det viser sig at projektet skal udvide sig, kan man uden mange ændringer indføre tilføjelser til projektet. På den måde sikres det, at projektet kan styres fornuftigt, selvom der skal udvides. Side 11 af 53

12 Teknologivalg Dette kapitel beskriver hvorfor der bliver valgt de valg som der gør. Valgene vil være baserede på fordele og ulemper, og ud fra hvilken løsning der vil være den bedste i den givne kontekst. Bitbucket 5 bliver brugt til at hoste dette projekt. Det gør det nemt at udvikle, da koden er tilgængelig så længe, man kan forbinde til internettet. Det er en nødvendighed for gruppen at have koden tilgængelig på denne måde, da det ikke er sikkert at gruppen kan samles hver dag. Sourcetree bruges til revisionsstyring. Selvom gruppen har mest erfaring med Tortoise SVN, bruges Sourcetree, eftersom det anbefales at bruges sammen med Bitbucket. For at spillere skal kunne kommunikere med hinanden skal spillerne have mulighed for at sende informationer over linjen. Dette gælder både, når der skal sendes chatbeskeder til hinanden, men også når en spiller skal fortælle sin modspiller, hvilket træk han har foretaget. Googles API tilbyder metoden sendreliablerealtimemessage, der blandt andet tager et byte[] som parameter. Læser man på denne metode 6 kan man se, at metoden kan håndtere fejl. Metoden skal vide, hvilket spil der skal sendes til, og hvem af spillerne i spillet, der skal have beskeden. En ulempe ved at bruge byte[] er, at man kan risikere at sende flere gange, alt efter hvor meget data, der er brug for. Til gengæld sendes kun det nødvendige. Her sendes der altså med et Byte[], men det er også muligt at sende JSON objekter. Dette er dog ikke muligt i real-time mode, da JSON bruges til at kommunikere imellem server og web applikation, og i real-time mode, er serveren væk, da spillet vil køre over en peer-to-peer arkitektur. Fordelen at bruge JSON frem for byte[] er, at man kan sende objekter med kun en smule metadata, hvor et sprog som XML har meget metakode i forhold til egentlig data. Det er også muligt at bruge GSON, der kan serialisere og deserialisere Java objekter til og fra JSON. Ulempen ved at bruge GSON er, at det som udgangspunkt vil sende hele objektet, med mindre man håndterer det. Samme problemstilling står man overfor når man bruger JSON. Valget går til sidst på, at der skal sendes data ved hjælp af byte[]. Grunden til dette er, at der ikke ses nogen grund til at sende hele objekter over linjen hver gang, der bliver lavet et træk. På længere sigt, når multiplayer / onlinedelen af spillet bliver mere avanceret med flere funktioner, kan det være en fordel at bruge JSON eller GSON. Google Play Game Service anvendes som Backend til dette spil. Der er mange fordele ved at bruge denne service, og det sparer arbejde for udviklerne. Google Play Game Service tilbyder API'er der indeholder funktionalitet, der kan tages i brug hvis det ønskes. Google vil også tage sig af at hoste spillet. En ulempe ved at bruge servicen er, at den koster penge. Ud over Google, er der andre firmaer der har deres egne bud på applikationsmarkeder. Dog er de fleste begrænsede ved, at de ikke er tilgængelige i nogle lande. Dechdroid ønsker at kunne komme ud flest mulige steder, og derfor skal disse andre services ikke bruges 7 Side 12 af 53

13 Et andet alternativ til at bruge Google Play Game Service er at man selv skal til at implementere funktionaliteten, og have en server til at stå. Det er der ikke tid til, og da Dechdroid i forvejen har en aftale med Google, bliver deres Game service brugt. Udviklingsmiljøet der er valgt til dette projekt er Eclipse, med Android Development Tool (ADT) som plugin. ADT er udviklet af Google, og er anbefalet af Google, hvis man ønsker at udvikle en Androidapplikation. Derudover er de guides, Google har til hvordan man bruger deres API'er, henvendt til udviklere, der bruger ADT. Derfor er ADT det mest fornuftige valg. Alternativt kunne man bruge andre plug-in's, dog er det en chance man løber. Man kunne sagtens have brugt andre udviklingssprog. C# kan udvides med plug-in'et Xamarin, som efter undersøgelser, tilbyder det samme som ADT. ADT er valgt som udviklingsmiljø, eftersom det er hvad Google anbefaler, og der er guides tilgængelige. Efter at have set på hvad de forskellige plug-ins tilbyder, er gruppen kommet frem til det blot er en smagssag, om man foretrækker C# eller Java. Eftersom spillets logik i forvejen er lavet i Java, vil det der bliver udviklet i dette projekt også blive lavet i Java og ADT. Side 13 af 53

14 Risiko analyse Ved alle projekter vil der altid være en risiko. De risikoer vi, som udviklere, kan komme ud for, vil blive redegjort for i dette afsnit. Den største risiko ved dette projekt er, at udviklerne er uerfarne med at anvende Google Play og at lave et spil i Java. Så der skal undersøges en masse, der skal arbejdes hårdt og struktureret, hvis alt multiplayer skal fungere upåklageligt, når projektet er slut. En stor del af opgaven vil være at sætte sig ind i, hvad Google egentlig tilbyder igennem Game Service, og hvordan det bruges fornuftigt. En anden risiko er, at gruppens størrelse er på 2 mand. Om det er for stor en opgave der skal løses i dette projekt, vides ikke på forhånd. Eftersom Google Play anvendes, overlades serveransvaret til Google. Man har ikke selv ansvaret for sine servere, og det kan være en risiko. Hvis Google går ned, kan man kun vente på de løser problemet. En fordel ved at Google styrer serverne, er at det ikke er noget man skal bekymre sig om som udvikler, man skal stole på det fungere, som det skal. Da et krav til spillet er, at det skal fungere på Android platforme, ville en god måde at sikre dette krav være, at teste spillet på forskellige typer af Android enheder. Gruppen har 3 tablets til rådighed, hvor 2 af dem er ens. De er alle 10.1", og har samme styresystem, så alle tablets har nogle ligheder. En væsentlig forskel er, at den ene tablet er fra 2011, hvor 2 andre er fra Ved at teste på disse enheder kan det ses, hvorvidt der er afhængigheder af nye teknologier. Gruppen håber på, at selv den gamle tablet kan være med. Et succeskriterium er, at spillet som minimum virker på 2 ens tablets. Projektperioden kommer til at strække sig over jul. Der er en risiko for at begge gruppemedlemmer bliver forhindret i at arbejde i denne periode, og der kan derfor gå arbejdstimer til spilde. Gruppen er enig om, at der derfor skal arbejdes seriøst helt frem til jul, for at undgå tidspres. Samtidig vil der planlægges således, at de sprint der vil strække sig over samme periode vil blive lavet på disse forudsætninger, så det er muligt at gå ind og ændre i planen. Som beskrevet tidligere, kan det agile hjælpe med at omlægge processen hvis der kommer forstyrrelser i processen. Derfor burde gruppen kunne håndtere eventuelle problemstillinger, afhængigt af sværhedsgraden. Tidsplanen der er lagt, er estimeret højt. Det vil sige at der er taget højde for mange problemer. Så selvom der spildes meget tid med at klare problemer, vil tidsplanen holde indenfor en vis grænse. Side 14 af 53

15 Udviklingsmiljø Dette kapitel vil beskrive Libgdx, der er det valgte udviklingsmiljø. Libgdx er et spiludviklings framework, der tilbyder en API der virker på alle understøttede platforme, der er skrevet i Java, med C og C++ komponenter. I Libgdx er det muligt at lave spil til både desktop og Android ved brug af det samme kode. Det er cross-platform, hvilket betyder det er muligt at udvikle til flere styresystemer som eksempelvis Windows, Linux, Mac OS, Android og ios. Målet for Libgdx er 100% kompatibilitet imellem desktops og mobile enheder. Kun hastigheder må være forskellen. Libgdx gør det muligt at lave kode, skrive test og debugge applikationen på sin computer, og derefter kan man downloade den til for eksempel en Android enhed og forvente, det virker på samme måde som på computeren. Libgdx har den egenskab, at det kan abstrahere fra forskellighederne mellem desktopapplikationer og Android applikationer. Styrken ved Libgdx er, at udviklerne ikke skal bekymre sig om, der er forskelle i stabiliteten fra desktopversionen til Android versionen. Derfor kan man arbejde størstedelen af tiden på computeren, og teste om funktioner fungerer efter hensigten på Android enheder. Input håndtering kan Libgdx også tage sig af. Det kan abstrahere mellem input fra mus og touchskærm. Det vil sige, det samme sker, når man trykker på skærmen på sin mobile enhed, eller hvis man trykker med en mus. Frameworket tilbyder klasser, der letter meget af arbejdet, ved at håndtere low-level logik. Dog er det muligt for udviklere selv at gå ind og ændre på low-level koden, hvis der er behov for dette. Libgdx sigter efter at blive et framework frem for en spil-engine. På denne måde undgår man at tvinge udviklere til at følge retningslinjer. I stedet giver det mulighed for at lave varierede applikationer Side 15 af 53

16 Google Play Google Play er stedet, hvor spillet i sidste ende vil blive distribueret fra. Det er et valg Dechdroid har truffet, da de i forvejen har gode erfaringer med det. Derudover har Dechdroid også valgt, hvilket sprog det skal være i, nemlig Java, da det er et sprog de selv er bekendte med, og derfor er det ikke noget problem for dem at vedligeholde spillet i fremtiden. Ved at spillet bliver lagt ud på denne service, giver det mulighed for at anvende API'er fra Google, der kan lette arbejdet for udvikleren. Selvom det er Google, der står bag denne service, er det stadig muligt at programmere applikationen så ios platformen også kan bruge den, hvis der var behov for det, da Google play understøtter dette. Når man anvender Google Play, skal man være klar over, at man som udvikler for de produkter, der ligger på servicen, kun får 70% af omsætningen. Resten går til Google. Det er en stor andel der går til Google, dog skal man ikke bekymre sig om at distribuere app'en, da det nu er Googles ansvar. Google Play Store kan kun tilgås af kompatible Android enheder. Det vil sige at Apple i første omgang ikke kan blive tilbudt dette spil. Det vil sige, at hvis Dechdroid i fremtiden vil have spillet ud til Apple-brugere, skal der først og fremmest betales for nye udviklerlicenser, samt betales for anvendelse af App Store som distributionsservice. Om det så er en fornuftig løsning at bruge Googles API'er frem for Apples når en ios version skal ligge på App Store, er en problemstilling der skal tages op, til den tid hvor Dechdroid også vil lave ios applikationer. Skulle det nogensinde ske, at Dechdroid vil have spillet lavet til ios, kan man downloade plug-in et Xamarin til Libgdx, der kan lette meget af arbejdet. Google Play Game Service Google Play Game Service er en API, der bliver anvendt for at få spillet til at fungere online. Game Service API'en har funktionaliteten til at gøre spil "sociale". Denne service tilbyder implementering af real-time multiplayer, achievements, leaderboards og mulighed for cloud saving af spildata. Dette er funktionaliteter som man typisk finder ved andre spil apps. Denne API danner basis for funktionerne, der skal implementeres i spillet. Servicen er gratis, da den følger med Google Play, og ikke fungerer uden. Servicen har god dokumentation, og giver et billede af, hvordan man starter med at anvende funktionaliteten. Derfor menes det ikke, at det er tidskrævende at sætte sig ind i, hvordan den anvendes bedst. Der er ingen "færdige" eksempler på spil der anvender Google Play Game Service, så der er stadig udfordring i, hvordan man anvender API'en fornuftigt, dog estimeres det ikke til at være noget, der vil tage for lang tid. Services, der findes i denne service, er også cross-platform, så det er muligt at udvikle til ios med denne service. Side 16 af 53

17 Real-Time Transport Protocol (RTP) Dette afsnit vil beskrive den protokol, der bliver anvendt i Google Play Game services, til at forbinde til serveren. Denne protokol definerer et standardiseret pakkeformat, indeholdende lyd og billede, som kan sendes over et IP netværk. RTP bliver typisk anvendt i kommunikations- og underholdningssystemer, der kræver at der bliver streamet lyd og billede. RTP bliver brugt sammen med Real-Time Control Protocol (RTCP). RTP har ansvaret for at bære billede og lyd, og RTCP har ansvaret for at overvåge transmissionerne. Protokollen er bygget til real-time overførsel af stream data, og har derfor nogle egenskaber, der kan drages nytte af i denne sammenhæng. RTP kan håndtere typiske fejl, som for eksempel jitter og kan opdage, hvis pakker kommer ind i forkert rækkefølge. RTP bruger IP multicast, hvilket gør det muligt at sende data til multiple destinationer (kan være Android-enheder i denne sammenhæng). Dette kan anvendes, hvis spillet en dag tillader mere end 2 spillere ad gangen på samme spil. På den måde vil hver spiller kunne se, når der bliver lavet et træk i real-time. En vigtig ting at huske på, når programmet bliver lavet, er at selvom TCP er standardiseret til RTP, bliver det ikke brugt. Dette skyldes at TCP bruger flere kræfter på stabiliteten, og i når noget streamer, ønsker man timingen skal være præcis. Derfor er størstedelen af RTP implementeringer lavet på UDP. Dette betyder for projektet, at der muligvis skal laves fejlhåndtering, da pakker kan mistes. Client-Server og Peer-To-Peer I dette projekt er der behov for at kommunikere med en server. Det er en fordel, at det er en server, der har ansvaret for at forbinde spillere i spillet, have informationer om spillere, vide om andre spillere er online osv. En fordel client-server arkitekturen giver, er at det er muligt at have en tung eller let server, eller om det er klienten, der skal være den kloge. I dette tilfælde vil det være serveren der er den tunge, da serveren har ansvaret for det meste af funktionaliteten i projektet. Serveren bliver anvendt i det samme øjeblik en bruger logger på sin Google+ profil, da det er væsentligt for andre spillere at vide, du er online og kan spille et multiplayer spil. Kan man ikke logge på sin Google+ profil, vil man heller ikke kunne anvende noget af serverens funktionalitet. Det vil sige at applikationen vil være begrænset til kun at kunne bruge funktioner, der ikke kræver serverfunktionerne som eksempelvis singleplayer. Denne afhængighed kan gruppen ikke gøre noget ved. Ved client-server arkitekturen er der typisk single-point-of-failure. Går serveren ned, er der ikke noget der virker længere. Peer-To-Peer(p2p) fungerer på en anden måde. Et p2p netværk er en samling af en masse enheder, der hver kan betragtes som en node i netværket. Hver node kender nogle andre noder, og sammen danner de et netværk, hvor hver node har en relation til en anden. Her er der altså ikke behov for en egentlig server til at slå op i. En fordel ved p2p er, at det er hver node på netværkets ansvar, at holde lige meget information som de andre. Et stort p2p netværk vil være effektivt, da alle resurser er delt ligeligt ud. Side 17 af 53

18 For projektet betyder dette, at når en forbindelse bliver oprettet imellem spillerne, og de tilsammen opretter et p2p netværk, vil det lette arbejdet for serveren. Det gør det muligt at have mange spillere i gang samtidig, uden det vil belaste serveren. Havde alle spil derimod foregået på serveren, ville der være en kapacitetsgrænse for, hvor mange mennesker, der ville være i stand til at spille samtidig. Da der ikke kan være mere end 2 personer i samme spil, vil p2p netværket ikke kunne få meget gavn af at dele resurser. De 2 noder på netværket danner tilsammen en begrænsning for, hvor krævende spillet egentlig kan være, dog er det ikke noget der menes værende et problem. En ulempe ved p2p netværk er, at det er noderne der ejer netværket, forstået på den måde, at man ikke kan holde styr på, hvad noderne på netværket foretager sig. Kommunikation med serveren Dette afsnit vil afdække hvilke muligheder der er for at kommunikere med serveren. Der findes mange muligheder at kommunikere med en server. Det er hvad der skal sendes, der ligger grundlag for hvilken metode der bliver taget i brug. I første iteration, er målet blot, at der skal sendes ved 2 begivenheder. Når en spiller flytter på en af sine brikker Når der bliver slået med terninger JSON JSON er en mulighed. Da det er designet til at kommunikere imellem en server og webapplikation, ville dette være et naturligt valg. Sammenlignet med XML, har JSON ikke lige så meget metadata. Med dette menes der, at der skal meget data med i XML, for at sende information med. Ved JSON er det lige omvendt, og fylder derfor ikke nær så meget. JSON vil derfor ikke belaste serveren på samme måde som XML kan. Eftersom JSON kan det samme som XML, er lettere for maskiner at læse og fylder mindre, vil XML ikke tages til overvejelse. Google tilbyder biblioteket GSON, der kan sættes i forlængelse med JSON. GSON er i stand til at serialisere og deserialisere JSON til og fra Java Objekter. Dette ville gøre arbejdet med implementeringen af JSON som transmitteringsformat. GSON kan håndtere collections, generiske typer og nested classes. GSON navigerer igennem objektets træ, når der bliver deserialiseret. Dette ignorerer ekstra fields i JSON inputtet. Man kan lave sine egne måder at serialisere og deserialisere på, og derved styre processen. GSON gør det muligt at styre, hvad der bliver sendt. Hvis det bliver brugt rigtigt, vil det kunne reducere mængden af data, og kun få det nødvendige data med. Side 18 af 53

19 Bytearray En anden mulighed er at bruge bytearrays. Bytearrays indeholder kun det data programmet lægger ned. Skal dette bruges, skal man som udvikler være klar over diverse fejlscenarier og arbejde sig udenom disse. Man skal også overveje en syntaks, der skal bruges når der pakkes hos senderen, og parses hos modtageren. En fordel ved at bruge bytearray er, at det er nemt at lave. Eftersom forbindelsen en klient har til serveren er RTP, er det muligt der forsvinder pakker, men med fejlhåndtering kan man minimere dette problem. Valget falder i første omgang på at bruge bytearrays til at sende med. Dette vil dog blot være første iteration. Når tiden er kommet til at programmet er blevet tilpas stort, og der er krav om at sende mange informationer samtidigt, skal det implementeres således, der bliver brugt JSON. Informationssøgning For at finde den information der skal bruges for at løse problemerne i dette projekt, er det et mål at finde professionelle løsninger. Derfor er der krav til de kilder der bliver anvendt, som fx at sidens forfattere skal have en baggrund inden for et eller flere af de emner der arbejdes med. Eftersom spillet bygges på en Google server, vil det være oplagt at finde informationer omkring, hvordan der arbejdes med sådanne servere på Googles egne sider. Informationssøgningen vil foregå struktureret. Eftersom Google er en internettjeneste, er det antaget at størstedelen af information findes på internettet på Google s egne sider. På Google s egne Google Play sider er der basal information til, hvordan man kommer i gang med diverse opgaver. Ligeledes er der information omkring hvordan man kommer i gang med at lave multiplayer funktioner, der kører over Google Play servere. Derfor ville det være ideelt at starte med at finde informationer her. Derudover har Google deres egne youtubekanaler, hvor Google forklarer, hvordan deres services fungerer, og hvordan teorien er bag disse. Videoerne fra disse kanaler vil også blive taget med som valide kilder. Hvis der opstår problemer i udviklingen og der er brug for inspiration, vil der blive søgt på nettet efter projekter, hvor der også er brugt samme services, for at få inspiration. Gruppen forventer ikke det er nødvendigt at bruge tid på at finde bøger, der kan hjælpe med anvendelse af Googles frameworks. Hvis det viser sig, at der er problemer, der ikke er relateret til Google, kan det blive nødvendigt at finde bøger der kan hjælpe. Side 19 af 53

20 Arkitektur og krav Arkitekturen der bliver anvendt i dette projekt er delvis en client-server arkitektur. Når spillet lukkes op, vil det gå på Googles servere. Her findes der informationer fra brugerens Google+ profil, der er obligatorisk at have, hvis man ønsker at spille over nettet. Det gør det muligt som spiller at kunne se, hvem af sine venner der er online, som man så kan spille med, hvis man vil. Når man har inviteret en ven til et spil, bliver serveren altså brugt som look-up server. Kommunikationen imellem klient og server fungerer over REST API kald. Hvis en klient sender en anmodning til serveren om, at han vil starte et spil med nogle venner, sendes denne information til serveren. Serveren giver derefter besked til de pågældende venner, igennem en teknologi kaldet GSync, og deres venner får en notifikation på deres enhed. Hvis en ven vælger at acceptere, sendes der endnu et REST API kald til serveren. Derefter bliver klienten der har oprettet rummet oplyst om, at der er tilmeldt en ny person til hans rum. Når en klient tilsluttes netværket, vil Google oprette et Peer-To-Peer netværk imellem klienterne i rummet ved hjælp af XMPP og libjingle. Kan der ikke oprettes en direkte forbindelse til en klient, kan Google oprette forbindelse ved at bruge serveren som omgangspunkt. De forbundne klienter i Peer-To-Peer netværket bruger RTP til at sende beskeder til hinanden med. Er der en Firewall på netværket, vil beskeder alligevel komme frem, da libjingle har teknologier der kan trænge igennem en Firewall. Google siger at dette er gældende 92% af alle tilfælde. Er der en Firewall den ikke kan bryde igennem, bliver serveren brugt, hvilket skulle dække de sidste 8%. Når et rum er sat op, og spillerne er forbundet ordentligt, vil arkitekturen gå til at blive en peer-to-peer arkitektur. Her er det så spillernes ansvar at holde på alt informationen af spillet. Her vil der være en opgave i at finde ud af, hvilke informationer der skal sendes til hinanden. Skal det være alle spilinformationer, eller er der nogle enkelte informationer, der er tilstrækkelige. Forbindelsen må som udgangspunkt ikke afbrydes, da der ikke ligger noget funktionalitet, der kan genoprette forbindelsen. Når en spilsession stopper, vil peer-to-peer arkitekturen ophøre, og igen vil client-server arkitekturen blive brugt. Ved dette skift, er det muligt for hver enkelt spiller at uploade sine statistikker til Google. Det giver mening, at hver enkelt spiller skal sende disse oplysninger, da det kan være risikabelt at overlade dette ansvar til én person, da der kan opstå fejl. Der er også mulighed for at lave en forbindelse, hvor spillerne uden konsekvenser kan miste forbindelsen til spillet. Denne forbindelse bliver ved med at anvende en client-server arkitektur, hvilket gør det muligt at give serveren ansvaret for at gemme spildata. Side 20 af 53

21 Her ses et billede af 1. og 3. fase af arkitekturen. Her ses et billede af 2. fase af arkitekturen Eftersom det er Play Game service der står for at oprette Peer-To-Peer netværket, er der intet problem i disse skift. Et ønske til produktet er at kunne spille spillet, hvor det er muligt at miste forbindelse, og fortsætte med at spille når man har forbindelse igen. Her vil arkitekturen se således ud: Hver spiller forbinder til Google Serveren. Denne server tilbyder en cloud, hvori det er muligt at gemme spildata. Derved er det serveren der holder information om en spil session. Det er hver spillers ansvar at få fat i data om det rigtige spil. Hver gang der bliver lavet et træk, skal der uploades til serveren, der sørger for at få gjort data tilgængeligt ved at lægge det i cloud'en. Derved har en spiller, der ikke har haft konstant forbindelse til serveren mulighed for at hente informationer om spillet. Applikationen vil derefter starte en ny spilsession, der tager udgangspunkt i det hentede data. For at undgå at misbruge cloud'en, skal applikationen kunne slette spildata derfra. Dette skal ske hvis spildata ikke har været i brug længe, og når en spiller vinder. 11 Side 21 af 53

22 Her ses et flowchart over, hvordan processen er i et realtime spil. Som det kan ses, startes spillet, og derefter forsøges der at logge ind på Google+. Derfra kan man gå direkte ind i et spil (alt efter spillet) eller gå til spillets startskærm. Herfra er der så flere muligheder, som for eksempel quickgame og man kan sende en invitation. Som det kan ses tillader flowet, at man tager flere spil ad gangen, når et rum er sat op. De to forskellige flows i den gule farve viser henholdsvis scenariet, hvor man selv opretter et rum med inviterede, og hvor man tilslutter sig et andet rum. 12 Side 22 af 53

23 Realtime spil Der er mulighed for i Google's API, at sætte en realtime forbindelse op. Koncepterne bag et realtime spil er, at man sætter et "rum" op, hvor man har spillerne der skal spille sammen. Et rum indeholder flere spillere. En spiller har mulighed for at invitere andre til rummet. Der er flere faser i livscyklussen for et realtime spil. 1. Sign-in fasen Dette er fasen hvor spillere skal logge ind på deres Google+ profiler. Ellers er det ikke muligt for andre spillere at kommunikere med dem. 2. Rum oprettelses fasen Dette er fasen hvor rummet bliver initialiseret. Her kan kun spillere, der er logget ind på deres Google+ profil komme ind. Det er muligt for spillere at komme ind i et rum direkte, ved at acceptere en invitation. Der er også mulighed for at bruge en funktion kaldet "auto match". Den gør det muligt at komme ind i et vilkårligt venteværelse. 3. Acceptering af invitations fasen Spilleren der har inviteret til spillet, bliver automatisk tilmeldt rummet. Dem der er inviteret til spillet vil få en notifikation. Hvis man ikke er inde i spillet, vil man få en push-meddelelse, og dem der er inde i spillet, vil få invitationen præsenteret. 4. Forbindelsesfasen Denne fase starter idet spillerne kommer ind i rummet. Play game service sørger for at alle spillerne har en peer-to-peer forbindelse med alle andre i rummet. Hvis en spiller ikke kan få denne forbindelse, vil vedkommende blive smidt ud af rummet. Det er op til applikationen at håndtere dette problem. At der er et underlæggende peer-to-peer netværk, gør det muligt at gøre en af spillerne til host, der kan have flere rettigheder til spillet end andre. 5. Spille fasen Når det krævede antal spillere er forbundet til rummet, kan spillet begynde. Når spillet er i gang, kan spillere forlade rummet, men de vil ikke være i stand til at kunne forbinde igen. Ingen kan forbinde til spillet for at optage en tom plads. Når man er færdig med spillet, er det muligt at spille igen med de samme personer. Det kræver ikke at man lukker rummet ned, for at kunne genoptage et spil. 6. Nedlukning af rum Det er applikationens ansvar at smide spillerne ud af rummet, når spillet er ovre. Når der ikke er nogle spillere tilbage i rummet, vil sessionen ses som værende slut. Side 23 af 53

24 Sprint 0 Sprint 0 er hvor forarbejdet til udviklingen laves. Målet med dette sprint er, at udvikle user stories der skal danne basis for, hvad der skal arbejdes med. Dechdroid har afsat en dag, til at komme derud, hvor der skal brainstormes over mulige arbejdsopgaver. Når dette sprint er færdigt, skulle alt være tilrettelagt til, at gruppen kan begynde at udvikle i sprint 1. Første Scrum meeting Dækker over perioden: 11/11-15/11 Det første Scrum meeting gruppen havde, var som forventet ikke givende i forhold til, hvad der forventes at komme ud af de fremtidige møder. Til dette møde blev der snakket omkring den informationssøgning, der var foregået den første uges tid. Det var afklaret, hvad Google Play servicen kunne gøre for projektet, og hvad gruppen selv skulle sørge for som udviklere. Med denne information kan en Backlog fremstilles, og user stories kan også opstilles, eftersom Google Play Game Service giver en forståelse for, hvad der som minimum forventes af et spil med multiplayer funktioner. Ugens arbejde har også dannet rammerne for, hvordan projektet skal styres. Gruppen kom frem til at den første uge har haft fornuftige fremskridt, og snart vil det være muligt at planlægge selve udviklingen af produktet, samt disponere tid til møder, og revision af rapport og kode. Brainstorm Kort tid efter begyndelsen på projektet, blev der brainstormet. Idéen med dette var, at se om der ville komme inputs, der kunne præge projektet i en bedre retning. Brainstormen foregik sammen med Dechdroid. Dechdroid var oplyste om, at det hovedsageligt var multiplayer, der ville blive arbejdet med i dette projekt, så det var i den del brainstormen skulle tage udgangspunkt. Der kom en masse forslag frem, dog var det ikke alle, der var kode relateret, eller som havde noget at gøre med, hvad formålet med dette projekt omhandler. Mange af idéerne gik ud på at gøre spillet attraktivt for brugeren, såsom at man kan vælge forskellige skins og muligheder for æstetiske ændringer på komponenter på brugergrænsefladen. Andre idéer var eksempelvis lyde og spilfigurer med andre egenskaber end de 3 standard figurer. Ændringer af disse ledte til, at der blev enighed om, at noget af koden skulle omskrives. Som koden er fra start, er det ikke muligt at have flere forskellige typer af brikker, eller muligt at ændre på brikkernes udseende. Dog forventes det at logikken bag det, kan løses med simple objektorienterede praktikker. Andre ønsker, som eksempelvis det at afholde en turnering, kommer til at afhænge af, hvilke muligheder der er på den server, der skal afvikle spillene. Viser det sig, at serveren ikke understøtter noget, der kan bruges til at opsætte en online turnering, skal der undersøges alternativer. At lave turneringer anses dog for at være en stor opgave, da gruppen mener det vil tage for lang tid at tillære sig de nødvendige teknikker. Derudover vil testfasen ikke blive god, det vil kræve flere enheder at fuldføre en test. Side 24 af 53

25 Der blev derudover sat krav til funktionerne af online oplevelsen, hvilket giver et billede af, hvilke løsninger der skal bruges. For eksempel havde Dechdroid et klart billede af, hvordan de forventede processen bag at sætte et spil op med en ven, skulle foregå. De ønskede også, at brugerne af applikationen skulle have noget at blære sig med i spillet, for at vise hvor gode de er til det. De mener, at dette giver spillet længere levetid. Det var en øvelse, der ikke tog meget tid, og som har hjulpet arbejdet på vej. Selvom ikke alle forslagene vedrørte projektet, var de alligevel gavnlige, da det kan ses, hvad der skal være med i betragtningen. Resultaterne fra denne brainstorm giver i sidste ende anledning til, hvilke områder der vil blive arbejdet med i dette projekt. Senere i rapporten vil det fremgå, hvad der kom ud af brainstormen. (Se bilag 1, på cd'en, for at se billederne) User stories For at finde ud af hvad man skal beskæftige sig med i sprint, laver man user stories. User stories beskriver noget, der ønskes tilføjet til produktet. I dette tilfælde er det funktioner, der skal tilføjes til et program. User stories danner basis for de tasks, der skal arbejdes med. Derfor gælder det om at være omhyggelig med at nedbryde user stories, så hver enkelt task er nem at forstå. Følgende user stories er resultatet af et møde med Dechdroid, omkring de ønsker de havde til spillet. Både ønsker der vedrører multiplayer funktionerne, samt andre ønsker de mener, kan forbedre spiloplevelsen for den normale bruger. As a user, I would like to play the game with my friends Opdeles i følgende tasks: Make it possible to see online friends Make it possible to invite online friends Make it possible to respond to an invitation As a user, i would like to play against random people on the internet Opdeles i følgende tasks: Make it possible to see a list of random online people. Make it possible to invite the random person (ignore if the two aren't friends) As a User, I would like to change the difficulty of the computer opponent Opdeles i følgende tasks: Make it possible to change difficulty from the main menu. When a user has won a given number of times, the game should suggest a higher level of difficulty for the player. Side 25 af 53

26 As a User, i would like to change different elements of the game Opdeles i følgende tasks: Make it possible to change skins of the pawns in the game. Make it possible to change the look of the buildings of the game. Make it possible to change sounds of the pawns in the game. Make it possible to change equipment of pawns. As a User i would like to see my game statistics on a leaderboard that compares me to other players. Opdeles i følgende tasks: Create a leaderboard Make it possible to see my own placement on the leaderboard Make it possible to sort the leaderboard so a user can compare to friends only Define which statistics that are relevant to show on the leaderboard. Make it possible to list the leaderboard on different parameters (fx highest pointscore first, and lowest as the last). As a user, i would like to get points for my actions in the game Opdeles i følgende tasks: define which actions a user should get points for. Define which actions should reduce a users score. Make the score visible for the player Asa User i would like to play with people who are using mobiles and tablets. Opdeles i følgende tasks: Test on various android devices that the program still behaves as it should. Find out which system requirements is needed to support the game. As a user, i would like to have a real time multiplayer function. Opdeles i følgende tasks: Establish a connection suited for a constant connection between the players Make warnings for the player if he tries to disconnect from the game Somehow, give the player information about how real time gameplay has other rules about connection As a user i would like to have a turn based multiplayer gameplay (disconnects allowed) Opdeles i følgende tasks: Make it possible to resume a game if a player disconnects. Make notifications for the player when an opponent has made a move. Make it possible to have more than 1 game in progress As a user i would like to change the view of the game as i please (horizontal and vertical) Opdeles i følgende tasks: Make it possible to change the layout depending how the user holds his device. Create new assets so that when the stage is turned by 90 degrees, the stage looks like before. As a user i would like to have music in the game. Opdeles i følgende tasks: Give the game standard sounds, fx menu music and game music. Add sound effects to actions in the game. Side 26 af 53

27 As a user i want a ranking system, to show how much i play the game. Opdeles i følgende tasks: Make it possible to see which rank players are in. Make a ranking system, deffining when to raise in rank. Make it possible to use each players rank, to filter search when looking for an online opponent. Planlægning af test For at teste programmet bruger gruppen 2 forskellige Android tablets. Den ene er en gammel Samsung Galaxy 10.1 tablet, den anden er en Motorola Xoom. Motorola'en er en nyere model end Samsung'en, de har samme skærmstørrelse, og er opdateret til nyeste version af Android. Fordelen ved at bruge 2 forskellige tablets er, at det er muligt at se om applikationen fungerer på flere enheder. Derudover forventes det at der er funktionalitet, der er fornuftigt at teste manuelt. Her tænkes der på, når det skal testes om det er muligt praktisk at spille imod hinanden, og kommunikere på de ønskede måder. Det vælges at der ikke vil blive taget brug af test først princippet i første omgang. Dette skyldes at gruppen ikke tror, det kode der implementeres i løbet af projektet er egnet til test først. Eftersom det er Google's egen API og Server der anvendes. De funktioner som Google gør tilgængelige, forventes at fungere efter hensigten, og det skal overvejes, om det er noget, der er værd at teste. Andet Scrum meeting 25/11 blev møde nummer 2 med Dechdroid afholdt. Her blev der fremvist den funktionalitet, der skulle gøre det muligt for spillere at invitere andre til at spille. Der var nogle kommentarer til dette, eftersom der var ønsker om, at den samme funktionalitet skulle være tilgængelig, når man var inde i et spil. På den måde kan en spiller, imens man sidder i et spil og har lavet et træk, invitere andre til et spil, man kan tage senere, eller imens man venter på sin modspillers træk. Derefter gik snakken om spillevaner hos kønnene, der tidligere er blevet undersøgt i projektet. Kvinder spiller i cirka 10 min ad gangen (snacker spil), hvor mænd har større tendens til at spille i længere tid per gang. Det menes derfor at denne feature hjælper på de mandlige spillere med at nyde deres spil i længere tid, hvis det lykkes for dem at få flere spil op at køre, som de kan skifte imellem, når de ønsker. Derefter blev der snakket om, at der ud fra de undersøgelser der var gjort, var blevet klart at Dechdroid ikke ville have brug for at have en server til at stå. Alt serverfunktionalitet kan afvikles på Googles servere. Derefter blev der snakket om gruppens sprint. Gruppen var interesseret i, om Dechdroid mente, at de tasks der var lavet, tilsammen danner grundlag for en god oplevelse af spillets online muligheder. Eftersom Dechdroid selv har været med til at udvinde User stories mente de ikke, der var nogle mangler og heller ingen nye ønsker. Side 27 af 53

28 Sprint 1 Formålet med sprint 1 var at få invitationssystemet til at fungere. Derudover var der lagt nogle tasks ind omkring lyd, som blev betragtet som slack-tasks. Ved at kigge på Google's egne modeller for hvordan deres service skal bruges, er det tydeligt, at det er invitationssystemet, der skal fungere som det første. Der forventes at være udfordringer i dette, da der skal lægges kræfter i at sætte sig ind i, hvordan servicen skal bruges. Google har dog egne sider, hvor man kan læse om principperne. Arbejdsfordelingen i sprint 1 var således, at en sad og programmerede, imens en anden prøvede at læse fremad. Gruppen mente dette var en fordel, da det ville give mulighed for at fange eventuelle problemer i opløbet. Pair programming blev også anvendt, eftersom det at bruge denne service var nyt, og gruppen mente derfor, det ville være væsentligt at begge gruppemedlemmer var med på hvordan koden var opbygget. Der blev arbejdet i små steps, som det agile lægger op til, for at undgå at gå i gang med for store opgaver med nye problemer. Første skridt i sprintet var, at gøre det muligt at se sine Google+ kontaktpersoner inde i spillet. Det skulle være synligt, hvilke kontaktpersoner der er online, så man kan se, hvem man kan forvente at få et svar fra. Derefter skulle det være muligt at sende en invitation til en ven. Beskeden skal sendes til vennen, igennem Google Play, da Google kan pushe disse. På den måde bliver invitationen synlig med det samme, og derved opnås der samme funktionalitet, som man ser hos så mange andre applikationer. En anden ting der er planlagt i dette sprint, er at der skal sættes lyde ind i spillet. Dette anses som slack-tasks. Gruppen mener det ville være mindre smart at begynde på større opgaver, så derfor vil der ikke blive taget andre opgaver ind fra sprints. Kvaliteten af dette sprint skal afgøres i, hvor nemt det er at invitere en anden til spillet. Det skal gennemtestes, så der er taget forbehold for forskellige fejlscenarier, så det ikke crasher. Man må antage, at hvis spillet skal ud på et applikationsmarked, er der mange millioner af brugere der bruger, deres mobile enheder på forskellige måder, og derfor er det vigtigt. Udvikling under sprint 1 Udviklingen under dette forløb er gået som det var forventet. Google's guides har været meget nyttige, og det har været simpelt at få implementeret. De første par dage gik med at finde ud af hvilke a Google's guides der skulle bruges, hvordan mindre dele af programmet skal udvides, så de nødvendige af Google's funktioner kan tages i brug. De forskellige steps der har været at finde i guides, har været med til at udgøre, hvilke tasks der skal laves i sprints. Der er også beskrivelser til, hvordan man undgår diverse fejl, såsom at kalde ikke eksisterende rooms, og andre typiske fejl der kan opstå. Et mindre problem der opstod under udviklingen var, at guiden på intet tidspunkt nævnte, at der var behov for at lave et interface, hvis man ville have mulighed for at anvende API'en. Denne selvfølge var der ikke blevet tænkt videre over, og der gik nogle timer på at indse problemet. Løsningen blev først fundet efter at have fundet eksempler på nettet. Side 28 af 53

29 Gruppen havde forventet der ville være problemer med at logge ind på Google via spillet, da undersøgelser på nettet har vist, at et af de mest omtalte problemområder ved anvendelse af servicen, omhandler dette. Dog var denne tasks den første der blev løst. Nu er det muligt at bruge flere tjenester fra Google. Herefter blev der udviklet på at gøre det muligt for brugeren at se sine online venner i spillet. Dette var ikke anset for at være et problem, nu hvor brugeren kunne komme på Google, og ved at bruge guiden. Da dette så var klaret, var næste skridt at få sendt en invitation til en ven. Dette krævede ikke meget, ud over der skulle laves en knap i spillet, der kunne sende brugeren til en screen Google har lavet, der viser hvem man har fået invitationer fra. Denne screen havde gruppen ikke forventet værende tilgængelig, og den fjerner arbejdet i at selv skulle lave en skærm der kunne det samme. Efter at være i mål med disse tasks, var der kun slack tasks tilbage. Disse gik ud på at implementere lyde i spillet, hvilket var et ønske fra Dechdroid. Lydene var udleveret af virksomheden, og var hurtigt inde i spillet. Den sidste tid blev derefter brugt på at kigge på internettet efter, hvordan man laver en rigtig AI, og der var en simpel måde at komme i gang med dette. Det viser sig dog, at der ikke er nogen "rigtig" måde at gøre det på, og at når spilprogrammører skal i gang med at lave en ny AI, sker det typisk ved, at de skal starte fra bunden, og kun meget lidt kan genanvendes. Der blev læst på forskellige hjemmesider omkring AI, for at finde informationer på forskellige teknikker indenfor emnet. Evaluering af sprint 1 Målet ved dette sprint blev nået. Der var udfordring ved at lære at bruge API'en ordentligt, men da der nu er gået tid med at arbejde med denne, menes det at de følgende tasks der er meget API afhængige vil være nemmere at komme igennem. Slack-tasks blev også nået. Det menes, at det er nødvendigt at ændre på velocity, da det estimeres at næste sprint vil tage længere tid, og at det dette sprint 1, ikke har haft særlig høj velocity. De tilhørende tasks til sprint 2 er estimeret til at være mere komplekse end fra sprint 1, men da der er opnået erfaring med Google's API, forventes det at det vil passe fint. Dette betyder så, at det stadig vil være muligt at få skrevet rapport imellem kodningen. Arbejdet fungerer godt på denne måde, og derfor vil det tilstræbes at kunne gøre i næste sprint. Burndown kortet viser, at det hele gik som det burde. Dog kan det ses, at målet først blev nået til deadlinen. Det forventes at de næste sprint vil være færdige i god tid før deadlinen, da der er opnået større erfaring med API'en. Side 29 af 53

30 På denne graf kan man se hvordan vores burndown ser ud, den blå linje er den estimeret tid, og den røde er den faktiske tid. Som man kan se, har gruppen været med fra starten, og nåede i mål til sidst. På x-aksen ser man antal dage, og op ad y-aksen er resterende timer Ideal Aktuel Første uges sprint er på baggrund af dette, gået efter forventningerne. Der har været behov for at blive arbejdet på projektledelsen, da gruppen blev klar over, at der muligvis var behov for at omstrukturere projektplanen, hvis AI skulle laves. Dette har taget noget tid, og der har været behov for at diskutere, hvordan alt dette skal behandles. Under skriveblokader er tiden blevet brugt på at undersøge, hvilke muligheder der er for at lave en avanceret AI, for at være i forkøbet. Der blev ikke kigget på noget teknisk i denne omgang, da det viste sig at være et omfattende emne. Brugere af spillet er nu i stand til at invitere en af sine bekendtskaber til spillet. Google har ansvaret for, at der bliver pushet en besked ned til modtageren. Modtageren kunne dog ikke bruge invitationen til så meget, da spillet ville crashe, hvis man accepterede invitationen. Sprint 2 har fokus på at løse dette problem. Resultatet af dette har været et sprint, hvor alt er nået, tempoet har været fornuftigt, og der har ikke været for meget pres på. Derudover er der blevet taget forbehold for, hvad der skal gøres, hvis gruppen løber ind i et problem, der ikke kan løses, eller hvis multiplayer funktionerne er lavet for hurtigt. Scrum meeting 3 Til dette møde, der blev afholdt den 02/12, blev der præsenteret, hvad der var nået i sprint 1. Dechdroid var tilfredse med funktionaliteten til at invitere venner til spillet. Eftersom de ingen rettelser havde til det, der var blevet udviklet, blev der ikke oprettet nye tasks til backloggen. Bagefter blev de introduceret i de nye planer omkring inddragelsen af en forbedret AI som fokusområde. Dechdroid havde gerne set, at det var spillets design der ville blive arbejdet med, men de var forståelige overfor at det var bedre at lave noget teknisk udfordrende i stedet, da noget af det projektet har manglet er udvikling af egen funktionalitet. Side 30 af 53

31 Sprint 2 Formålet ved sprint 2 er, at der skal laves funktionalitet, der kan starte et spil op med 2 spillere, og de skal have mulighed for at kommunikere sammen under spillet. Derudover skal brugeren informeres om, hvilke regler der er, når man spiller real-time udgaven af spillet. Derfor skal brugeren få en advarsel hver gang vedkommende prøver at gå ud af spillet. Der vil ikke blive arbejdet med, hvad man kan gøre, hvis en bruger af en eller anden grund mister forbindelsen til spillet. Noget der skal undersøges i dette sprint er, hvordan man sender information til modspilleren omkring sine træk. Sidste sprint fungerede fint, og som skrevet før vil praktikkerne, der er blevet brugt i forrige sprint, blive genanvendt her, i håb om at det igen bliver en succes. Gruppen er klar over at dette sprint bliver sværere teknisk end forrige, og der er derfor enighed om, at der skal forventes at være dage, hvor der bliver arbejdet længere end andre, hvis der opstår et problem. Grunden til at gruppen estimerer disse opgaver til at være svære teknisk er, at der herfra ikke er meget funktionalitet tilbage, Google kan bidrage med. Så snart spillet er i gang skal gruppen selv lave funktionaliteten til spillets drift. Når spillet er slut, kan Google igen komme ind og hjælpe. For hvis man som spiller gerne vil have et spil mere mod sit bekendtskab, er det muligt igennem Google at genbruge det room som man er i, og genstarte det. På den måde skal man ikke igennem invitationsprocessen igen. Noget andet, der skal laves i dette sprint, er muligheden for at invitere tilfældige personer til et spil. Idéen bag dette er, at man bliver hooked op sammen med en anden, der også søger på en tilfældig person, og derved undgår ventetiden på, at en af sine bekendtskaber accepterer invitationen. Personerne, man finder igennem denne funktionalitet, er ikke nødvendigvis en, man er bekendt med i forvejen. Gruppen er blevet enige om, at der skal skrives omkring sprint 1 i dette sprint i fritiden. Der er intet krav om, at det skal være færdigt, der skal blot skrives kort om processen, så det ikke bliver glemt. Det er også aftalt, at der i fritiden skal kigges yderligere på, hvordan en fornuftig AI til spil skal laves. Det forventes, at der findes lektioner omkring emnet på youtube.com, eller projekter man kan downloade og lade sig inspirere af. Det forventes stadig, at der er gode chancer for, at multiplayer delen af spillet til sidst bliver hurtigt lavet færdigt, og derfor er det nødvendigt at se på, om der er flere emner, der kan udvikles på. Sprintet bliver hårdere end det første, men der satses på at estimaterne holder, og resultatet af planlægningen vil være fornuftigt. Succeskriteriet for dette sprint er, at der skal kunne startes et spil op med en ven eller en tilfældig, og kan spille det færdigt uden problemer. Hvis der ikke er tid til at kigge på at få en chat til at fungere, er det fint, da det ikke prioriteres højt i forhold til de andre opgaver i sprintet. Side 31 af 53

32 Udvikling under sprint 2 Den første task der bliver taget hul på her er, at der skal laves en forbindelse imellem 2 spillere. Google's guides viser også, hvordan man går til værk. Når forbindelsen er oprettet og brugerne er sammenbundet i samme room, vil spillet kunne gå i gang. Koden er nu så langt, at det er muligt at sende en invitation til en anden person, og det er muligt at svare på en invitation. Man kan enten vælge at acceptere eller afvise invitationen. Accepterer modtageren invitationen, bliver de sat i samme room, og spillet starter op. Spillet crasher, når det skal til at starte op, men det vil der blive arbejdet videre med i tasken, der omhandler dette. For ikke at gå i gang med en for stor bid, blev der forsøgt at sende beskeder imellem de 2 klienter når de er kommet i samme room. Dette skal anses som værende et forstadie til, hvad der kan blive en chat senere i spillet, så spillerne kan snakke in-game. Det er muligt at sende en besked imellem de 2 brugere, men lige nu fungerer det kun, så længe selve spillet ikke starter op. Der bliver nu arbejdet på at få styr på at få selve spillet startet op. Som udgangspunkt er der blevet debugget, og det viser sig at fejlen skyldes shaders. Eftersom libgdx fører sig selv som værende et framework, der er uafhængigt af platform, burde der ikke være noget galt med at bruge libgdx til at udvikle spillet. Den store undren går på, hvorfor der er problemer med shaders så snart det skal køre over Google Play Game Service. Den første mistanke går på, det er noget, der er overset. Der bliver brugt meget tid på at undersøge fejlen. Første var at søge på nettet efter folk med lignende problemer. Der var ikke meget held med at finde eksempler, der har samme problem. Der blev også søgt på den givne exception for at finde ud af, hvad den kan skyldes. Heller ikke det kom med en løsning. Evaluering af sprint 2 Sprintet blev ikke fuldendt. Gruppen løb ind i problemer med Google Play, da selve spillet skulle til at starte efter et room var oprettet. Programmet kan godt modtage beskeder ved modtageren efter de er kommet i samme room, hvor arkitekturen er gået over til Peer-To-Peer, og serveren er ikke længere indblandet. Hvad fejlen skyldes vides ikke præcist på nuværende tidspunkt, gruppen er bare klar over, at der er problemer med shaders, da det er, hvad der kan læses på exceptions i loggen. Eftersom der ikke kunne startes et spil, blev der heller ikke arbejdet med at lave advarsler til brugeren, hvis vedkommende ville prøve at forlade spillet. Det gik udmærket de første dage af sprintet, men da de sidste dage nærmede sig, begyndte fejlen at optræde. Der blev brugt meget tid på at løse dette problem men uden held. Igen blev pair programming brugt, dels fordi det var vigtigt kode der skulle skrives, og fordi der var behov for at begge kiggede på koden, for at løse fejlen. Dog var der perioder, hvor det ikke var nødvendigt, og i disse perioder blev tiden blandt andet brugt på at læse omkring AI og på at få skrevet rapport. Efter at have brugt mange mandetimer på at løse problemet uden held, besluttede gruppen sig for at lave om i planlægningen. Eftersom gruppen ikke mente, der var meget progression i at prøve at afhjælpe fejlen, blev multiplayer prioriteret ned, og AI blev taget op. Der var enighed om, at det ville være mest effektivt at lave på AI i stedet for multiplayer, hvor der var stor risiko for ikke at komme videre. Velocity var god indtil fejlen opstod, og burndown chartet så også fornuftigt ud. Derfor er der grund til at tro, at hvis fejlen ikke var opstået, ville sprintet være vellykket. Gruppen har valgt, ikke at fortsætte med Side 32 af 53

33 velocity, da der er frygt for at det vil være alt for misvisende, eftersom emnet er nyt. Det er udregnet, men det er ikke noget gruppen vil bruge til at styre processen med. På denne graf kan man se hvordan burndown grafen ser ud for sprint 2. Som man kan se, er den røde langt over den blå linje, hvilket betyder, at gruppen har været bagefter fra start, og ikke nåede i mål til sidst, dette skyldes at gruppen havde problemer med at få multiplayer delen til at virke Ideal Aktuel Der blev brugt tid på at gøre klar til AI, som noget af det sidste af sprintet. Der blev kigget på forskellige muligheder som for eksempel at bruge utility funktioner, genetiske algoritmer, neurale netværk og Q- learning. Her blev der blot kigget på, hvordan de virker, og der blev taget stilling til, om det var noget som gruppen ville arbejde med, da sværhedsgraden er på et højt niveau. Eftersom det blev besluttet, at der skulle fokuseres på AI i stedet for, skulle det afgøres om projektet skulle bestå af to delprojekter, eller et projekt med to emner. Valget gik på at det ikke skulle være to projekter, da der var tvivl om, hvorvidt det ville lykkes gruppen at komme videre med multiplayer funktionerne. Det er i stedet for valgt, at AI vil blive hovedemnet fremover, og multiplayer vil være noget der køre på sidelinjen. Sker der et gennembrud, kan multiplayer blive taget op igen for at forsøge at få noget, der fungerer efter hensigten. Dette er ikke noget Scrum anbefaler, men gruppen håber på, at det er et fornuftigt valg. Der skal laves om på backloggen, da prioriteter skal laves om, og der skal også laves uddybende tasks til AI. Efter at have snakket med Dechdroid om skiftet i fokusområdet, blev der aftalt at der ikke skulle bruges tid på virksomhedskontakt længere. Dette skyldes at AI ikke er et område, hvor Dechdroid kan komme med inputs, da det ikke er noget de har viden indenfor, og derved ikke ved præcist hvad de vil have. Dette vil have indflydelse på kvaliteten af produktet, eftersom der ikke længere et sæt af krav, der skal overholdes. Dog mener gruppen, det er nødvendigt, hvis tiden skal være til at lære teorien bag AI. Fremover skal der altså derfor bruges mere tid til at refactor koden, hvis der skal opnås kvalitetssikring. Side 33 af 53

34 Risiko analyse for AI Efter et møde med vejlederen, har gruppen fået øjnene op for et muligt problem. Efter at have arbejdet med Google Play Game Service, er det blevet klart, at der ikke behøves meget nyt funktionalitet, da Google's API'er giver meget. Derfor er der chance for at multiplayer funktionerne bliver lavet for hurtigt, eller ikke har nok teknik i sig, så der er behov for at projektet skal fokusere på mere end kun multiplayer. Dette afsnit vil beskrive hvordan det vil håndteres. Det er blevet valgt, at det skal være AI udviklingen, der skal kigges nærmere på, da det er et emne, der kræver udvikling, og i følge vejlederen, kan det endda være for kompliceret til at være muligt at få noget fornuftigt ud af at arbejde på. For at eliminere usikkerheden om det er for kompliceret eller for tidskrævende, skal der afsættes tid til at kigge på, om det at lave en AI er noget der kan gavne projektet. Eftersom gruppen er på to mand, er det et stort tab i arbejdskraft hvis blot den ene skal bruge tid på at sætte sig ind i, hvordan det skal udvikles. Derfor er det aftalt i gruppen, at det er noget, der skal arbejdes på udenfor normale arbejdstider, for at minimere tabet. Vejlederen fremlagde nogle muligheder for, hvordan en AI kan laves. Nogle af mulighederne er komplekse, men giver en velfungerende AI, mens andre er nemmere at anvende, men muligvis er svære at få til at fungere. Ud fra denne kilde 13, er der ikke en "universel" måde at lave AI på, da formålet er ekstremt afgørende for, hvordan den skal laves. Det er derfor sjældent at en AI kan genbruges. Dette kan tyde på, der er mange parametre, man skal have styr på. Hvis projektet går i retning af, at der skal laves en AI, vil der blive taget stilling til følgende: Efterfølgende sprints. Hvilke user stories skal tages ud for at gøre plads til AI udviklingen? Skal der bruges nye praktikker for at komme i mål? Det forventes at nye udfordringer kommer til, da det er en ny opgave. Skal tidsplanen ændres? Det er muligt, at det bliver nødvendigt at lave sprint ene længere, da det stadig er usikkert, hvor meget arbejde, der kræves for at kunne levere noget funktionsdygtigt. Det kan medføre at deadlinen gruppen havde sat sig for, bliver rykket. Da dette vil resultere i at projektet omhandler 2 forskellige emner, er det en mulighed at gøre det således, at dele af AI udviklingen skal betragtes som et parallelt projekt. Konsekvensen af inddragelse af at lave en kompleks AI er, at gruppen ikke længere vil have god tid til at snakke sammen, da arbejdsområderne er forskellige. Det er derfor vigtigt at planlægge arbejdsfordelingen grundigt, så tidsplanen ikke skrider. Side 34 af 53

35 Undersøgelse af muligheder for AI En mulighed er at anvende state machines. Her bliver udfordringen, at der skal implementeres hvordan AI'en skal opføre sig, altså hvornår skal den vælge at spille defensivt, offensivt eller lave et træk der gavner på længere sigt. En udfordring kan være, at gøre den minimalt statisk. Hvis ikke det er noget der fører nogle veje, vil der blive undersøgt på andre eksempler af AI's. Da det er en AI til et spil, forventes det, at det er muligt at finde eksempler på nettet og andre steder. Det håbes så at eksemplerne kan give inspiration til, hvordan det kan gøres. Genetiske algoritmer Det er en mulighed at bruge genetiske algoritmer 14. En genetisk algoritme tager udgangspunkt i en samling af individer, der hver repræsenterer en løsning for et givent problem. Algoritmen finder ud af, hvilke løsninger der er de bedste og parrer dem. Når løsninger bliver parret, sker der en cross-over, samt en mutation. Derved er der lavet en ny generation af løsninger. Denne proces gentages indtil et stopkriterium (termination condition) er nået. Disse kriterier er typisk: Når en løsning lever op til minimumsbetingelserne Hvis et bestemt antal af generationer er kørt igennem Når tiden det tager at komme frem til et resultat overskrider en grænse Når algoritmen ikke længere kan beregne bedre resultater Hver løsning har et sæt attributter, der kan ændres på. Ofte bliver løsningerne repræsenteret binært, som strenge af 0 og 1, men andre kodninger af dette er også tilladt. En strategi i genetiske algoritmer, gør det muligt at overføre de bedre løsninger til næste generation uændret. Denne strategi kaldes Elitist selection, I genetiske algoritmer er Cross-over en operator, der varierer programmeringen af løsninger fra en generation til en anden. Det er en analogi fra den biologiske verden, der beskriver de beslutninger der bliver taget, når 2 forældreceller skal lave en ny (et barn). Cross-over har flere teknikker til at fremstille en ny generation af løsninger. One-point crossover er en teknik, hvor der på begge forældrenes strenge er valgt et punkt. Alt data efter dette punkt er byttet imellem begge individer, og resultatet af dette er børn. Side 35 af 53

36 Two-point crossover er en lignende teknik, hvor der bliver anvendt 2 punkter i stedet. Hver gang der krydses et punkt, byttes data imellem forældrene. Ønskes mere variation, kan der altid indsættes flere punkter. Fremgangsmåden vil være den samme. Cut and splice er en fremgangsmåde der resulterer i forskellige længder af strenge hos børnene. Dette skyldes at hver forælder har crossover punkter sat forskellige steder på strengene. Dette tilbyder mere variation. De samme teknikker bliver brugt i en genetisk algoritme, når næste generation af løsninger skal produceres. Et problem med genetiske algoritmer er, at de ikke klarer sig godt, når det begynder at blive komplekst. Når antallet af individer der underlægges mutationer er højt, er der typisk en eksponentiel forøgelse af elementer, der skal søges igennem. Ifølge kilden betyder det, at genetiske algoritmer ikke er velegnede til at designe med. Derudover er den bedste løsning altid fundet ud fra at sammenligne andre løsninger. Genetiske algoritmer har tendens til at gå efter lokale optima, frem for globale optima. Dette skyldes at genetiske algoritmer ikke ved, hvordan de skal se bort fra den umiddelbart bedste løsning, for at åbne et bedre resultat på længere sigt. 15 Genetiske algoritmer har den fordel, at de implementeres som et "lag" ovenpå AI'en. Denne teknologi kan kun bruges til, at forbedre AI'en, og ikke til at udvikle en AI med. Denne kilde 16 sammenligner Genetiske algoritmer, Q-learning og neurale netværk. Forfatteren skriver, at den genetiske algoritme han har lavet er bedst til hans formål, men han er overbevist om, at et neuralt netværk kan laves til at være endnu bedre, og at Q-learning passede mindre godt til hans formål, da det krævede meget finpudsning. Side 36 af 53

37 Utility funktioner I stedet for at man definerer states, som en AI kan være i, hvor man skifter og reagerer ud fra "triggers", kan man bruge utility funktioner. Disse gør det muligt for individer at måle på handlinger, der er tilgængelige i det miljø de er i. En ligning der beregner hvor stort et udbytte (utility) en given handling vil give, bliver brugt til at vælge, hvad NPC'en(Non-Player-Character) skal gøre. Et eksempel givet fra kilden: en NPC i et skydespil har 100% af sin ammunition tilbage. Han har mulighed for at samle ammunition op fra hvor han står. Med en utility funktion kan NPC'en vide, at det ikke giver nogen fordel for ham at samle ammunitionen op. Havde han derimod 50% ammunition ville han have en stor fordel ved at samle det op. Dette kan laves som en lineær funktion, men hvis man ønsker variation, kan man bruge andre funktioner. Det er funktionerne, der definerer hvornår utility skal være højt og lavt. Derved er det muligt at lave en NPC, der ikke tænker meget på at samle ammunition op ved 90%, 80% og 70%, men har man mindre, vil grafen lave udsving, og utility vil hurtigt blive højt. Det er også muligt at lave en funktion der er tilsvarende en trigger, der reagerer på en Boolean. Funktionen kan hedde: If x > 0.5 then y = 1, else y = 0. Det er også muligt at sætte flere "steps" ind, da utility ikke nødvendigvis behøver at gå imellem 0% og 100%. På denne måde kan andre utilities stadig blive valgt. Det forventes at denne type vil blive anvendt meget i et spil som Ancient Secret, eftersom der er flere situationer hvor et given træk er det eneste logiske. Derudover kan disse også være med til at vælge, hvordan NPC'en skal opføre sig, alt efter hvor mange brikker der er tilbage. Alle funktioner kan bruges til utility funktioner. Dette giver mulighed for at lave enten komplicerede AI'er, eller nogle simple. Det kan selv bestemmes om AI'en skal være aggressiv eller defensiv. 17 Side 37 af 53

38 Neurale netværk Denne teknik simulerer, hvordan en menneskelig hjerne fungerer. Teknikken er i stand til at maskinlære, og genkende mønstre, og vurdere hvad en god beslutning er, på baggrund af erfaringer den tidligere har gjort sig. Der er flere måder at lave et neuralt netværk på, men der vil kun blive undersøgt på en måde. Som det ses på billedet, har man inputs, der sendes til stadiet "Hidden", hvor de forskellige inputs udgør forskellige kombinationer. Outputs vil være produktet af, hvad det neurale netværk har lært. De forskellige inputs har en vægt med, som bliver brugt til at beslutte, hvor god beslutningen er. 18 Tager man udgangspunkt i, at teknikken simulerer et biologisk netværk, kan man overveje hvor mange niveauer man ønsker af inputs. Dette giver mulighed for at manipulere meget med sit input. Beslutningen kan derved blive grundigt gennemtænkt, og hvis lavet rigtigt, vælge en fornuftig action. 19 Skal dette bruges i spillet, kan det allerede nu ses, det kræver at lære, hvordan man træner et kunstigt netværk. Derudover skal der besluttes, hvordan beslutningerne skal tages. Gruppen vil ikke vælge at gå videre med neurale netværk. Efter at have forsøgt at forstå, hvordan det bygges op, er gruppen blevet enig om at det er for kompliceret, og tidskrævende. Desuden mener gruppen at teknikken er alt for avanceret i forhold til problemstillingen. Der er derfor ikke blevet undersøgt mere på dette. Q-Learning En anden mulighed er at bruge Q-Learning, der er en anden læringsteknik. Ligesom utility funktioner er det en teknik der bruges til at vælge den bedste action, i en given MDP(Markov decision process). Det virker ved at lære en action-value function. Resultatet af at bruge Q-Learning er utilitien for en given action i et givent stadie. Styrken ved Q-Learning er, at det ikke behøver nogen model af programmets miljø, for at kunne sammenligne de utility funktioner. Denne teknik har vist sig værende i stand til at vælge de optimale beslutninger i ethvert givent MDP. Algoritmen bag teknikken består af en agent, states og et set af actions for hvert state. Hvert state giver agenten en belønning i form af et nummer, agentens mål er at maksimere dets totale værdi. Dette gøres ved Side 38 af 53

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

Hassansalem.dk/delpin User: admin Pass: admin BACKEND Hassansalem.dk/delpin User: admin Pass: admin BACKEND 1/10 Indledning Dette projekt er den afsluttende del af web udvikling studiet på Erhvervs Lillebælt 1. semester. Projektet er udarbejdet med Del-pin

Læs mere

App-strategi for Randers Kommune December 2012. Bilag 2: Procesvejledning for app-udvikling i Randers Kommune

App-strategi for Randers Kommune December 2012. Bilag 2: Procesvejledning for app-udvikling i Randers Kommune Bilag 2: Procesvejledning for app-udvikling i Randers Kommune Procesvejledningen har til formål, at skabe overblik over app-udviklingsprocessen, og skal sikre kvalitet og genkendelighed blandt apps ene

Læs mere

GUIDE TIL CLOUD DRIVE

GUIDE TIL CLOUD DRIVE GUIDE TIL CLOUD DRIVE Dette er en guide du kan anvende til nemt at komme effektivt i gang med at anvende Cloud Drive Indholdsfortegnelse 1. Tilgængelige Cloud Drive klienter 2. Guide til Windows klienten

Læs mere

App til indmelding af glemt check ud

App til indmelding af glemt check ud App koncept til indmelding af glemt check ud App til indmelding af glemt check ud 5. mar. 2015 Side 1 App koncept til indmelding af glemt check ud 1 Introduktion Flg. er en besvarelse til en idekonkurrence

Læs mere

10 gode grunde. - derfor skal du vælge Office365

10 gode grunde. - derfor skal du vælge Office365 10 gode grunde - derfor skal du vælge Office365 1. Bedre samarbejde på tværs af lokationer En stor del af arbejdsstyrken tilbringer i dag langt mere tid væk fra deres kontor end hidtil. Dine ansatte kan

Læs mere

INDHOLDSFORTEGNELSE. INDLEDNING... 7 Kristian Langborg-Hansen. KAPITEL ET... 9 I gang med App Inventor. KAPITEL TO...

INDHOLDSFORTEGNELSE. INDLEDNING... 7 Kristian Langborg-Hansen. KAPITEL ET... 9 I gang med App Inventor. KAPITEL TO... INDHOLDSFORTEGNELSE INDLEDNING... 7 Kristian Langborg-Hansen KAPITEL ET... 9 I gang med App Inventor Installation af App Inventor... 10 Trådløs installation... 11 Installation af emulator (Windows)...

Læs mere

IT opgave. Informationsteknologi B. Vejleder: Karl. Navn: Devran Kücükyildiz. Klasse: 2,4

IT opgave. Informationsteknologi B. Vejleder: Karl. Navn: Devran Kücükyildiz. Klasse: 2,4 IT opgave Informationsteknologi B Vejleder: Karl Navn: Devran Kücükyildiz Klasse: 2,4 Dato:03-03-2009 1 Indholdsfortegnelse 1. Indledning... 3 2. Planlægning... 3 Kommunikationsplanlægning... 3 Problemstillingen...

Læs mere

[A20] Kick off document and process description. 1 of 5

[A20] Kick off document and process description. 1 of 5 [A20] Kick off document and process description 1 of 5 kick off document Huge Lawn Projekt Kick-Off Alle projekter og ideer er forskellige. For at vi kan give et reelt bud på dit/jeres projekt eller idé

Læs mere

Studieordning del 3-2014

Studieordning del 3-2014 Studieordning del 3-2014 Valgfag Datamatiker AP Graduate in Computer Science Version 1.1 Revideret august 2014 Side 0 af 6 del 3 Valgfag 1. Valgfrie uddannelseselementer...2 2. Valgfaget Android...2 3.

Læs mere

Guide til din computer

Guide til din computer Guide til din computer Computerens anatomi forklaret på et nemt niveau Produkt fremstillet af Nicolas Corydon Petersen, & fra Roskilde Tekniske Gymnasium, kommunikation & IT, år 2014 klasse 1.2 12-03-2014.

Læs mere

Introduktion til projekter

Introduktion til projekter Introduktion til projekter v. 1.0.3 Introduktion I dette materiale ser vi overordnet på, hvad projekter egentlig er, hvordan de er skruet sammen og hvilke begreber, som relaterer sig til projekter. Vi

Læs mere

Læringsprogram. Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4

Læringsprogram. Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4 Læringsprogram Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4 R o s k i l d e T e k n i s k e G y m n a s i u m Indholdsfortegnelse FORMÅL...

Læs mere

Projektbeskrivelse. IT B og Programmering C. Klasse 3.4. Louis Drejer, Markus Duus og Mikkel Jensen. Fra

Projektbeskrivelse. IT B og Programmering C. Klasse 3.4. Louis Drejer, Markus Duus og Mikkel Jensen. Fra Projektbeskrivelse IT B og Programmering C Klasse 3.4 Louis Drejer, Markus Duus og Mikkel Jensen Fra 0 05 04 05 Analyse I dagens danmark spiller computeren kæmpe rolle. Man kan se på en statistik fra Gallup,

Læs mere

Indhold Login Beskeder Grupper Kalender Notifikationer Sikre filer Diverse

Indhold Login Beskeder Grupper Kalender Notifikationer Sikre filer Diverse Medarbejder FAQ Indhold Login... 3 + Hvor logger jeg ind på Aula?... 3 + Hvad, hvis jeg både er lærer og forælder til et barn?... 3 Beskeder... 3 + Hvor ser jeg sendte beskeder?... 3 + Hvordan tilføjer

Læs mere

Media College Aalborg Side 1 af 11

Media College Aalborg Side 1 af 11 Media College Aalborg Side 1 af 11 Indholdsfortegnelse Problemformulering... 3 Hvilket fjernsupport egner sig bedst af, eller Windows fjernskrivebord, når et firma skal supportere sine kunder?... 3 Hvorfor

Læs mere

Guide til projektledere: Succesfuld konceptudvikling, kommunikationsstrategi og eksekvering af dit projekt på BetterNow

Guide til projektledere: Succesfuld konceptudvikling, kommunikationsstrategi og eksekvering af dit projekt på BetterNow Guide til projektledere: Succesfuld konceptudvikling, kommunikationsstrategi og eksekvering af dit projekt på BetterNow version 1.0 maj 2012 Indholdsfortegnelse 1. Indledning... 3 2. Definer budskabet

Læs mere

ECdox som favorit. Indledning 1. Internet Explorer 2. Chrome 4. Safari 5. Favorit på mobile enheder 6 Android 6 IOS 7. ECdox på mobile enheder 7

ECdox som favorit. Indledning 1. Internet Explorer 2. Chrome 4. Safari 5. Favorit på mobile enheder 6 Android 6 IOS 7. ECdox på mobile enheder 7 ECdox som favorit Indledning 1 Internet Explorer 2 Chrome 4 Safari 5 Favorit på mobile enheder 6 Android 6 IOS 7 ECdox på mobile enheder 7 Indledning Dette dokument beskriver hvordan man opretter og arbejder

Læs mere

Du kan også bruge Dropbox sammen med din Iphone, Android telefon eller anden smartphone.

Du kan også bruge Dropbox sammen med din Iphone, Android telefon eller anden smartphone. Dropbox Introduktion til Dropbox Dropbox er en online tjeneste, hvor man ganske gratis kan få noget lagerplads til sine dokumenter, billeder og meget mere. Der er mange muligheder med Dropbox, som bliver

Læs mere

Råd til dig der overvejer 5digital timeregistrering

Råd til dig der overvejer 5digital timeregistrering Råd til dig der overvejer 5digital timeregistrering Introduktion Stifter og Direktør af IT-Effect Kim Friis giver 5 gode råd om, hvad man skal tænke over, når man overvejer, om ens virksomhed skal have

Læs mere

GUIDE TIL CLOUD DRIVE

GUIDE TIL CLOUD DRIVE GUIDE TIL CLOUD DRIVE Dette er en guide til, hvordan du effektivt kommer i gang med at bruge Cloud Drive Indholdsfortegnelse 1. Tilgængelige Cloud Drive-klienter 2. Guide til Windows-klienten 2.1. Installation

Læs mere

ROSKILDE TEKNISKE GYMNASIUM. Læringsprogram. Lommeregner

ROSKILDE TEKNISKE GYMNASIUM. Læringsprogram. Lommeregner ROSKILDE TEKNISKE GYMNASIUM Læringsprogram Lommeregner Programmering Malte Fibiger, Rasmus Ketelsen, Nicojal Jensen og Leon Bøgelund, Klasse 3.36 04-12-2012 Indholdsfortegnelse Indledende afsnit... 3 Problemformulering...

Læs mere

EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø

EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø EG Data Inform Byggebasen WCF og webservices Jens Karsø 10 Indholdsfortegnelse Byggebasen Services indledning... 2 Målsætning... 2 Valg af teknologier... 3 Kommunikationsmodel for byggebasen... 3 Services.byggebasen.dk...

Læs mere

Sikkerhed på smartphones og tablets

Sikkerhed på smartphones og tablets Sikkerhed på smartphones og tablets Foredrag og materiale: Allan Greve, AGR Consult Ældre Sagens IT-Temadag, distrikt 5 1 www.0055.dk Indhold Foredraget giver IT-kyndige et overblik over Principper for

Læs mere

Hvad gør en platform god?

Hvad gør en platform god? + + Hvad gør en platform god? Vores vision for Steam 1 At skabe værdi for spillere og udviklere Vi ønsker, at spillere oplever den bedst mulige version af et spil med det største sæt funktioner og tjenester.

Læs mere

Stream II Firmware. Brug af dette dokument:

Stream II Firmware. Brug af dette dokument: Stream II Firmware Dette dokument er oprettet og vedligeholdes af Instrulog A/S. Kopiering af tekster og passager skal ske efter skriftelig aftale. Yderligere information, besøg venligst www.instrulog.dk.

Læs mere

Strategi for brugerinvolvering

Strategi for brugerinvolvering Strategi for brugerinvolvering Vores Genbrugshjem Gruppe 7: Lasse Lund, Simone Drechsler, Louise Bossen og Kirstine Jacobsen Valg af TV-program og begrundelse Vores genbrugshjem på TV2, produceret af Nordisk

Læs mere

Behavior Driven Test and Development. ebay Classifieds

Behavior Driven Test and Development. ebay Classifieds Behavior Driven Test and Development ebay Classifieds Det kommer til at handle om User Stories agil udvikling Fokus på adfærd Gherkin syntaks Afgrænsning: Sælger ikke BDD Gør os ikke til eksperter i det

Læs mere

SmartFraming Et vindue til nationale sundhedssystemer. Version 3.0

SmartFraming Et vindue til nationale sundhedssystemer. Version 3.0 SmartFraming Et vindue til nationale sundhedssystemer Version 3.0 Infrastruktur i dagens sundheds IT Det sundhedsfaglige personale benytter sig i dag af en række forskellige systemer i forbindelse med

Læs mere

Overvågningskamera. ~Af Svend, Valdemar og Frederik~

Overvågningskamera. ~Af Svend, Valdemar og Frederik~ Lavet af Svend, Valdemar og Frederik 2.3 HTX - Roskilde Overvågningskamera ~Af Svend, Valdemar og Frederik~ I dette forløb har vi arbejdet med overvågningskameraer. Det handlede om at lære, hvordan et

Læs mere

CLOUD RECORD FAQ. HVILKE TV-BOKSE VIRKER DET PÅ? Cloud Record kan benyttes af kunder med 7410x, 7310, 7210, 7130 og 7120 TV-bokse.

CLOUD RECORD FAQ. HVILKE TV-BOKSE VIRKER DET PÅ? Cloud Record kan benyttes af kunder med 7410x, 7310, 7210, 7130 og 7120 TV-bokse. CLOUD RECORD FAQ HVAD ER CLOUD RECORD? Nu tilbyder vi, at du kan gemme programmer i skyen. Det vil sige, at programmer kan gemmes og afspilles på alle platforme. Tjenesten hedder Cloud Record, og gør det

Læs mere

SÅDAN KOMMER DU I GANG MED MOBILEPAY BUSINESS

SÅDAN KOMMER DU I GANG MED MOBILEPAY BUSINESS DANSKE BANK DANSKE BANK HOLMENS KANAL DK 09 KØBENHAVN K TELEFON 45 3 4 WWW.DANSKEBANK.DK SÅDAN KOMMER DU I GANG MED MOBILEPAY BUSINESS 7876 05.03 Danske Bank A/S CVR-nr. 6 6 8 København DANSKE BANK DANSKE

Læs mere

Hassansalem.dk/delpin User: admin Pass: admin INTERFACE DESIGN

Hassansalem.dk/delpin User: admin Pass: admin INTERFACE DESIGN Hassansalem.dk/delpin User: admin Pass: admin INTERFACE DESIGN 1/20 Indledning Dette projekt er den afsluttende del af webudvikling-studiet på Erhvervs Lillebælt 1. semester. Projektet er udarbejdet med

Læs mere

Rejsekort A/S idekonkurence Glemt check ud

Rejsekort A/S idekonkurence Glemt check ud Rejsekort A/S idekonkurence Glemt check ud 9. marts 2015 1 Indhold 1 Introduktion 4 1.1 Problembeskrivelse........................ 4 1.2 Rapportens opbygning...................... 4 2 Ordliste 5 3 Løsning

Læs mere

Underbilag 2.24 Kommunernes it-miljø

Underbilag 2.24 Kommunernes it-miljø Underbilag 2.24 Kommunernes it-miljø Indholdsfortegnelse Vejledning... 3 1 Indledning... 3 2 Sagsbehandling Klientmiljø... 3 2.1 Operativsystem... 3 2.2 Browser... 5 2.3 Runtime Miljøer... 6 2.4 Fysiske

Læs mere

Version 8.0. BullGuard. Backup

Version 8.0. BullGuard. Backup Version 8.0 BullGuard Backup 0GB 1 2 INSTALLATIONSVEJLEDNING WINDOWS VISTA, XP & 2000 (BULLGUARD 8.0) 1 Luk alle åbne programmer, bortset fra Windows. 2 3 Følg instrukserne på skærmen for at installere

Læs mere

INDHOLDSFORTEGNELSE. Godt i gang med Android tablet... Indledning. KAPITEL ET... De første trin med din Android-enhed. KAPITEL TO...

INDHOLDSFORTEGNELSE. Godt i gang med Android tablet... Indledning. KAPITEL ET... De første trin med din Android-enhed. KAPITEL TO... INDHOLDSFORTEGNELSE Godt i gang med Android tablet... Indledning KAPITEL ET... De første trin med din Android-enhed Første gang... 8 Tilknyt Google-konto... 9 Sikkerhedskopiering... 10 Hjemmeskærmen...

Læs mere

RÅDET FOR DIGITAL SIKKERHED GUIDE TIL SIKRING AF FORBRUGER- ELEKTRONIK PÅ INTERNETTET

RÅDET FOR DIGITAL SIKKERHED GUIDE TIL SIKRING AF FORBRUGER- ELEKTRONIK PÅ INTERNETTET GUIDE TIL SIKRING AF FORBRUGER- ELEKTRONIK PÅ INTERNETTET TING PÅ INTERNETTET Internet of things er et moderne begreb, som dækker over, at det ikke længere kun er computere, der er på internettet. Rigtig

Læs mere

Product Ownerens værktøjskasse

Product Ownerens værktøjskasse Product Ownerens værktøjskasse 26. marts 2014 Jesper Thaning, agil praktiker & partner i BestBrains Agenda Vurdering af behov (værdi og risiko) Nedbrydning Det visuelle Afklaring af User Stories PO i større

Læs mere

Afsluttende Projekt - Kom/IT

Afsluttende Projekt - Kom/IT 1 Afsluttende Projekt - Kom/IT Rasmus H. Plaep 1 Billedkilde: http://blog.snelling.com/files/2015/01/business-107.jpg Indhold... 0 Indledning... 2 Problemafgrænsning... 2 Problemformulering... 2 Teori...

Læs mere

Hvorfor skal vi bruge objekt orienteret databaser?

Hvorfor skal vi bruge objekt orienteret databaser? OODBMS Vs. RDBMS 1 Indholdsfortegnelse Hvorfor skal vi bruge objekt orienteret databaser?... 3 OODBMS i erhvervslivet... 4 Bagsiden af medaljen... 5 OODBMS i praksis... 6 Konklusion... 8 2 Hvorfor skal

Læs mere

Arkitektur for begyndere

Arkitektur for begyndere Denne guide er oprindeligt udgivet på Eksperten.dk Arkitektur for begyndere Denne artikel beskriver forskellige basale n-tier arkitekturer. Som man bør kende og have valgt inden man går igang med at udvikle

Læs mere

Det Nye Testamente lyd-app. v. Stefan Lykkehøj Lund

Det Nye Testamente lyd-app. v. Stefan Lykkehøj Lund Det Nye Testamente lyd-app v. Stefan Lykkehøj Lund Indledning For nogle år siden, fik jeg Det Nye Testamente som lydbog på USB. I starten lyttede jeg en del med tiden blev det dog til mindre og mindre.

Læs mere

: Self-help for anxiety management. Jakob Thestrup Eskildsen, Praktikant - Telepsykiatrisk Center

: Self-help for anxiety management. Jakob Thestrup Eskildsen, Praktikant - Telepsykiatrisk Center : Self-help for anxiety management Dato: 25/10-16 Screeningspanel: Børn og unge arbejdsgruppe Jakob Thestrup Eskildsen, Praktikant - Telepsykiatrisk Center Anders Bay-Smidt, Konsulent, Telepsykiatrisk

Læs mere

App-administration til ios. VMware Workspace ONE UEM 1904

App-administration til ios. VMware Workspace ONE UEM 1904 App-administration til ios VMware Workspace ONE UEM 1904 Du kan finde den nyeste tekniske dokumentation på VMwares website på: https://docs.vmware.com/da/ VMwares website indeholder også de seneste opdateringer.

Læs mere

VoIP. Voice over IP & IP-Telefoni. Lars Christensen & René Truelsen, Dec. 2004

VoIP. Voice over IP & IP-Telefoni. Lars Christensen & René Truelsen, Dec. 2004 VoIP Voice over IP & IP-Telefoni Lars Christensen & René Truelsen, Dec. 2004 Oversigt over foredrag VoIP I Dag Hvordan står tingene i dag? Netværksstrukturen for VoIP Benyttede VoIP-standarder/protokoller

Læs mere

BESLUTNINGSBARRIEREN ER HØJERE

BESLUTNINGSBARRIEREN ER HØJERE At lave innovation og tænke nye forretningsområder kræver et velfunderet grundlag, der sikre kendskab til målgruppens behov og forretningens strategiske mål. Det er vigtigt at være sin position bevidst

Læs mere

Vejledning i upload af serier til Danske tegneseriskaberes app.

Vejledning i upload af serier til Danske tegneseriskaberes app. Vejledning i upload af serier til Danske tegneseriskaberes app. En kort intro Version 1.2 22/11/2012 Danske Tegneserieskabere har lavet appen for at give medlemmer og andre en nem adgang til at publicere

Læs mere

VELKOMMEN 3. KOM GODT I GANG 4 Log ind 5 Kontrolpanel 6 Tilpas profil 7 Tilknyt hold 8 Tilknyt fag 9

VELKOMMEN 3. KOM GODT I GANG 4 Log ind 5 Kontrolpanel 6 Tilpas profil 7 Tilknyt hold 8 Tilknyt fag 9 VEJLEDNING 1.0 Indhold VELKOMMEN 3 KOM GODT I GANG 4 Log ind 5 Kontrolpanel 6 Tilpas profil 7 Tilknyt hold 8 Tilknyt fag 9 SÅDAN OPRETTER DU EN QUIZ 10 Quiz info 11 Tilføj spørgsmål 12 Tilføj formel til

Læs mere

April Hjemmesider overblik over funktionalitet

April Hjemmesider overblik over funktionalitet April 2019 Hjemmesider overblik over funktionalitet Indhold Institutionernes nye hjemmesider... 3 Indledning... 3 Elementer på hjemmesiden... 3 Farvetemaer... 3 Forside... 5 Menu... 6 Indholdssider...

Læs mere

Articles... 3 I gang med Adobe Connect... 4 Når du skal invitere deltagere til et Adobe Connect møderum...11 Sådan redigerer du en video optaget i

Articles... 3 I gang med Adobe Connect... 4 Når du skal invitere deltagere til et Adobe Connect møderum...11 Sådan redigerer du en video optaget i WEB KONFERENCER Table of Contents Articles... 3 I gang med Adobe Connect... 4 Når du skal invitere deltagere til et Adobe Connect møderum...11 Sådan redigerer du en video optaget i Adobe Connect og indsætter

Læs mere

EasyIQ ConnectAnywhere Release note

EasyIQ ConnectAnywhere Release note EasyIQ ConnectAnywhere Release note Version 2.4 Der er over det sidste år lavet en lang række forbedringer, tiltag og fejlrettelser. Ændringer til forudsætningerne: o Klienten skal ved førstegangs login

Læs mere

Datatekniker med programmering som speciale H5

Datatekniker med programmering som speciale H5 Datatekniker med programmering som speciale H5 H5 består af et selvstændigt projekt som du definerer. Styringen af projektet er i centrum her, og ikke selve softwaren. H5 varer ti uger bestående af ni

Læs mere

XProtect-klienter Tilgå din overvågning

XProtect-klienter Tilgå din overvågning XProtect-klienter Tilgå din overvågning Tre måder at se videoovervågning på For at skabe nem adgang til videoovervågning tilbyder Milestone tre fleksible brugergrænseflader: XProtect Smart Client, XProtect

Læs mere

Trin for trin guide til Google Analytics

Trin for trin guide til Google Analytics Trin for trin guide til Google Analytics Introduktion #1 Opret bruger #2 Link Google Analytics til din side #3 Opret konto #4 Udfyld informationer #5 Gem sporings id #6 Download WordPress plugin #7 Vent

Læs mere

Dropbox - IOS. Filer i Dropbox mappen kan deles med andre eller tilgås fra nettet.

Dropbox - IOS. Filer i Dropbox mappen kan deles med andre eller tilgås fra nettet. Dropbox - IOS Dropbox er en lagerapplikation og service. Tjenesten giver brugerne mulighed for at gemme og synkronisere filer online og mellem computere. Dropbox har en cross-platform klient (IOS, Android,

Læs mere

Banner projekt. 1.semester

Banner projekt. 1.semester 1.semester 2013 33 Banner projekt Kamilla Klein: Kleinovich@gmail.com Asger Onsberg: Sofie Jensen: sofierough@gmail.com Cathrine Petersen: cathrinegpetersen@hotmail.com Gruppe nummer Hold Årgang Lærer

Læs mere

WISEflow Guide til deltagere

WISEflow Guide til deltagere WISEflow Guide til deltagere Version 2.8.0 1 Indhold Deltager: Sådan kommer du i gang... 3 Opsætning af profil... 3 Flow-oversigt... 6 Flow-typer... 7 Flowets tilstand... 7 Hvordan afleverer jeg min besvarelse?...

Læs mere

Velkommen til den nye og forbedrede Dynamicweb 9

Velkommen til den nye og forbedrede Dynamicweb 9 Velkommen til den nye og forbedrede Dynamicweb 9 Effektive kundeoplevelser på tværs af alle kanaler med én integreret platform. Én platform dækker (alle) dine digitale behov Med Dynamicweb 9 får du adgang

Læs mere

Underbilag 2.24 Kommunernes it-miljø Kommunernes Ydelsessystem

Underbilag 2.24 Kommunernes it-miljø Kommunernes Ydelsessystem Underbilag 2.24 Kommunernes it-miljø Kommunernes Ydelsessystem Indholdsfortegnelse 1 Indledning... 3 2 Sagsbehandling Klientmiljø... 3 2.1 Operativsystem... 3 2.2 Browser... 5 2.3 Runtime Miljøer... 6

Læs mere

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Kursusgang 11 Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Design af brugerflader 11.1 Samme sted Forskellige steder Sidste kursusgang Samtidigt

Læs mere

Mobilitet har fået nyt navn: CrossPad. Comwell Kolding den 9. april 2013

Mobilitet har fået nyt navn: CrossPad. Comwell Kolding den 9. april 2013 Mobilitet har fået nyt navn: CrossPad Comwell Kolding den 9. april 2013 it s a mobile first world I går Find hen til computeren I dag Der er en App til det Lokation Er ikke relevant Tid Er på min side

Læs mere

QR koder kræver dels en fysisk genstand at klistre koden på, og dels er operationen noget omfattende med print af kode og fysisk opsætning af denne.

QR koder kræver dels en fysisk genstand at klistre koden på, og dels er operationen noget omfattende med print af kode og fysisk opsætning af denne. Notat SEGES P/S Koncern Digital Stedfæstede instrukser ved brug af Recho Ansvarlig JPH Projekt: 7463, Kompetenceudvikling - når landmanden har tid og behov Oprettet 12-2015 Side 1 af 6 Stedfæstede instrukser

Læs mere

SIP. Session Initiation Protocol TDC IP telefoni Scale. SIP design mål

SIP. Session Initiation Protocol TDC IP telefoni Scale. SIP design mål Session Initiation Protocol TDC IP telefoni Scale design mål Give mulighed for at integrere nye faciliteter efterhånden som de opfindes er ikke en erstatning for det offentlige telefonnet - er helt sin

Læs mere

Hej! Mit navn er Mathias Korsholt Abel

Hej! Mit navn er Mathias Korsholt Abel Hej! Mit navn er Mathias Korsholt Abel Kontakt og Info Navn: Mathias Korsholt Abel. Fødselsdato: 31. August 1993. Adresse: Fyensgade 60, 2 sal lejlighed 4. Postnummer: 9000 Aalborg. Mobil: 27625622 E mail:

Læs mere

Spil Rapport. Spil lavet i GameMaker. Kevin, Mads og Thor 03-02-2011

Spil Rapport. Spil lavet i GameMaker. Kevin, Mads og Thor 03-02-2011 Spil Rapport Spil lavet i GameMaker Kevin, Mads og Thor 03-02-2011 Indholdsfortegnelse Indledning... 2 HCI... 2 Planlægning / Elementær systemudvikling... 2 Kravspecifikationer... 4 Spil beskrivelse...

Læs mere

VDI Manual v. 5 Indhold

VDI Manual v. 5 Indhold VDI Manual v. 5 Indhold VDI Manual v. 5... 1 VDI Windows 7 Manual... 2 VDI Windows xp Manual... 3 Andre Browsere Manual... 4 VDI Andoid Manuel opsætning af Citrix Reciever... 6 Automatisk opsætning af

Læs mere

Club La Santa app nem reservation lige ved hånden!

Club La Santa app nem reservation lige ved hånden! Club La Santa app nem reservation lige ved hånden! Info til nye gæster www.clublasanta.com Information om vores Club La Santa app og din guide til reservationssystemet Indholdsfortegnelse Hvor kan jeg

Læs mere

Projektbeskrivelse RSS Læser

Projektbeskrivelse RSS Læser HTX Roskilde 3.4 Projektbeskrivelse RSS Læser IT & Programmering Elev: Christian Pihlkjær Hjortshøj og Joans Henk Jensen Dato: 19-03-2013 1. Indledning Vi er i klasse 3.4 blevet introduceret til vores

Læs mere

KRISTIAN LANGBORG-HANSEN. Godt i gang med Android tablet

KRISTIAN LANGBORG-HANSEN. Godt i gang med Android tablet KRISTIAN LANGBORG-HANSEN Godt i gang med Android tablet INDHOLDSFORTEGNELSE Godt i gang med Android tablet... Indledning KAPITEL ET... De første trin med din Android-enhed Første gang... 8 Tilknyt Google-konto...

Læs mere

Tietgenskolen - Nørrehus. Data warehouse. Database for udviklere. Thor Harloff Lynggaard DM08125

Tietgenskolen - Nørrehus. Data warehouse. Database for udviklere. Thor Harloff Lynggaard DM08125 Tietgenskolen - Nørrehus Data warehouse Database for udviklere Thor Harloff Lynggaard DM08125 Juni 2010 Indhold Beskrivelse... 3 Data warehouse... 3 Generelt... 3 Sammenligning... 3 Gode sider ved DW...

Læs mere

Brugermanual til MOBI:DO Make på Android

Brugermanual til MOBI:DO Make på Android Brugermanual til MOBI:DO Make på Android Introduktion Med MOBI:DO Make kan du oprette guides, som kan ses i MOBI:DO. En guide virker som en guide der fører brugeren hele vejen igennem en arbejdsopgave.

Læs mere

Projektevaluering. Caretech Innovation. Projekt Mobiladgang for læger og andet sundhedspersonale (C-47)

Projektevaluering. Caretech Innovation. Projekt Mobiladgang for læger og andet sundhedspersonale (C-47) 1 Projektevaluering Caretech Innovation Projekt Mobiladgang for læger og andet sundhedspersonale (C-47) Deltagere/partnere: Systematic A/S Regionshospitalet Randers og Grenå Caretech Innovation Dato: 8.

Læs mere

sådan kører vi processen

sådan kører vi processen VERTICA sådan kører vi processen Når du som ny kunde skal have udviklet en ny e-handelsløsning eller app til din virksomhed, kan det være svært at overskue den proces, der følger. Hos Vertica har vi været

Læs mere

SYSTEMDOKUMENTATION AF POC

SYSTEMDOKUMENTATION AF POC DIGITALISERINGSSTYRELSEN POC PÅ ORKESTRERINGSKOMPONENTEN SYSTEMDOKUMENTATION AF POC Version: 1.1 Status: Endelig Godkender: Forfatter: Copyright 2019 Netcompany. All rights reserved Dokumenthistorik Version

Læs mere

QUICK GUIDE. Skab operationel effektivisering med Microsoft CRM Online

QUICK GUIDE. Skab operationel effektivisering med Microsoft CRM Online QUICK GUIDE Skab operationel effektivisering med Microsoft CRM Online Som erhvervsdrivende ved vi, hvor vigtigt det er at differentiere sig. For at overleve har vi i de seneste årtier set eksempler på,

Læs mere

Manual til administration af online booking

Manual til administration af online booking 2016 Manual til administration af online booking ShopBook Online Med forklaring og eksempler på hvordan man konfigurerer og overvåger online booking. www.obels.dk 1 Introduktion... 4 1.1 Formål... 4 1.2

Læs mere

FÅ ÉN SAMLET KOMMUNIKATIONSLØSNING

FÅ ÉN SAMLET KOMMUNIKATIONSLØSNING FÅ ÉN SAMLET KOMMUNIKATIONSLØSNING Flexfone er proppet med funktionalitet De mest benyttede funktioner Se mange flere på Flexfone.dk Åbningstider Med automatiseret åbningstider er I sikret, at jeres kunder

Læs mere

Vejman.dk mobile løsninger. Ved. Paul Stühler

Vejman.dk mobile løsninger. Ved. Paul Stühler Vejman.dk mobile løsninger Ved. Paul Stühler Baggrund for opgaven Generelt er der ønsker fra vores brugere om. Øget fleksibilitet gennem adgang til vejman.dk på mobile enheder. Behov for at arbejde målrettet

Læs mere

Spørgsmål & svar til App

Spørgsmål & svar til App Spørgsmål & svar til App De mest stillede spørgsmål til Myfone App til iphone og Android Midt Solu on A/S Godthåbsvej 23-25 8660 Skanderborg Tlf. 70 22 19 03 e-mail: info@midtsolu on.dk Web: www.midtsolu

Læs mere

It-sikkerhed Kommunikation&IT

It-sikkerhed Kommunikation&IT It-sikkerhed Kommunikation&IT Dette projekt handler om IT-sikkerhed. Gruppen har derfor valgt at have om Facebook, hvor vi vil hjælpe folk med at færdes rigtigt på nettet. Dette vil gøre ved hjælp af at

Læs mere

Brugervejledning til Online-JitBesked. Version 1.2

Brugervejledning til Online-JitBesked. Version 1.2 Brugervejledning til Online-JitBesked Version 1.2 Indhold 1. Helt grundlæggende... 4 Ikoner... 4 2. Sådan logger du på... 6 Husk mig... 6 3. Sådan logger du af... 7 Husk mig... 7 Sådan logger du aktivt

Læs mere

TEKNISKE FORHOLD VEDR. ADGANG TIL VP.ONLINE. Brugervejledning

TEKNISKE FORHOLD VEDR. ADGANG TIL VP.ONLINE. Brugervejledning TEKNISKE FORHOLD VEDR. ADGANG TIL VP.ONLINE vp.online 2011 01-10-2011 Indholdsfortegnelse 1 PROBLEMER MED AT SE VP.ONLINE... 3 2 BROWSER KONFIGURATION... 6 3 SKRIVEADGANG TIL DREV... 7 4 SESSION TIMEOUT

Læs mere

Impact værktøj retningslinjer

Impact værktøj retningslinjer Impact værktøj retningslinjer Værktøj fra Daphne III projektet IMPACT: Evaluation of European Perpetrator Programmes (Programmet for evaluering af Europæiske udøvere af krænkende adfærd) Impact værktøj

Læs mere

Daglig brug af JitBesked 2.0

Daglig brug af JitBesked 2.0 Daglig brug af JitBesked 2.0 Indholdsfortegnelse Oprettelse af personer (modtagere)...3 Afsendelse af besked...4 Valg af flere modtagere...5 Valg af flere personer der ligger i rækkefølge...5 Valg af flere

Læs mere

Indholdsfortegnelse. Hvorfor skal jeg tage backup af min blog? Side 3. Tag backup med UpDraft Side 4. Tag manuelt backup Side 8 - 2 -

Indholdsfortegnelse. Hvorfor skal jeg tage backup af min blog? Side 3. Tag backup med UpDraft Side 4. Tag manuelt backup Side 8 - 2 - - 1 - Indholdsfortegnelse Hvorfor skal jeg tage backup af min blog? Side 3 Tag backup med UpDraft Side 4 Tag manuelt backup Side 8-2 - Hvorfor skal jeg tage backup af min blog? Lige meget om du har opbygget

Læs mere

Håndbog. - MobilePass. Udarbejdet af: Maria Mathiesen Gældende fra: 25. februar 2015

Håndbog. - MobilePass. Udarbejdet af: Maria Mathiesen Gældende fra: 25. februar 2015 Håndbog - MobilePass Udarbejdet af: Maria Mathiesen Gældende fra: 25. februar 2015 Version Forfatter Dato Dokumentstatus 1.0 Maria Mathiesen 1. december 2014 Oprettet 1.1 Maria Mathiesen 16. december 2014

Læs mere

App til museeum Af Alan Mohedeen 3.5

App til museeum Af Alan Mohedeen 3.5 2012 App til museeum Af Alan Mohedeen 3.5 Mohedeen 4/15/2012 Inholdsfortegnelse Indledning... 2 Indledende problemanalyse... 2 Projekt- og produktmål... 2 Bollemodel... 3 Kravspecifikation... 4 Løsningsforslag...

Læs mere

Retningslinjer for Ipads GRÅSTEN FRISKOLE Version 2.0 side 1 af 11 Gældende fra 1.11.2014

Retningslinjer for Ipads GRÅSTEN FRISKOLE Version 2.0 side 1 af 11 Gældende fra 1.11.2014 side 1 af 11 Gældende fra 1.11.2014 Retningslinjer for Gråsten Friskole Side 1 side 2 af 11 Gældende fra 1.11.2014 Indhold Introduktion... Retningslinjer for Gråsten Friskole Side 32 ipad-sættet... 3 Ejerskab

Læs mere

Projektarbejde med scrum- metoden

Projektarbejde med scrum- metoden Projektarbejde med scrum- metoden Indhold Indhold... 1 1 Indledning... 2 2 Roller og terminologi i scrum... 3 Opgavestilleren... 3 Scrum Masteren... 3 Projektgruppen... 3 Sprint... 3 3 Møder... 3 Planlægningsmødet...

Læs mere

FAGKOMPETENCER.DK Kom godt i gang som vejleder i systemet

FAGKOMPETENCER.DK Kom godt i gang som vejleder i systemet FAGKOMPETENCER.DK Kom godt i gang som vejleder i systemet V 1.1 Juli 2017 DF Indhold Introduktion... 3 Sådan logger du på systemet som vejleder... 3 Oversigten... 5 Rediger en elevs oplysninger... 6 Opret

Læs mere

Hurtigt, nemt og bekvemt. Ønsker du, som mange andre, at få nye kompetencer. og være opdateret om mulighederne i de produkter

Hurtigt, nemt og bekvemt. Ønsker du, som mange andre, at få nye kompetencer. og være opdateret om mulighederne i de produkter Indhold Hvad er et webinar?... 2 Hvordan foregår det?... 3 Deltag via tablet... 9 Forskellige former for interaktion... 11 Hvilket udstyr skal jeg bruge?... 12 Hvad skal jeg ellers bruge?... 13 Kan man

Læs mere

Præsentation af Aula. Juni 2018

Præsentation af Aula. Juni 2018 Præsentation af Aula Juni 2018 Indhold af præsentation Hvorfor Aula? Alle kan bruge Aula Den lokale skole Teknologi og tilgængelighed Datasikkerhed Tidsplan for Aula Hvorfor Aula? Fra sommeren 2019 bliver

Læs mere

Komunikation/It C Helena, Katrine og Rikke

Komunikation/It C Helena, Katrine og Rikke HTX Afsluttende projekt E-learning Komunikation/It C Helena, Katrine og Rikke 1.1 01-05-2013 Systemudvikling Indledende aktiviteter Kommunikationsplanlægning for projektet, Laswells fem spørgsmål. o Hvem

Læs mere

Cloud i brug. Migrering af Digitalisér.dk til cloud computing infrastruktur

Cloud i brug. Migrering af Digitalisér.dk til cloud computing infrastruktur Cloud i brug Migrering af Digitalisér.dk til cloud computing infrastruktur 02 Indhold > Executive Summary............................................................... 03 Digitaliser.dk.....................................................................

Læs mere

ABCD- E-Læring TEKNISKE BEGREBER

ABCD- E-Læring TEKNISKE BEGREBER ABCD- E-Læring 2018 Prolearning ApS ABCD- E-Læring Arbejder du med e-læring, så har du sikkert mødt en del nye begreber, som du skal forholde sig til. Nogle af fremmedordene drejer sig om teorier og modeller.

Læs mere

DIGITAL LÆRING - KURSER FORÅR 2016

DIGITAL LÆRING - KURSER FORÅR 2016 www.taarnbybib.dk DIGITAL LÆRING - KURSER FORÅR 2016 TÅRNBY KOMMUNEBIBLIOTEKER VELKOMMEN TIL TÅRNBY KOMMUNEBIBLIOTEKERS KURSER 2 Vil du gerne lære om det nye Windows styresystem, se hvad en 3D-printer

Læs mere

Guide til PlaNet v1.12. Original skrevet af:

Guide til PlaNet v1.12. Original skrevet af: Guide til PlaNet v1.12 Original skrevet af: Sidst opdateret 15-11-2016 1 INDHOLD Generelt... 4 Login... 4 Roller... 4 Planlægger... 4 Afvikler... 4 Roller og moduler... 5 Planlægger... 5 Afvikler... 5

Læs mere