Procedurell generering av grottsystem för dataspel Jämförelse av procedurellt genererade osymmetriska banor
|
|
- Maria Solveig Lind
- för 6 år sedan
- Visningar:
Transkript
1 Procedurell generering av grottsystem för dataspel Jämförelse av procedurellt genererade osymmetriska banor Procedural generation of caves for computer games Comparison of procedurally generated nonsymmetrical levels Examensarbete inom huvudområdet Datavetenskap Grundnivå 30 högskolepoäng Vårtermin 2017 Pontus Ek Handledare: Mikael Thieme Examinator: Mikael Johannesson
2
3 Sammanfattning Detta arbete handlar om Procedural Content Generation (PCG) i form av algoritmer som skapar osymmetriska banor, och fokuserar på att ge en översikt av prestanda avseende tid, storlek och tillgänglighetsgaranti. Tre olika algoritmer testades på hur lång tid det tog att skapa en bana, och hur stora dess banor blev, och om dessa banor tillåter att man kan nå alla gängliga områden. En Agentbaserad algoritm, Cellular Automata och Diffusion-limited Aggregation (DLA) studerades avseende dess styrkor och svagheter. Efter experimentet så drogs slutsatsen att DLA var mest effektiv inom tid och garanti dock skapade den små banor. Cellular Automata lyckades skapa stora rum men kunde de inte godkännas på punkten garanti, och den tog för lång tid att köra. Den Agentbaserade algoritmen misslyckades att skapa banor överhuvudtaget. Nyckelord: Proceedural Content Generation, Bangenerering, Grottor, Algoritmer
4 Innehållsförteckning 1. Introduktion Bakgrund Procedural Content Generation Bangenererings-baserad PCG Cellular Automata Diffusion-limited Aggregation och Agentbaserad algoritm Problemformulering Grundläggande frågeställning Metodbeskrivning Tidigare forskning Implementation Designval Agentbaserad Diffusion-limited Aggregation Cellular Automata Koppling till kriterierna Utvärdering Presentation av undersökning Tid Golvmängd Tillgänglighet Slutsats Avslutande diskussion Sammanfattning Diskussion Potentiella lösningar Sammanhang Samhälleliga och etiska aspekter Framtida arbete...21 Referenser...22
5 1. Introduktion Procedural Content Generation (även känt som PCG) är tekniker, som slumpmässigt skapar innehåll till spel och simulatorer. Detta innehåll kan vara dialoger för spel-agenter, banor samt grafik med mera. Med hjälp av PCG kan man överlåta vissa uppgifter från person till dator. Detta område studeras fortfarande inom olika typer av spel och simulatorer för att kunna skapa en bättre upplevelse till användaren. (Shaker, Togelius & Nelson, 2016) Arbetet handlar om att skapa en översikt över tre olika algoritmer, som är specialiserade på att skapa osymmetriska banor i realtid. Algoritmerna är Cellular Automata, Diffusionlimited Aggregation och en Agentbaserad algoritm. Dessa banor skapas från algoritmer för att sedan användas till spel eller simulatorer. Ett exempel är spelet Rogue, skapat av Toy och Wichman (ca.1980), där man antar rollen som en äventyrare och beger sig ner för grottor och hålor. Spelet skapar en ny bana i realtid, när äventyraren går till en ny håla eller grotta. Detta arbete siktar på att ge en övergripande sammanfattning av tre algoritmer, dess funktion och hur väl de presterar. Kriterierna är satta för att ge en bild av hur väl algoritmerna kan skapa spelbara banor inom rimlig tid. Texten förutsätter att läsaren har en grundläggande förståelse av programmering. 1
6 2. Bakgrund 2.1 Procedural Content Generation Procedural Content Generation genererar innehåll till spel och simulatorer. Innehåll i denna miljö kan beskrivas som objekt man finner i spel eller simulatorer. Exempel skulle vara banor/världar, dialoger m.m.. Dessa tekniker bör även ha en begränsad eller indirekt styrning från användaren. Detta innebär att programmet ska kunna skapa innehåll utan att kräva en person under körning. (Shaker, Togelius & Nelson, 2016) Ett exempel av PCG är spelet Endless Legend, skapat av Amplitude Studios (2014), vilket använder sig av sådan teknik för att skapa en värld. Till detta brukar algoritmen titta på variabler, som bestämmer hur vissa element ska vara byggda. Exempel skulle kunna vara hur många öar, som ska finnas samt hur stora dessa får vara. Dessa variabler ändras av användaren innan algoritmen börjar arbeta. En skärmdump av spelet finns i Illustration 1 Shaker, Togelius och Nelson (2016) skriver att det finns två olika typer av generering. Den första innebär att algoritmen finns med i slutprodukten och skapar nytt innehåll till spelaren i realtid (Online). Den andra används under utvecklingen av programvaran (Offline). Endless Legend från tidigare och Rogue från introduktionen, använder sig av onlinegenerering. Genom att använda sig av PCG för att skapa innehåll till spel och simulatorer överlåter man arbetet till datorn, vilket innebär att mer kraft kan användas till annat under utvecklingen. Detta är anledningen till att PCG används enligt Dominic Guay från en artikel skriven av Remo (2008). De Carli, et al. (2011) håller med, men anser att det inte innebär att man kan ersätta en mänsklig konstruktör. Dessa typer av algoritmer anses fortfarande vara i ett startskede och kan förbättras. Van Der Lindern, Lopes och Bidarra (2013) anser att det borde finnas en mer kraftfull, exakt och rikare styrning av dessa tekniker. I deras arbete kan spelrelaterade variabler bestämma högnivåstyrning över algoritmernas arbete. De ansåg att detta behövdes studeras mer för att kunna förbättra tillgång och styrning. Illustration 1: Skärmdump från spelet Endless Legend 2
7 2.2 Bangenererings-baserad PCG Ett sätt för bangenerering är cellmatriser. Endless Legend av Amplitude Studios (2014) använder sig av en cellmatris för att skapa sin värld. Genom att sätta olika tillstånd i dessa celler i matrisen, kan en bana skapas. För att skapa osymmetriska grottbaserade banor, anses cellmatriser vara det bättre valet, snarare än banor som bygger på fördefinierade delar. Innan dessa algoritmer kan presenteras, måste upplägget av cellmatrisen bestämmas. En sådan matris är kvadratisk, och innehållet i varje cell kan representera tre olika saker. De är Yttervägg fungerar som en ram till matrisen. Den används för att säga till algoritmen att dess cell är ett stopp och kan inte byggas på eller utåt. Vägg fungerar som en byggsten för algoritmen och kan göras om till en golvcell. Alla väggceller behöver inte vara närliggande till varandra Golvceller är del av banans struktur. Dessa celler måste vara närliggande till varandra för att garantera att banan är spelbar. Dessa tre typer ger form till banan och sätter gränser för hur stor cellmatrisen kan bli Cellular Automata Cellular Automata (CA) jobbar genom att undersöka alla celler i matrisen. Matrisen börjar med att ha alla sina celler slumpade mellan golv och vägg. Med 4-5 regeln bestämmer denna teknik vilka celler som ändras eller stanna kvar i sitt initiala tillstånd. Beroende på antalet vägg-celler runtom och vad den nuvarande cellen är, så gäller 4-5 regeln som följande: Om cellen är en vägg och det är 4 eller mindre väggceller runtomkring, så blir den till golvcell. Om cellen är golv och det finns 5 eller flera väggceller, så blir den till väggcell. Denna cells nya tillstånd sparas i en ny matris. 4-5 regeln itereras genom alla celler i matrisen för att skapa en ny version. Denna nya matris körs sedan igenom med samma procedur ett antal gånger och överlämnar den senaste versionen som en färdig bana. Detta är beskrivningen av CA enligt Roguebasin (2005) och Kun (2012). Ett problem är att den kan skapa isolerade grott-sektioner, med nekad tillgång för spelaren att utforska. Roguebasin (2005) presenterade en lösning för detta. Flood-fill är en funktion, som letar efter den stora mängden närliggande golvceller och tar bort de resterande golv, som inte är del av den mängden Diffusion-limited Aggregation och Agentbaserad algoritm Dessa två algoritmer använder sig av agentobjekt, som placeras i matrisen och bygger ut banan. Agenterna har funktionen att titta på cellen framför sig och gå till den, om det är lämpligt att ta ett steg frammåt. Dessa två tekniker har några variationer på hur dessa agenter placeras och fungerar. Diffusion-limited aggregation skapar ett kluster i mitten av matrisen. Denna bas fungerar som en lista av potentiella start-positioner för dessa agenter. När en agent har skapats, får den en riktning och börjar sedan att promenera runt. När den tar ett steg så finns den slumpmässiga möjligheten att den kan ändra riktning. Den sparar alla väggar, som den går på, för att göra om dem till golv när den krockar in i antingen golv eller yttervägg. En ny agent skapas från en annan position i klustret och upprepar detta tills en viss mängd celler är golv. (Roguebasin, 2010) 3
8 Central-klustret i DLA garanterar att alla banorna tillåter att alla golvceller nås. Den jobbar tills en viss mängd golvceller existerar på banan, som kan innebära att algoritmen jobbar något för länge. Detta kan spela stor roll, då dessa agenter placeras ut slumpmässigt och kan råka låsa in sig helt. Den agentbaserade algoritmen placerar endast ut en agent, som utforskar matrisen bestående enbart av väggar. Denna agent tittar på cellen framför sig för att bestämma om den kan jobba vidare. När den tar ett steg framåt blir den föregående cellen till golv. Med detta kollar den möjligheter till två olika egenskaper: att ändra riktning och att bygga ett rum. Dessa två möjligheter ökas eller minskas, beroende på den valda egenskapen. Om den ändrar riktning, så kan den inte bygga rum. Denna agent jobbar tills den krockar in en yttervägg eller golv. (Shaker, Togelius & Nelson, 2016) Eftersom bara en agent används, så garanterar detta att banan har alla golvceller tillgängliga. Ett problem är storleken på banan samt hur lång tid agenten kan arbeta. Om agenten tar för lite tid på sig, är risken stor att banan är för liten. Om banan är stor, så tar arbetet för lång tid. Slumpen kan innebära att agenten ändrar riktning 3-4 gånger, för att sedan krocka in i en golvcell (går runt i en cirkel). 4
9 3. Problemformulering 3.1 Grundläggande frågeställning Arbetet fokuserade på att genomföra experiment med tre algoritmer relaterat till tre olika kriterier. De data som togs fram användes för att ge en översikt av dessa algoritmer och en slutsats och diskussion runt dessa algoritmer avseende styrkor och svagheter. Kriterierna valdes för att kunna skapa en bild av hur väl de kan prestera inom online bangenerering. Dessa kriterier var: Tidseffektivitet undersökte hur lång tid varje algoritm använde för att skapa en bana. Inom online-generering vill man att dessa körtider är korta. Det anses vara en styrka om den har korta tider. Tillgänglighet undersökte om dessa banor har alla sina golvceller närliggande till varandra. För att kunna spela igenom hela banan, måste man kunna nå alla golvceller från alla andra golvceller. Detta kriterium kunde antingen vara godkänt eller icke-godkänt på banorna. För att prestera bra, ska alla banor garantera godkänd tillgänglighet. Golvmängd anger hur stor mängd celler i banan som är golv. Måttet visar hur många celler som blir golvceller relativt totala antalet celler i en matris. Ett gränsvärde som anses vara lämpligt är 50%, då det kan garantera en bana stor nog för spelaren. Tre matriser av olika storlekar användes för att skapa en säker slutsats. Till var och en av matriserna skapades 120 banor från algoritmerna. Banornas storlek var 32x32, 64x64 och 128x128. Ändringarna i matrisen skulle ge en bättre bild av hur algoritmernas prestanda, när ytorna ändrades. Dessa tre algoritmer valdes för deras potentiella egenskaper att skapa osymmetriska banor med hjälp av cellmatriser. Hur de implementeras kommer att beskrivas i senare kapitel. Den slutgiltiga frågeställningen var följande: För bangenereringsalgoritmerna: Cellular Automata, Diffusion-limited aggregation och en agentbaserad PCG; med kriterium tidseffektivitet, tillgänglighet och golvmängd; vilken passar bäst att använda inom spel och simulering med onlinegenerering av osymmetriska banor? De data som togs fram användes för att formulera en slutsats och diskutera lösningar på svagheter dessa algoritmer har. Inspiration till detta arbete kommer från tidigare examensarbeten. Evertsson (2014) och Björklund (2016) undersökte olika algoritmer inom PCG och gav en jämförelse inom vissa kriterier. Mer om deras arbete finns på kapitel 4. PCG studeras fortfarande i sin helhet avseende styrning och prestanda. Det här arbetet implementerar och testar dessa algoritmer samt ger en klar bild av hur väl de genomför sina uppgifter. 5
10 3.2 Metodbeskrivning För att genomföra denna undersökning behövde dessa algoritmer implementeras och krävde även möjlighet att mäta kriterierna. Dessa sätt att ta fram data är inspirerat av tidigare artiklar om PCG skrivna av Evertsson (2014) och Björklund (2016). För att mäta tidseffektivitet, användes en tidtagarurklass, som anropades när algoritmen började sin generering. Detta tidtagarur stannade när algoritmen var färdig. För att ta fram golvmängden, räknades alla golvcellerna när matrisen var färdig. Detta värde jämfördes med den totala mängden celler. En djupetförstsökning användes för att bedöma om alla golvceller var kopplade med varandra. Om den inte kunde hitta alla golvceller, blev banan underkänd. Spelmotorn Unity skapat av Unity Technologies (2005) användes i detta arbete för att implementera dessa algoritmer. Tillsammans med programmeringsspråket C# kunde man testa teknikerna, och spara resultatet. Shaker, Togelius och Nelson (2016) presenterade fem kriterier som algoritmer för bangenerering bör uppnå. Det här arbetet fokuserar på två av dem: Tid och tillgänglighet. Resterande kriterier styrning, variation och trovärdighet uteslöts för att begränsa det här arbetets omfattning. Styrning innebär hur mycket man kan manipulera algoritmerna under körning. Variation innebär att resultaten ska vara unika. Trovärdighet handlar om att skapade miljöer uppfattas som äkta. Kriteriet för golvmängd används för att se hur väl dessa algoritmer jobbar med given yta. Syftet med denna bedömning är att se hur stora banorna kan bli. Om banorna blir små, bedöms det som en svaghet. Det gäller även när procentandelen golvmängd minskade trots att matrisen blev större. 6
11 4. Tidigare forskning Det finns tidigare studier som behandlar samma område. Evertsson (2014) skrev ett arbete om PCG med bangenerering, som använder sig av färdiga rum som kopplades ihop med enkla korridorer. Eftersom dessa delar var fördefinierade så var tillgängligheten av banorna något enklare. Evertsson (2014) tittade på hur teknikerna Binary Search Partitioning (BSP), Shortest path samt en evolutionär AI kunde prestera. De värden som spelade roll var tidseffektivitet, variationer och garanti att nå alla rum. Hans resultat visade att BSP och Shortest Path var mest lämpliga för spel där genereringen skulle ske online. Algoritmerna använde fördefinierade delar och skapade symmetriska banor. I det här arbetet användes inte dessa algoritmer. Björklund (2016) jobbade inom samma område med cellmatriser. Han använde BSP, Shortest Path och CA. Kriterierna var hur lång tid dessa algoritmer tog, hur kompakta dess banor blev och mängden oanvända celler. Björklunds (2016) ansåg att BSP var den mest effektiva algoritmen. Denna algoritm skapade de mest kompakta banorna under dem kortaste tiden. Det här arbetet används samma koncept för att ta fram den totala mängden golvceller, som existerar i dessa banor. Björklund använde enbart CA, som kunde skapa banor med osymmetrisk form. Likt algoritmerna från Evertsson (2014), valdes inte de resterande algoritmerna från Björklund, eftersom de skapar symmetriska banor. 7
12 5. Implementation Denna del av rapporten kommer att presentera artefakt och designval inom arbetet. Till det kommer implementationen av algoritmerna att beskrivas. Därefter diskuteras om denna artefakt var lämplig för studiens genomförande. Artefakten är ett program som skapar banor med hjälp av de tekniker, som skulle undersökas. Dessa banor studerades utifrån arbetets tre kriterier. Den sparade resultatet i en text-fil, som sedan laddades in i ett kalkylprogram. 5.1 Designval För att mäta tidsåtgång användes klassen Stopwatch. Denna ansågs vara en smidig lösning för att ta exakt tid, som inte kräver en person som startar och stoppar klockan (se Msdn.microsoft.com inom Stopwatch för mer information om denna klass). Alla golvceller räknas i varje skapad bana. Denna mängd jämfördes med den totala mängden celler från banan, mätt i procent. Golvmängden sparas som absolut tal och procentvärde. Djupetförstsökning används för att räkna alla golvceller som är närliggande till varandra. Om den totala mängden golvceller är samma mängd som från tidigare kriterium, så är banan godkänd. Idén till denna test kom från en design presenterat av Weiss (2013). För att spara alla resultat användes klassen StreamWriter. Denna klass skapar filer, som kan läsas av andra program. Text-filerna är skrivna i tabell-form, vilket gör det smidigt att överföra till kalkylprogram såsom Sun Microsystems (2002) Openoffce Calc. (se Msdn.microsoft,Streamwriter för mer om Streamwriter klassen). Dessa implementeringar av algoritmerna utgår från beskrivningen i tidigare kapitel. Ändringar anges i följande underkapitel Agentbaserad Denna implementation ville öka golvmängden, när den ansågs vara låg. För att uppnå detta, skapades fler agenter istället för enbart en. Detta innebar också att algoritmen kunde placera ut dessa agenter slumpmässigt upp till en viss mängd. Denna mängd agenter som skapades per bana var 25 st. En annan skillnad mellan denna implementation och den presenterad av Shaker, Togelius och Nelson (2016) var beteende hos agenterna. Inom denna implementation så dör agenterna endast av ytterväggar, medan i det ordinarie konceptet dödades agenten även när den kolliderade med golvceller. Med den nya varianten ökar tillgängligheten. I illustration 2 kan man se ett exempel på hur en bana kan se ut Diffusion-limited Aggregation Denna algoritm jobbar tills en viss mängd golvceller har uppnåtts. Under implementationen ändrades detta till att en viss mängd agenter skulle skapas istället. För att dessa agenter skulle leva längre, så kunde bara ytterväggar avsluta dem. Idén var att begränsa programmets tidsåtgång och minska risken för krasch. Den totala mängden agenter som skapas i denna implementation är 5 st. Se illustration 3 för en skärmdump av en bana från DLA implementationen. 8
13 Illustration 2: Bana skapat av den agentbaserade algoritmen Cellular Automata Inga ändringar gjordes i ordinarie koncept. Roguebasin (2005) presenterade Flood-fill funktionen, som tar bort små-grupper av golvceller som inte är del utav den största mängden närliggande golvceller. Detta garanterar att alla banorna klarar tillgänglighetskravet. Floodfill togs inte med i detta arbete då CA skulle bedömas på sina styrkor och svagheter från sitt originalkoncept. Flood-fill som en potentiell lösning till CAs svagheter, att diskuteras längre fram. Ett skärmklipp av CA från artefakten finns på illustration Koppling till kriterierna Illustration 3: Bana från DLA Artefakten i det här arbetet kan användas till att skapa banor från dessa algoritmer. Den kan även bedöma banorna utifrån kriterierna. Den sparade dessa resultat i text-filer som sedan kunde laddas in kalkylprogram. Hur den tog fram data för dessa kriterier presenterades i början av detta kapitel. Dessa implementationer hade några ändringar från sina koncept och skulle kunna ge andra resultat än förväntat. Risken bedöms vara liten för påverkan på resultaten. Illustration 4: Bana av CA 9
14 6. Utvärdering 6.1 Presentation av undersökning Denna experimentstudie genomfördes den 25 april 2017, från kl till Den maskinvara som fanns på datorn var en Intel Core I5-4679k CPU med 3.40 *2 GHz med Operativ-systemet Windows 7 N 64-bit. Det är viktigt att påpeka att annan maskinvara skulle kunna ge andra resultat. Data presenteras i form av låddiagram eller tabeller. Låddiagram ger en grafisk bild över spridningen av datapunkterna. Själva lådan i dessa diagram representerar de 50% av data som finns nära medelvärdet. Strecken som sticker ut representerar de högre och mindre värden som är utanför detta medelvärde Tid CA tog mest tid på sig inom alla matrisstorlekar. Den använde några enstaka sekunder upp till en hel minut för att skapa en bana. På illustrationerna 5, 6 och 7 så ligger den långt ifrån de andra algoritmerna. Spridningen för CAs tidsåtgång är större än för de andra algoritmerna. DLA synes vara den mest tidseffektiva på matrisstorleken 32x32 medan för de två större matriserna så blev den agentbaserade algoritmen den mest tidseffektiva. Spridning på den agentbaserade algoritmens tidsåtgång minskade med större matrisstorlek. Detta ses som en styrka då den är mer stabil och förutsägbar inom kriteriet tidsåtgång. (Se Illustrationerna. 5, 6 och 7) CA hade högst tidsåtgång på grund av sitt sätt att arbeta. Den undersöker alla celler i matrisen med 4-5 regeln, vilket de andra algoritmerna inte gör. När matrisen blir större, så accelererar tidsåtgången. DLA och den agentbaserade algoritmen hade lägre tidsåtgång för att de ritar i matrisen. Skillnad i arbetssätt beskrevs tidigare. Det fanns tillfällen då spridningen blev större än förväntat. Detta kan bero på livslängden hos agenterna. Sammanfattningsvis ses DLA och den Agentbaserade algoritmen jobba mest effektiv medan CA tog mera tid på sig. 10
15 Tidmängd per bana 32x Agent Cellular DLA Illustration 5: Tidmängd (ms) i 32x32 11
16 Tidmängd per bana 64x Agent Cellular DLA Illustration 6: Tidmängd (ms) i 64x64 12
17 Tidsmängd per bana 128x Agent Cellular DLA Illustration 7: Tidmängd (ms) i 128x128 13
18 Golvmängd per bana 32x Agent Cellular DLA Illustration 8: Golvmängd (Golvceller per bana) i 32x32 14
19 Golvmängd per bana 64x Agent Cellular DLA Illustration 9: Golvmängd (Golvceller per bana) i 64x64 15
20 Golvmängd per bana 128x Agent Cellular DLA Illustration 10: Golvmängd (Golvceller per bana) 128x128 16
21 Golvmängd(% från totala) Agent Cell DLA 32x32: 57,5 57,2 40,8 64x64: 29,9 63,8 35,6 128x128: 11,9 66,5 32 Tabell 1: Golvmängd inom procentvärden Golvmängd Från illustration 8 och tabell 1 kan man se att den Agentbaserade algoritmen lyckades ta fram mer golvyta än CA inom 32x32. Med de större matriserna på illustrationerna 9 och 10 så minskades den agentbaserade algoritmen kraftigt medan CA lyckades hålla sig över 50%. Utöver de större matriserna så verkar även dess spridning minska. Detta skulle visa att CA höll sig fast inom en viss gräns för golvyta. DLA höll sig på 40% men sänkte sig ner till 32% för den största matrisen. Detta ses som en svaghet, då den inte presterar minst 50%. Varför CA jämt håller sig över 50% av golvceller per bana kan bero på dess skapande av matrisen. För DLA och den Agentbaserade algoritmen blev dessa resultat sämre än för CA. Detta berodde på mängden agenter och deras livslängd. Mängden är fast (25 st för den agentbaserade och 5 st för DLA) medan livslängden är slumpmässig. Resultaten blir sämre ju större matrisen är. CA presterade bäst i detta kriterium. DLA och den agentbaserade är svaga i detta kriterium Tillgänglighet Direkt kan man se att DLA presterade bäst i alla matrisstorlekar (se tabell 2). Orsaken är centralklustret, som ger startpositioner till agenterna. CA lyckas till viss del i den minsta matrisen. Resultatet försämrades påtagligt i större matriser. Dess arbetssätt skapar smågrupper av golvceller som ligger utanför den stora mängden närliggande golvceller. Den agentbaserade algoritmen misslyckades helt i detta kriterium. Detta beror på att agenternas livslängd blir kort som en följd av algoritmens arbetssätt. Inom detta område så presterade DLA bäst och ses ha en bra styrka inom detta. CA och den Agentbaserade algoritmen anses inte klara av detta kriterium. I diskussionen finns förslag till lösningar på svagheter. Garanti(Godkända %) DLA CelluAgent 32x ,8 0,8 64x , x Tabell 2: Resultat inom Tillgänglighet 17
22 6.2 Slutsats Inom denna undersökning nådde CA alltid upp till minst 50% av golvytan i alla matrisstorlekar. CA misslyckas inom tillgänglighet när Flood-fill inte används. Denna algoritmen tog längst tid på sig att arbeta igenom alla celler i matrisen. Den agentbaserade algoritmen kunde inte garantera att banorna blev spelbara. Dess golvmängd var under 50% golvceller på grund av livslängden på agenterna. Den var mest tidseffektiv. DLA lyckades garantera att alla banorna var fullt tillgängliga. Algoritmen visade sig vara relativt tidseffektiv. Den hade en låg golvmängd som minskade ytterligare procentuellt när matriserna blev större. Rangordning för dessa algoritmer är följande: DLA anses vara mest effektiv inom tid och tillgänglighet. Dess enda svaghet är golvmängden. CA skulle komma efter med en högre golvmängd per bana och med högre tillgänglighet än den Agentbaserade. Den kommer efter DLA för att den tog längre tid på sig. Den Agentbaserad misslyckas med tillgänglighet och golvmängd, men jobbar smidigast i tid. 18
23 7. Avslutande diskussion 7.1 Sammanfattning Målet i detta arbete var att undersöka hur väl tre bangenererings-tekniker kunde prestera. En Agentbaserad, Diffusion-limited aggregation och Cellular Automata använder sig av cellmatriser där en cell kan antingen vara golv, vägg eller yttervägg. De två första tillstånden fungerade som byggsten, den sista var gränser för banan. För att bedöma dessa algoritmer, användes tre kriterier: Tid för att se hur länge dessa algoritmer jobbade, golvmängd för att se hur stora dessa banor kunde bli, och tillgänglighet för att se om man kunde nå alla delar. Tre olika storlekar på matriser användes för att se ändringar i beteende i algoritmerna. Dessa storlekar var 32x32, 64x64 och 128x128 celler per bana. Algoritmerna skapade 120 banor var. Algoritmerna implementerades i C# med Unity som verktyg för att genomföra studien. Programmet skrevs för att skapa banor med dessa algoritmer och även ta fram de data som behövdes för analys. Data sparades i text-filer, som sedan kunde läsas in i ett kalkylprogram. Tidtagarur-klass användes för att ta fram tid. Programmet räknade upp alla golvceller den färdiga banan hade. Djupet-först sökning användes för att se om alla golvceller kunde nås. Analys av data från studien visade att DLA var snabbast på att skapa tillgängliga banor. Dess svaghet var att banorna hade mindre än 50% golvceller. CA placerades på andra plats då den kunde skapa banor med golvmängden över 50% av den totala mängden celler. Arbetet tog för lång tid och dess banor hade låg tillgänglighet. Den Agentbaserade algoritmen placerades sist, då dess banor gick från 50% till 10% golvmängd när storleken på matrisen ökade. Den hade även lågt tillgänglighet. Den tog kortast tid på sig för att skapa banor. 7.2 Diskussion Potentiella lösningar DLAs golvmängd på den minsta matrisen var under 50% och minskade ytterligare när matrisen blev större. Lösningen på detta skulle vara att skapa fler agenter. Detta skulle öka möjligheten till större golvmängd, men algoritmen skulle ta längre tid på sig. CA tog för lång tid på sig och kunde inte garantera tillgänglighet till hela banan. Flood-fill kan användas för att finna den största mängden närliggande golvceller och ta bort de celler som inte är del av den. Nackdelen med Flood-fill är att det tar längre tid. För att få CA att bli mer tidseffektiv, så skulle multitrådning kunna användas. Problemet med multitrådning är att den kan låsa sig själv. Den agentbaserade tekniken hade problem med att uppnå en större mängd golvceller på större matriser. En lösning till detta skulle vara att öka mängden agenter. Detta kan leda till att antalet golvceller per bana ökas. En nackdel med detta är att tiden ökar. Dess andra svaghet är att tillgängligheten minskar. En lösning till detta skulle vara att spara en lista av golvcellerna som potentiell start-position för nya agenter. Detta leder till att alla agenterna som skapas är kopplade till golvceller från en tidigare agent. 19
24 7.2.2 Sammanhang Detta arbete bidrog med att ge en översikt på hur väl dessa tre algoritmer presterar. Det ger information till utvecklare av spel o/e simulatorer för att fatta bättre beslut om lämpliga algoritmtekniker. Van Der Lindern, Lopes och Bidarra (2013) ansåg att dessa typer av algoritmer bör studeras mer för att kunna få fram en mer trovärdig värld, och jobba snabbare. Presentation av svagheter i dessa algoritmer fungerar som en start till förbättringar. Mängden tid bestämmer om algoritmen kan ta emot mer arbete för att skapa mer detaljerade banor. Golvmängd per bana kan bli större, vilket bidrar till att banan blir större. Tillgänglighet visar att algoritmen skapar en spelbar bana. Alternativa användningar för dessa algoritmer skulle vara att skapa grundformer under spelets utveckling. När en viss mängd banor hade skapats så tittar en designer igenom dessa banor och använder de som anses fungera. Därefter finputsar och dekorerar designern sin banan. Dessa banor kan sedan användas i slutprodukten spel eller simulator. Det skulle innebära att tid- och tillgänglighetskriterierna inte är så viktiga, medan golvmängden och dess form är av högre värde. Ytterligare en viktig faktor är om banan är tilltalande att spela. Se kapitel 3.2 Något att uppmärksamma om detta arbete är att algoritmerna enbart skapar banans form. Den dekorerar inte banan med objekt. Detta betyder att tiden ökar om dessa banor dekoreras, beroende på vad det är för spel. En potentiell felkälla i detta arbete är hur algoritmerna har implementerats. Detta betyder att deras äkta koncept inte prövats och att en modifierad version har använts. Vilket skulle innebära en annan slutsats. Till exempel: Om Flood-fill använts, så skulle CA presterat bättre än DLA. I det här arbetet så användes algoritmernas grundkoncept med så få ändringar som möjligt för att bedöma originalkoncepten. En annan felkälla kan vara val av operativsystem och spelmotorn Unity. Funktioner inom dessa kan ha påverkat testresultaten på ett okänt/okontrollerat sätt. Om man skulle få samma resultat med andra val, kan inte svaras på i den här undersökningen Samhälleliga och etiska aspekter Enligt Young (2009) är spelberoendet ett växande problem bland barn och tonåringar. För mycket tid ägnas åt spel och för lite till andra aktiviteter (t.ex. studier, hälsa, socialt umgänge). Ett exempel som togs upp var onlinespel där man deltar i en annan värld och upplever nya saker i samspel med andra. Detta håller användarna engagerade i längre perioder. Spel som använder bangenerering i realtid skapar banor som inte tar slut. Algoritmerna som undersöktes kan användas i detta syfte. Van Rooij, Meerkerk, Schoenmakers, Griffiths och van de Mheen (2009) ansåg att detta kan undvikas om spelutvecklaren ser till att varna användaren för utveckling av spelberoende och hänvisa till tjänster som kan hjälpa. Att sätta fast vad för effekt detta arbete skulle bidra med inom etiska och samhälleliga vyer kan vara vara svårt. Detta arbete fokuserade på att ta fram en överblick på hur väl dessa bangenereringstekniker presterade. Vad denna information kan användas till, skulle vara att bestämma om dessa algoritmer är lämpliga till projekt som spel och simulatorer. Vad dessa programvaror skulle ge är positiva och negativa effekter för samhället är upp till läsaren att bedöma. 20
25 7.3 Framtida arbete En intressant fortsättning skulle vara att testa dessa tekniker med andra gränser och varianter. Implementationen i detta arbete gav den agentbaserade och DLA en begränsad mängd agenter. Det skulle vara intressant att se om resultaten ändras om DLA och den agentbaserade använts i sina originalkoncept. I 3.2 beskrevs tre andra kriterier som mäter hur väl en PCG-teknik presterar. Styrning, variation och trovärdighet som inte testas i denna experimentstudie. Variation och trovärdighet kan undersökas med hjälp av enkäter till spelare. För att bedöma styrning kan man ge en öppen styrning av algoritmerna till testpersonerna och efterfråga deras åsikt om de upplevde kontroll över hur algoritmens arbete. Utvärdering av samtliga sex kriterier ger en mer tydlig och rättvisande bild över algoritmernas användbarhet. 21
26 Referenser Amplitude Studios (2014) Endless Legend [Datorprogram]. Iceberg Interactive. Björklund O., (2016) Kompaktheten av procedurellt genererade grottsystem: en jämförelse av procedurellt genererade grottsystem.[examensarbete] Högskolan i Skövde, Datavetenskap, URN: urn:nbn:se:his:diva-9431, Skövde De Carli D. M., d'ornellas M.C., Tadeu Pozzer C. & Vevilacqua F. (2011) A Syrvey of Procedural Content Generation Technique Suitable to Game Development. SBGAMES '11 Proceedings of the 2011 Brzilian Symposium on Games and Digital Entertainment (Pages 26-35). Universidade Federal da Fronteria Sul. IEEE Computer Society Washington. Evertsson J. (2014) Rumsbaserad Bangenerering En jämförelse av procedurella tekniker. [Examensarbete] Högskolan i Skövde, Datavetenskap, URN: urn:nbn:se:his:diva-12355, Skövde Kun J., (2012) The Cellular Automaton Method of Cave Generation [Blog]. Tillgänglig via: (Senast besökt ) Msdn.microsoft.com, (inget datum), StreamWriter.Write Method, [online]. Tillgänglig via (senast besökt: ) Msdn.microsoft.com, (inget datum), Stopwatch Class (System.Diagnostics), [online]. Tillgänglig via (Senast besökt: ) Remo C., (2008) MIGS: Far Cry 2's Guay On The Importance of Procedural Content. Gamasutra [Online] Tillgänglig via: ance_of_procedural_content.php. (Senast besökt ) Roguebasin, (2005). Cellular Automata Method for Generating Random Cave-Like Levels [online] Tillgänglig via: title=cellular_automata_method_for_generating_random_cave-like_levels (Senast besökt: ) Roguebasin, (2008). Irregular Shaped Rooms [online] Tillgänglig via (senast besökt: ) Roguebasin, (2010). Diffusion-limited aggregation [online] Tillgänglig via title=cellular_automata_method_for_generating_random_cave-like_levels (Senast besökt: ) Roguebasin, (2014). Random Walk Cave Generation [online] Tillgänglig via (Senast besökt: ) 22
27 Shaker N., Togelius J., Nelson M., (2016) Procedural Content generation in Games. Switzerland, Cham: Springer International Publishing AG. Sid. 3-10, Smith G. (2014). The Future of Procedural Content Generation in Games. Proceedings of the Experimental AI in Games Workshop. [Online] Tillgänglig via: (senast besökt: ) Sun Microsystems, (2002), [Datorprogram] OpenOffice Calc., Sun Microsystems. Toy M., Wichman G., Arnold K., & Lane J. (Ca. 1980) Rogue [Datorprogram]. Unity Technologies (2005) Unity [Datorprogram]. Unity Technologies Van Der Linden R., Lopes R., & Bidarra R. (2013) Procedural Generation of Dungeons IEEE Transactions on Computational Intelligence and AI in Games, IEEE. DOI: /TCIAIG Tillgänglig via: besökt: ) Van Rooji A.J., Meerkerk G.J., Schoenmarkers T.M., Griffiths M., & van de Mheen D.,(2010). Video game addiction and social responsibility. 18. Sid Weiss M.A., (2013). Data Structures and Algorithm Analysis in C++, USA, Addison-Wesley. Sid a Workshop on Procedural Content Generation in Games (2010) Workshop on Procedural Content Generation in Games [Online] Tillgänglig via: (Senast besökt ) Young K., (2009). Understanding Online Gaming Addiction and Treatment Issues for Adolescents., - The American Journal of Family Therapy, 37(5). Sid
PROCEDURELLT GENERERADE DUNGEONS MED BSP OCH SHORTEST PATH
Malskapada v Henrik PROCEDURELLT GENERERADE DUNGEONS MED BSP OCH SHORTEST PATH En Teknisk Utvärdering PROCEDURALLY GENERATED DUNGEONS USING BSP AND SHORTEST PATH A Technical Evaluation Examensarbete inom
KOMPAKTHET AV PROCEDURELLT GENERERADE GROTTSYSTEM
Malskapada v Henrik KOMPAKTHET AV PROCEDURELLT GENERERADE GROTTSYSTEM En jämförelse av procedurellt genererade grottsystem DENSITY OF PROCEDURALLY GENERATED DUNGEONS A comparison of procedurally generated
Procedurella Grottor TNM084. Sammanfattning. Alexander Steen
Procedurella Grottor TNM084 Alexander Steen alest849@student.liu.se 13-01-12 Sammanfattning Denna rapport beskriver en metod för att skapa procedurella grottor. Grottorna består utav sammanlänkade rum
Programmeringsuppgift Game of Life
CTH/GU STUDIO TMV06a - 0/0 Matematiska vetenskaper Programmeringsuppgift Game of Life Analys och Linär Algebra, del A, K/Kf/Bt Inledning En cellulär automat är en dynamisk metod som beskriver hur komplicerade
Tor Sterner-Johansson Thomas Johansson Daniel Henriksson
Lab 4: Anti Tower Defence Oskar Mothander Alan Mendez Larsson dit06omr dit06mln Lärare: Handledare: Johan Eliasson Johan Granberg Tor Sterner-Johansson Thomas Johansson Daniel Henriksson Innehåll 1. Problemspecifikation...
PROCEDURELLT GENERERADE BANOR MED HÖJDSKILLNADER OCH BRA FRAMKOMLIGHET PROCEDURALLY GENERATED MAPS WITH HEIGHT DIFFERENCE AND GOOD EXPLORATION
Malskapada v Henrik PROCEDURELLT GENERERADE BANOR MED HÖJDSKILLNADER OCH BRA FRAMKOMLIGHET Slumpmässighet med direktiv PROCEDURALLY GENERATED MAPS WITH HEIGHT DIFFERENCE AND GOOD EXPLORATION Randomization
Mälardalens högskola
Teknisk rapportskrivning - en kortfattad handledning (Version 1.2) Mälardalens högskola Institutionen för datateknik (IDt) Thomas Larsson 10 september 1998 Västerås Sammanfattning En mycket viktig del
Handledare: Mikael Goldmann
2012-02- 23 Jacob Rydh Robert Hedin Sudoku Solver Projektspecifikation Handledare: Mikael Goldmann Introduktion Vi ska studera och utforma olika algoritmer för att lösa Sudoku puzzel. Vi kommer testa olika
Utbildningsplan Dnr CF 52-66/2007. Sida 1 (7)
Utbildningsplan Dnr CF 52-66/2007 Sida 1 (7) PROGRAMMET FÖR SIMULERING OCH DATASPELSUTVECKLING, 180 HÖGSKOLEPOÄNG Programme in Simulation and Computer Game Development, 180 ECTS Utbildningsplanen är inrättad
Dagbok Mikael Lyck 810717-0071
Dagbok Mikael Lyck 810717-0071 2/6 Slutredovisning, redovisningen gick bra vi hade ju redan byggt ihop spelet så vi var inte särskilt oroliga. Allt som allt är jag väldigt nöjd med slutprodukten. 11/5
Titel på examensarbetet. Dittnamn Efternamn. Examensarbete 2013 Programmet
Titel på examensarbetet på två rader Dittnamn Efternamn Examensarbete 2013 Programmet Titel på examensarbetet på två rader English title on one row Dittnamn Efternamn Detta examensarbete är utfört vid
PROGRAMMERING. Ämnets syfte. Kurser i ämnet
PROGRAMMERING Ämnet programmering behandlar programmeringens roll i informationstekniska sammanhang som datorsimulering, animerad grafik, praktisk datoriserad problemlösning och användaranpassad konfiguration
Inledning. Kapitel 1. 1.1 Bakgrund. 1.2 Syfte
Sammanfattning Vi har i kursen Modelleringsprojekt TNM085 valt att simulera ett geléobjekt i form av en kub. Denna består av masspunkter som är sammankopplade med tre olika typer av fjädrar med olika parametrar.
Forskning och utveckling inom språkteknologi Uppgift 3: Projektförslag Parallelliserad dependensparsning i CUDA
Forskning och utveckling inom språkteknologi Uppgift 3: Projektförslag Parallelliserad dependensparsning i CUDA Evelina Andersson 18 maj 2011 1 Introduktion Att träna mycket för att bli duktig på ett språk
Datastrukturer och Algoritmer D0041D
Luleå Tekniska Universitet 19 mars 2014 Laborationsrapport Laboration 3 Datastrukturer och Algoritmer D0041D Primms Algoritm Namn E-mail Magnus Björk magbjr-3@ltu.student.se Handledare Felix Hansson Primms
Att skriva sin rapport. Jan Thim
Att skriva sin rapport Jan Thim Innehåll Innehåll i rapporten Referenser och att referera Att skriva för rätt forum Det vetenskapliga skrivandet Innehåll i rapporten Vad ska vara med? (Viktigt med ett
TDDD92 Artificiell intelligens -- projekt
jonas.kvarnstrom@liu.se 2018 TDDD92 Artificiell intelligens -- projekt Individuella uppgifter UPG2: Individuell skriftlig rapport 2 Vad? Läsa och förstå vetenskaplig litteratur Varför? Framtiden: Inte
PROGRAMMERING. Ämnets syfte. Kurser i ämnet
PROGRAMMERING Ämnet programmering behandlar programmeringens roll i informationstekniska sammanhang som datorsimulering, animerad grafik, praktisk datoriserad problemlösning och användaranpassad konfiguration
Flipped Classroom med gamification som stöd för studentaktiverande undervisningsform
Slutrapport för TUFF-projektet 2017 Flipped Classroom med gamification som stöd för studentaktiverande undervisningsform Campus Gotland Projektdeltagare: Maria Fredriksson Avd för kvalitetsteknik Inst
Processuell generering av oändliga spelvärldar
Södertörns högskola Institutionen för naturvetenskap, miljö och teknik Kandidatuppsats 15 hp Medieteknik höstterminen 2013 Processuell generering av oändliga spelvärldar Praktiska problem och optimering
Genetisk programmering i Othello
LINKÖPINGS UNIVERSITET Första versionen Fördjupningsuppgift i kursen 729G11 2009-10-09 Genetisk programmering i Othello Kerstin Johansson kerjo104@student.liu.se Innehållsförteckning 1. Inledning... 1
729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo
729G75: Programmering och algoritmiskt tänkande Tema 1, föreläsning 1 Jody Foo Föreläsningsöversikt Kursinfo / Om kursen Algoritmer Objektorienterad programmering i praktiken terminologi använda objekt
Cacheminne i en AMD Opteron Processor
Handledare: Erik Larsson Lunds Tekniska Högskola HT15 Cacheminne i en AMD Opteron Processor En rapport om cacheminne och dess struktur, i en 12 kärnig AMD Opteron Magny-Cours processor. Författare: Hamza
Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier
Arv Fundamental objekt-orienterad teknik arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Programmeringsmetodik -Java 165 Grafisk respresentation: Arv
Laboration i datateknik
KUNGLIGA TEKNISKA HÖGSKOLAN Laboration i datateknik Felsökning och programmering av LEGO NXT robot Daniel Willén 2012 09 06 dwill@kth.se Introduktionskurs i datateknik II1310 Sammanfattning Syftet med
UTVÄRDERING AV ALGORITMER FÖR BRED KOLLISIONSDETEKTERING MED HJÄLP AV BOIDS ALGORITM
Malskapada v Henrik UTVÄRDERING AV ALGORITMER FÖR BRED KOLLISIONSDETEKTERING MED HJÄLP AV BOIDS ALGORITM EVALUATION OF ALGORITHMS USED FOR BROAD PHASE COLLISION DETECTION USING BOIDS ALGORITHM Examensarbete
Datavetenskapligt program, 180 högskolepoäng
GÖTEBORGS UNIVERSITET UTBILDNINGSPLAN IT-fakultetsstyrelsen 2013-02-14 Datavetenskapligt program, 180 högskolepoäng (Computer Science, Bachelor s Programme, 180 credits) Grundnivå/First level 1. Fastställande
PROGRAMMERING. Ämnets syfte. Kurser i ämnet
PROGRAMMERING Ämnet programmering behandlar programmeringens roll i informationstekniska sammanhang som datorsimulering, animerad grafik, praktisk datoriserad problemlösning och användaranpassad konfiguration
JavaRats. Kravspecifikation. Version 1.1. Gustav Skoglund gussk258@student.liu.se. Marcus Widblom marwi026@student.liu.se. Senast ändrad: 13 / 05 / 08
JavaRats Kravspecifikation Version 1.1 Gustav Skoglund gussk258@student.liu.se Marcus Widblom marwi026@student.liu.se Senast ändrad: 13 / 05 / 08 Sammanfattning Kravspecifikationen för JavaRats har skrivit
EMG:s väg till examensarbeten av mycket hög kvalitet
EMG:s väg till examensarbeten av mycket hög kvalitet Rolf Zale Institutionen för ekologi, miljö och geovetenskap rolf.zale@emg.umu.se Grundsyn Under examensarbetet ska studenten koncentrera sig på uppgiften
LiTH. WalkCAM 2007/05/15. Testplan. Mitun Dey Version 1.0. Status. Granskad. Godkänd. Reglerteknisk projektkurs WalkCAM LIPs
Testplan Mitun Dey Version 1.0 Status Granskad Godkänd 1 PROJEKTIDENTITET Reglerteknisk projektkurs, WalkCAM, 2007/VT Linköpings tekniska högskola, ISY Namn Ansvar Telefon E-post Henrik Johansson Projektledare
PROCEDURELL GENERERING AV NIVÅER TILL PUSSELSPEL MED EVOLUTIONÄRA ALGORITMER
Malskapada v Henrik PROCEDURELL GENERERING AV NIVÅER TILL PUSSELSPEL MED EVOLUTIONÄRA ALGORITMER Att formulera en evalueringsmetod PROCEDURAL GENERATION OF LEVELS FOR PUZZLE GAMES WITH EVOLUTIONARY ALGORITHMS
Prestandapåverkan på databashanterare av flertrådiga processorer. Jesper Dahlgren
Prestandapåverkan på databashanterare av flertrådiga processorer av Sammanfattning Behandling av information bli vanligare i dagens samhälle och för att klara denna uppgiften används ofta en databashanterare
PD104A - Introduktion för Produktuteckling och design
PD104A - Introduktion för Produktuteckling och design Antal svar: 13 (41) 1. Flervalsfråga Andel Allmänt Hur tycker du kursen har varit? 1. Dålig 0% 2. Ganska bra 23,1% 3. Bra 69,2% 4. Mycket bra 7,7%
HAND TRACKING MED DJUPKAMERA
HAND TRACKING MED DJUPKAMERA ETT PROJEKT I TNM090 - SOFTWARE ENGINEERING Rasmus KARLSSON Per JOHANSSON Erik HAMMARLUND raska293@student.liu.se perjo020@student.liu.se eriha891@student.liu.se 2014-01-14
Mobil streckkodsavläsare
Avdelningen för datavetenskap Martin Persson Jan Eriksson Mobil streckkodsavläsare Oppositionsrapport, D-nivå 2005:xx 1 Generell utvärdering av projektet Projektet gick ut på att undersöka hur bra olika
Spelutveckling - Gameplay. Design och produktion
Spelutveckling - Gameplay Design och produktion Vad är ett spel? Finns olika åsikter Några exempel som räcker på egen hand Coola features Akta er för feature creep För mycket features kan dränka gameplay
Generering av L-system fraktaler med Processing.js
Generering av L-system fraktaler med Processing.js TNM084 Procedurella Metoder för bilder Carl Claesson, carcl268@student.liu.se Hemsida: http://carlclaesson.se/tnm084 Sammanfattning Denna rapport beskriver
Kravspecifikation. TDP005 Projekt: objektorienterade system. Version 4.0 Datum Anna Ahlberg Johan Almberg
Kravspecifikation TDP005 Projekt: objektorienterade system Version 4.0 Datum 2008 12 05 Anna Ahlberg Johan Almberg 1 Innehållsförteckning 1. Spelidé...3 1.1 Svårighetsgrad...3 2. Målgrupp...3 3. Spelupplevelse...3
LABORATION 4 OBJEKTORIENTERAD PROGRAMMERING I C++ I
LABORATION 4 OBJEKTORIENTERAD PROGRAMMERING I C++ I Vt 2002 Mål: Lära sig: Filhantering Stränghantering Vektorer Funktioner Programstruktur Tid: Läroboken: 6 timmars handledd laborationstid. Beräknad klar
Utbildningsplan Dnr CF 52-527/2009. Sida 1 (7)
AKADEMIN FÖR NATURVETENSKAP OCH TEKNIK Utbildningsplan Dnr CF 52-527/2009 Sida 1 (7) PROGRAMMET FÖR SIMULERINGS- OCH DATASPELSTEKNIK, 180 HÖGSKOLEPOÄNG Programme in Simulation and Computer Games Technology,
Fyra i rad Javaprojekt inom TDDC32
Fyra i rad Javaprojekt inom TDDC32 Analys och design-dokument Version 2.0 Datum 2008-05-19 Dokumentnummer 20080303 Sammanfattning Detta är analys och design-dokumentet för programmet Fyra i rad. Fyra i
729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo
729G75: Programmering och algoritmiskt tänkande Tema 1. Föreläsning 1 Jody Foo Föreläsningsöversikt Kursinfo / Om kursen Algoritmer Objektorienterad programmering i praktiken terminologi använda objekt
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5 Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor 1 Laboration 4 - Introduktion Syfte: Öva på självständig problemlösning
Snake. Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola,
Snake Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola, 2015-05-18 Oskar Petersen, I-12 Handledare: Bertil Lindvall Abstract Denna rapport beskriver ett projekt där ett klassiskt
PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN
KUNGLIGA TEKNISKA HÖGSKOLAN PROGRAMMERING I NXC Namn: Michel Bitar 2012-08- 25 E- post: mbitar@kth.se Introduktionskurs i datateknik, II1310 Sammanfattning Intressant och lärorik laboration om att programmera
Varför ska man använda ett CMS? Vilka är fördelarna och är det alltid bra? Kattis Lodén 2010-03-18
Varför ska man använda ett CMS? Vilka är fördelarna och är det alltid bra? Kattis Lodén 2010-03-18 Innehåll Inledning... 3 Fakta... 4 Innehåll... 4 Texthantering... 4 Granskning och versionshantering...
SCHEMA FÖR SLUTPRESENTATIONER
SCHEMA FÖR SLUTPRESENTATIONER Examensarbete med inriktning mot dataspel design - juni 2015 Nedan presenteras schemat för presentationer och opponering för kandidatarbeten med inriktning mot dataspel design.
Multithreading in Intel Pentium 4 - Hyperthreading
Multithreading in Intel Pentium 4 - Hyperthreading Sammanfattning Hyper-threading är en implementation av SMT(Simultaneous Multithreading) teknologi som används på Intel processorer. Implementationen användes
Föreläsning 2: Datainsamling - Observation, enkät, intervju. Att läsa: Kapitel 2 och 3 i Stone et al.: User Interface design and evaluation
Föreläsning 2: Datainsamling - Observation, enkät, intervju Att läsa: Kapitel 2 och 3 i Stone et al.: User Interface design and evaluation Stjärnmodellen Analys Utvärdering Implementation Prototyper Krav
Föreläsning 2: Datainsamling - Observation, enkät, intervju. Att läsa: Kapitel 2 och 3 i Stone et al.: User Interface design and evaluation
Föreläsning 2: Datainsamling - Observation, enkät, intervju Att läsa: Kapitel 2 och 3 i Stone et al.: User Interface design and evaluation Stjärnmodellen Analys Utvärdering Implementation Prototyper Krav
The true story of Stored Force. by O. Tedenstig 2007. Abstrakt
The true story of Stored Force by O. Tedenstig 2007 Abstrakt Stored Force är ett begrepp som myntades på FACIT i samband med marknadsföring och reklam för de populära kontors- och industriskrivarna 4540-44.
TDDD78 projekt: Tower Defence
projekt: Tower Defence 1 Introduktion Tower Defence är en kategori av spel med rötter till 1980-talet som går ut på att försvara en punkt (ofta symboliserat som en bas eller by) från horder av monster
SKOLFS. beslutade den -- maj 2015.
SKOLFS Föreskrifter om ändring i Skolverkets föreskrifter (SKOLFS 2010:247) om ämnesplan för ämnet programmering i gymnasieskolan och inom kommunal vuxenutbildning på gymnasial nivå; beslutade den -- maj
Strukturering och Planläggning
Strukturering och Planläggning 9 November 2005 I början av projektet försökte vi strukturera upp arbetet och få en bättre översikt över vad projektet innebar. Direkt satte vi igång med att producera hemsidan
PROCEDURELLT GENERERADE GROTTNIVÅER
Malskapada v Henrik PROCEDURELLT GENERERADE GROTTNIVÅER En jämförelse mellan cellulära automater och diffusionsbegränsad aggregation PROCEDURALLY GENERATED CAVE LEVELS A comparison between cellular automata
Introduktion till programmering med hjälp av Lego Mindstorm
Kungliga Tekniska Högskolan Introduktion till programmering med hjälp av Lego Mindstorm Laborationsrapport gällande programmering inom NXC Simon Jansson 31 08 2014 simonjan@kth.se Introduktionskurs i datateknik
Rune Tennesmed. Oskar Norling 1DV430. Individuellt Mjukvaruutvecklingsprojekt 1DV430 Webbprogrammerare H12 Oskar Norling
Rune Tennesmed Oskar Norling Individuellt Mjukvaruutvecklingsprojekt Webbprogrammerare H12 Oskar Norling 2012-05-30 Abstrakt Denna rapport handlar om mitt mjukvaruutecklingsprojekt som jag och en klasskompis
Hyper Threading Intels implementation av SMT. Datorarkitekturer med operativsystem - EITF60. Felix Danielsson IDA2
Hyper Threading Intels implementation av SMT Datorarkitekturer med operativsystem - EITF60 Felix Danielsson IDA2 Sammanfattning Simultaneous multithreading (SMT) är en teknik som används i processorer
Labbrapport - LEGO NXT Robot
KUNGLIGA TEKNISKA HÖGSKOLAN Labbrapport - LEGO NXT Robot Programmering och felsökning Stefan Sarkis 2014-09-02 ssarkis@kth.se Introduktionskurs i datateknik (II1310) Sammanfattning Denna rapport handlar
Rafel Ridha Projektdefinition
Rafel Ridha Projektdefinition Utveckling av applikation för Windows Phone Dokumenttitel Projektdefinition Dokumentförfattare Rafel Ridha Dokumentnamn Projektdefinition xx.pdf Version 0.3 E-post rafelr@kth.se
Decentraliserad administration av gästkonton vid Karlstads universitet
Datavetenskap Opponent(er): Markus Fors Christian Grahn Respondent(er): Christian Ekström Per Rydberg Decentraliserad administration av gästkonton vid Karlstads universitet Oppositionsrapport, C/D-nivå
F12: Användarna i fokus
F12: Användarna i fokus Användarcentrerad design och modellering av användare Användarcentrerad design Motiv till detta Hur kan man göra? Olika synsätt Användarna i fokus 2 Varför ska användarna vara med?
Configuration testing Why? Vad det är tänkt att koden ska göra. Performance testing Kommentarer Skriva om koden som kommentar
Skapa testfall Testing Köra testen Hitta fel Inspections and reviews Verifiera resultatet Formal methods Static analysis Completeness Verifiering Kvalitet Maintainability Validering Traceability Fault
Endless shooter neon - Post mortem
Endless shooter neon - Post mortem Markus Lok Axelsson Abstrakt Följande rapport berör ett mjukvaruutvecklingsprojekt som pågått under tio veckor på våren 2013. Projektet var ett tvådimensionellt datorspel
Objektorientering i liten skala
Linköpings Universitet Institutionen för datavetenskap (IDA) UPP-gruppen 2012-10-24 Objektorientering i liten skala Mål I denna lab skall du skriva ett objektorienterat program. Programmet skall delas
SLALOMINGÅNGAR hur svårt kan det vara?
SLALOMINGÅNGAR hur svårt kan det vara? Av Marie Hansson Ju mer man börjar tänka på vad en slalomingång innebär, desto mer komplicerat blir det! Det är inte lite vi begär att hundarna ska lära sig och hålla
DATA- OCH INFORMATIONSTEKNIK
DATA- OCH INFORMATIONSTEKNIK DIT921 Masteruppsats i Data Science, 60 högskolepoäng Master's Thesis in Data Science, 60 credits Fastställande Kursplanen är fastställd av Institutionen för data- och informationsteknik
Alternativa rutter med tidsbegränsning via en dubbelriktad modifiering av Dijkstra s algoritm
AKADEMIN FÖR TEKNIK OCH MILJÖ Avdelningen för industriell utveckling, IT och samhällsbyggnad Alternativa rutter med tidsbegränsning via en dubbelriktad modifiering av Dijkstra s algoritm Viktoria Edström
CDC en jämförelse mellan superskalära processorer. EDT621 Campus Helsingborg av: Marcus Karlsson IDA
CDC6600 - en jämförelse mellan superskalära processorer av: Marcus Karlsson Sammanfattning I denna rapport visas konkret information om hur den första superskalära processorn såg ut och hur den använde
Digitalt lärande och programmering i klassrummet
4 september 2017 Digitalt lärande och programmering i klassrummet Introduktion till Twine Introduktion Twine är en spelmotor gjord för textbaserade spel och interaktiva berättelser. I Twine kopplas korta
Föreläsning 1: Introduktion till kursen
(18 januari 2015 F1.1 ) Föreläsning 1: Introduktion till kursen Lärare: Anna, Carl, Johan, Tom och ca 20 assistenter Registrering / avregistrering Undervisningsformer: föreläsningar och laborationer Kursmaterial
IBSE Ett självreflekterande(självkritiskt) verktyg för lärare. Riktlinjer för lärare
Fibonacci / översättning från engelska IBSE Ett självreflekterande(självkritiskt) verktyg för lärare Riktlinjer för lärare Vad är det? Detta verktyg för självutvärdering sätter upp kriterier som gör det
Viewers i alla former.
Viewers i alla former. För dig som användare spelar det ingen roll hur bra programmet är om det inte fyller dina behov. Eftersom det finns så många olika viewers för så många olika filformat och användningsområden
Föreläsning 2: Datainsamling - Observation, enkät, intervju. Att läsa: Kapitel 7 i Rogers et al.: Interaction design
Föreläsning 2: Datainsamling - Observation, enkät, intervju Att läsa: Kapitel 7 i Rogers et al.: Interaction design Stjärnmodellen Analys Utvärdering Implementation Prototyper Krav Design 100326 Datainsamling
Procedurell grottgenerator och eld i GLSL. Marcus Widegren
Procedurell grottgenerator och eld i GLSL Marcus Widegren 14 januari 2012 Innehåll 2 Sammanfattning Jag har gjort en enkel procedurell grottgenerator i GLSL och C++. För belysning används en fackla, som
Process- och metodreflektion Grupp 5
Process- och metodreflektion Grupp 5 IDM Grupp 5 Anders Fougstedt, Anders Green, Lay Truong, Anna Sjödin, Tobias Kask Val av metoder Det första steget i vår designprocess var att bestämma vilka metoder
KONSTFACK Institutionen för design, inredningsarkitektur och visuell kommunikation KURSPLAN
KONSTFACK Institutionen för design, inredningsarkitektur och visuell kommunikation KURSPLAN Breddning av industridesign Broadening of Industrial design 27,5 högskolepoäng / 27,5 credits Kurskod: IDK215
Joakim Jonsson jj222kc. Minesweeper. Individuellt Mjukvaruprojekt Joakim Jonsson
Minesweeper Individuellt Mjukvaruprojekt Joakim Jonsson 08 06 2013 Abstrakt Nedan följer en slutrapport för projektet inom kursen Individuellt Mjukvaru utvecklingsprojekt. Jag har under dessa 10 veckor
Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot
KUNGLIGA TEKNISKA HÖGSKOLAN Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot Josef Karlsson Malik 2015-09- 02 jkmalik@kth.se Introduktionskurs i datateknik (II0310) Sammanfattning
Real-time requirements for online games
Real-time requirements for online games En undersökning om protokoll, tekniker och metoder som datorspel använder för att kommunicera över Internet Victor Grape Milad Hemmati Linköpings universitet Linköping
Tentamen Datastrukturer (DAT036)
Tentamen Datastrukturer (DAT036) Det här är inte originaltesen. Uppgift 6 var felaktigt formulerad, och har rättats till. Datum och tid för tentamen: 2011-12-16, 8:30 12:30. Ansvarig: Nils Anders Danielsson.
Ekvivalensrelationer
Abstrakt datatyp för disjunkta mängder Vi skall presentera en abstrakt datatyp för att representera disjunkta mängder Kan bl.a. användas för att lösa ekvivalensproblemet avgör om två godtyckliga element
Portfolio Johan Brink
Portfolio Johan Brink Index Kontakt s. 1 Rock N Rull s. 2-3 Clandestine s. 4-5 Examensarbete: Spelardrivet narrativ s. 6 PERSONUPPGIFTER Namn Johan Brink Född 1982/12/29 Kön Man KONTAKTUPPGIFTER Mobil
Laborationer i SME094 Informationsteknologi I för
Laborationer i SME094 Informationsteknologi I för basår Programmering av LEGO Mindstorms med ROBOLAB Johan Carlson Luleå tekniska universitet Inst. för Systemteknik EISLAB Email: johanc@ltu.se 25 mars
Objektorienterad programmering
Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad
Projektpresentation. Kungliga Tekniska Högskolan 2D1954 Programutvecklingsprojekt Vårterminen 2002
Kungliga Tekniska Högskolan 2D1954 Programutvecklingsprojekt Vårterminen 2002 Projektpresentation Projekt Alpha Panic Uppdragsgivare: IABA, Institutet för Tillämpad Beteendeanalys Alex Olwal Oskar Rönnberg
SPELET CAVE GENERATION: EN STUDIE OM PROCEDURELL GENERERING I 2D-PLATTFORMSSPEL
SPELET CAVE GENERATION: EN STUDIE OM PROCEDURELL GENERERING I 2D-PLATTFORMSSPEL Examensarbete Systemarkitekturutbildningen Nick Johannesson Simon Kevin VT 2018:KSAI07 Systemarkitekturutbildningen är en
Kursplanering Objektorienterad programmering
Kursplanering Objektorienterad programmering Fakta Ämne Programmering Poäng 40 Yh-poäng Kurskod YSYS-OOP Klass Systemutvecklare.NET 2 Syfte och koppling till yrkesrollen Syftet är att få en stabil grund
3/30/12. Föreläsning 2: Datainsamling - Observation, enkät, intervju. Stjärnmodellen. Översikt. Analys. Prototyper Krav. Design
Föreläsning 2: Datainsamling - Observation, enkät, intervju Att läsa: Kapitel 7 i Rogers et al.: Interaction design Stjärnmodellen Analys Utvärdering Implementation Prototyper Krav Design 100326 Datainsamling
Designmönster, introduktion. Vad är det? Varför skall man använda mönster?
Designmönster, introduktion. Vad är det? Varför skall man använda mönster? Kent Petersson EMW, Mölndal Datavetenskap, Chalmers epost1: kentp@cs.chalmers.se epost2: kent.petersson@emw.ericsson.se URL: http://www.cs.chalmers.se/~kentp
Gymnasiearbetet för det naturvetenskapliga programmet
Gymnasiearbetet för det naturvetenskapliga programmet Pär Leijonhufvud 2017-08-29 Innehåll Syfte.................................... 2 Arbetsformer............................... 2 Rapporten.................................
HF0010. Introduktionskurs i datateknik 1,5 hp
HF0010 Introduktionskurs i datateknik 1,5 hp Välkommna - till KTH, Haninge, Datateknik, kursen och till första steget mot att bli programmerare! Er lärare och kursansvarig: Nicklas Brandefelt, bfelt@kth.se
En modell för att generera beteendemönster baserat på Smart Terrain
Teknik och samhälle Datavetenskap Examensarbete 15 högskolepoäng, grundnivå En modell för att generera beteendemönster baserat på Smart Terrain A Smart Terrain based model for generating behavioural patterns
Externa mediekort. Dokumentartikelnummer: I den här handboken beskrivs hur du använder externa mediekort. Maj 2006
Externa mediekort Dokumentartikelnummer: 409916-101 Maj 2006 I den här handboken beskrivs hur du använder externa mediekort. Innehåll 1 Plats för digitalmediekort (bara vissa modeller) Sätta i ett digitalkort.............................
En sammanfattning Implementeringsutvärdering av Beslutsstöd i tre kommuner
En sammanfattning Implementeringsutvärdering av Beslutsstöd i tre kommuner - Examensarbete av Lina Smith och Petra Hansson, socionomprogrammet inriktning verksamhetsutveckling, Malmö Högskola Kontakt:
TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET
UMEÅ UNIVERSITET Datavetenskap 010824 TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET Datum : 010824 Tid : 9-15 Hjälpmedel : Inga Antal uppgifter : 7 Totalpoäng : 40 (halva poängtalet krävs normalt
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Sortering Selectionsort, Bubblesort,
SVÄRM-AI I SHOOTERS SWARM-AI IN SHOOTERS
Malskapada v Henrik SVÄRM-AI I SHOOTERS SWARM-AI IN SHOOTERS Examensarbete inom huvudområdet Datavetenskap Grundnivå 30 högskolepoäng Vårtermin 2015 Jonas Hallin Handledare: Mikael Johannesson Examinator:
Språkäventyret. Mål. Verktyg. Inledande arbete
Språkäventyret Mål Sammanfatta hur jag gjorde spelet Språkäventyret på Fronter. Verktyg Fronters provverktyg Inledande arbete Fundera över dessa saker innan du börjar: 1. Vilken del av det centrala innehållet