• No results found

Dynamisk kunskapsspridning mellan spelkaraktärer genom konversationer

N/A
N/A
Protected

Academic year: 2021

Share "Dynamisk kunskapsspridning mellan spelkaraktärer genom konversationer"

Copied!
61
0
0

Loading.... (view fulltext now)

Full text

(1)

Fakulteten för teknik och samhälle Datavetenskap

Examensarbete 15 högskolepoäng, grundnivå

Dynamisk kunskapsspridning mellan spelkaraktärer genom

konversationer

Dynamic spread of knowledge among non-playing characters through conversations

Jonathan Rappner

(2)
(3)

Resumé

I dagens allt mer stora och öppna RPG-spel (role-playing game) finns behovet av ett system som kan sprida kunskap om spelvärlden eller aktiviteter till spelaren genom konversationer med spelets NPC:er (non-playing characters). Problemet med dagens spel såsom The Elder Scrolls V: Skyrim[23] är att de NPC:er som har tänkts förmedla sådan här kunskap till spelaren, tilldelas den artificiellt beroende på hur långt spelaren har kommit i spelet. Detta upplevs ofta som orealistiskt då dessa spel mestadels utspelar sig i fantasy-världar utan direktkommunikation såsom telefon, radio, etc. Kunskap bör alltså inte färdas snabbare än vad någon enskild spelkaraktär kan färdas. Då är det självklart att spelare upplever det som orealistiskt när NPC:er har kunskap om tidigare händelseförlopp i spelet där spelaren själv var inblandad, innan de ens har träffat NPC:n.

Syftet med det här arbetet är att ta fram ett mer sofistikerat system där kunskap om spelvärlden och om aktiviteter åt spelaren, färdas mun-till-öra mellan NPC:erna. Spelaren kan sedan starta konversationer med diverse NPC:er för att själv samla på sig denna kunskap. T.ex. om var en skatt ligger begraven eller om en drake som behöver dräpas.

Varje NPC kommer att ha rutiner och kommer befinna sig på olika platser vid olika tider på dygnet. De kommer konversera med olika typer av NPC:er och kommer ha olika personligheter som avgöra vilken kunskap de vill förmedla vidare och till vem.

Vi finner att vi, i implementationen kan skapa ett system där NPC:er följer rutiner som bestämmer var de befinner sig under dagen samt ett konversationssystem som använder deras tilldelade personlighetsattribut för att få dem att samtala med diverse andra NPC:er och på så sätt sprida kunskapen genom spelvärlden. Dock finner vi även att ett mer avan-cerat rutin- och konversationssystem tillsammans med mer välplanerade rutiner hade gett ett bättre resultat.

(4)

Abstract

In today’s ever larger and more open RPG-games (role-playing game) there is a need for a system that can spread knowledge about the game world or of quests for the player through conversations with the game’s NPCs (non-playing characters). The problem with games like The Elder Scrolls V: Skyrim (Bethesda Softworks 2011) is that the NPCs that are meant to share their knowledge to the player are artificially given that knowledge depending on how far the player has progressed through the game. This is often perceived as unrealistic as these games mostly take place in fantasy worlds where there is no direct communication such as telephones or radio. This means that knowledge shouldn’t be able to travel faster than any game character could. It is no surprise then that players find it unrealistic when NPCs know about some previous event that the player partook in, before they’ve even met.

The purpose of this project is to develop a more sophisticated system where knowledge about the game world and about quests for the player, travels via word of mouth between the NPCs. The player can then start conversations with NPCs to collect this knowledge. E.g. about the location of a buried treasure or a dragon somewhere that needs to be slain. Each NPC will have certain routines and will be located in different places at different times of the day. They will all converse with different types of other NPCs and will have different personalities which determines what knowledge they want to share and to whom. We find that we can, in the implementation create a system where NPCs follow routines which decides where they go during the day. And a conversation system that uses their given personality traits to make them to converse with various other NPCs in the game world. However, we also find out that a more advanced routine and conversation system together with a more better planned set of routines could give a better result.

(5)
(6)

Innehåll

1 Inledning 2

1.1 Ordbok . . . 3

1.2 Bakgrund . . . 3

1.2.1 Role-playing games . . . 3

1.2.2 Konversationer med NPC:er . . . 3

1.3 Tidigare forskning . . . 4

1.3.1 Dynamiska berättelser . . . 4

1.3.2 NPC-konversationer . . . 5

1.3.3 NPC som lär sig om omvärlden . . . 5

1.3.4 Trovärdiga agenter . . . 6 1.4 Problembeskrivning . . . 6 1.5 Frågeställningar . . . 6 1.6 Avgränsningar . . . 6 2 Metod 7 2.1 Metodbeskrivning . . . 7 2.2 Litteraturstudie . . . 7 2.3 Implementationen . . . 8 2.4 Scenarier . . . 9 3 Implementation 9 3.1 Spelvärlden . . . 9 3.2 Tid . . . 10 3.3 Non-playing Characters . . . 11 3.4 Byggnader . . . 11 3.5 Rutiner . . . 11 3.6 Kunskapsobjekt . . . 12 3.7 Uppdateringscykler . . . 12 3.8 Konversationer . . . 13 3.9 Konversationsalgoritmen . . . 13 3.10 Inspektionsverktyget . . . 14 3.11 Dold Markovmodell . . . 14 4 Resultat 15 4.1 Grafisk representation och skärmdumpar . . . 15

(7)

4.3 Scenario 2 . . . 17 4.4 Scenario 3 . . . 18 4.5 Special-simuleringar av Scenario 1 . . . 19 4.6 Regisserade scenarier . . . 20 4.6.1 Scenario A . . . 20 4.6.2 Scenario B . . . 21 5 Analys 22 6 Diskussion 26 7 Slutsats 27 8 Vidare forskning 28 Referenser 29 A Händelseförlopp 31 A.1 Scenario 1 . . . 31 A.1.1 Översikt . . . 31 A.1.2 By 1 . . . 32 A.1.3 By 2 . . . 32 A.1.4 By 3 . . . 32 A.1.5 By 4 . . . 33 A.2 Scenario 2 . . . 33 A.2.1 Översikt . . . 33 A.2.2 By 1 . . . 34 A.2.3 By 2 . . . 34 A.2.4 By 3 . . . 35 A.2.5 By 4 . . . 35 A.3 Scenario 3 . . . 35 A.3.1 Översikt . . . 35 A.3.2 By 1 . . . 36 A.3.3 By 2 . . . 36 A.3.4 By 3 . . . 36 A.3.5 By 4 . . . 36 B Figurer 37 B.1 Grafer . . . 38

(8)
(9)

1

Inledning

De flesta av dagens RPG-spel (role-playing games) simulerar öppna världar där spelaren släpps fri till att utforska sin omgivning för att själv finna aktiviteter att utföra. Detta i jämförelse med den äldre modellen där spelaren får uppleva mer eller mindre samma berät-telseförlopp vid varje spelning. Strukturen och handlingen i den öppna modellen kommer i form av uppdrag. Dessa uppdrag placeras ut för hand och förmedlas till spelaren ge-nom animationssekvenser eller konversationer med NPC:er (non-playing characters) som alltid sker på samma sätt och med samma karaktärer. De står i stark kontrast till resten av aktiviteterna i spelet som kan utspelas dynamiskt, helt utan något tidigare utarbetat manus[8].

Det är inte bara kännedomen om uppdrag åt spelaren som kan förbättras, även sprid-ningen av kunskap om spelarens tidigare aktiviteter, simuleras inte. NPC:er vet om nästan allt vad spelaren har gjort tidigare oberoende av hur långt bort det skedde eller om det i huvud taget fanns några vittnen. De förmedlar senare detta till spelaren på olika sätt genom konversationer och andra interaktioner.

Målet med det här arbetet är att vi ska skapa ett mer avancerat system där kunskap uppsamlas, sprids och förmedlas till spelaren på ett helt dynamiskt sätt. NPC:er som skaffar sig en viss kunskap (t.ex. att en livsfarlig drake har flyttat in i en närliggande grotta) tar denna med sig till platser de besöker. Väl där förmedlar de kunskapen till andra NPC:er beroende på deras personlighet och var de färdas. Alla NPC:er har olika rutiner och personligheter som påverkar var och hur kunskapen sprids. Det skapar en mer intressant miljö där spelaren inte alltid vet vem som vet vad utan måste istället lista ut det genom konversationer eller egen bedömning.

Kunskap om en drake som terroriserar en närliggande by, kan spridas fort och långt medan kunskap om ett mord kanske inte sprids alls. Kanske för att det inte fanns några vittnen eller för att det enda vittnet inte vågar berätta någon om det. NPC:er kan vara pratglada eller tystlåtna. De värderar en del kunskap högt och värd att sprida, annan lågt och håller den för sig själv. En del reser från by till by medan andra håller sig runt sitt hem hela dagarna.

(10)

1.1 Ordbok

• RPG Role-playing game. En kategori av spel där spelaren kontrollerar en karaktär i en beständig värld fylld med andra datorkontrollerade karaktärer.

• NPC Non-playing character. Datorkontrollerade karaktärer.

• FSM Finite State Machine. En mjukvarumodell där objekt befinner sig i ett läge åt gången och byter detta läge endast när specifika krav uppnås.

• Fuzzy Logic En mjukvarumodell som tar binära beslut (ja eller nej) baserat på en mängd numerära värden.

• Steady State Det slutgiltiga läget i en självständig simulering där inga nya föränd-ringar sker.

1.2 Bakgrund

1.2.1 Role-playing games

Role-playing games eller RPG-spel är en genre av datorspel med djupa rötter i brädspels-världen. Spel av båda genrerna går ut på att en eller flera spelar kontrollerar en karaktär var. Varje karaktär har en mängd heltalsvärden som representerar hur skicklig han eller hon är på att t.ex. smyga eller skjuta med pilbåge. Den diskuterbart huvudsakliga aktiviteten i sådana här spel är att använda sin karaktär för att slåss mot spelvärldens många monster och motståndare. Detta för att skaffa sig erfarenhetspoäng och ’gå upp i nivå’, skaffa sig bättre rustning och vapen eller för att avancera spelets handling.

Spelarens aktiviteter ges struktur och handlingen berättas med hjälp av uppdrag (eng. quest). Här får spelaren uppdragets anknytning till spelets handling och instruktioner om hur han eller hon bör gå till väga. Detta sker oftast men inte alltid, vid en konversation med en NPC. När uppdraget är utfört får spelaren en belöning och ibland tillgång till nya uppdrag. Uppdragen delas ofta ut i en serie där en isolerad historia berättas.

En växande trend inom spelindustrin är utveckla den öppna varianten av RPG-spel. Även kallat sandbox. Till skillnad från mer restriktiva spel där spelarens äventyr går från kapitel, till kapitel som i en bok så ligger uppdragen utspridda i spelvärlden, i den öppna varianten. Spelaren kan själv upptäcka nya uppdrag och välja när han eller hon ska utföra dem. Om de väljer att utföra dem i huvudtaget.

1.2.2 Konversationer med NPC:er

Konversationer mellan spelaren och NPC:er är den huvudsakliga metoden som används för att dela ut uppdrag och att förmedla kunskap om spelvärlden till spelaren. Han eller hon kan starta en konversation med de flesta NPC:er, oftast genom att gå fram till dem och trycka på en knapp på tangentbordet. Då öppnas ett grafiskt gränssnitt med konver-sationsalternativ. Spelaren väljer sedan vad han eller hon vill säga till NPC:n och får svar i text eller ett röst-ljudklipp.

(11)

Konversationer mellan NPC:er däremot är mer praktiska. De kräver inga dialogval eller tal-liknande konversationer och är den här aspekten som det här arbetet kommer att fokusera på. Konversationerna sker alltså endast med data-variabler som överförs i kod.

1.3 Tidigare forskning

Det verkar inte finnas något tidigare arbete som undersöker kunskapsspridning mellan spelkaraktärer på samma sätt som i det här arbetet. Däremot finns det flera med liknande slutmål eller som hanterar liknande aspekter av implementeringen.

1.3.1 Dynamiska berättelser

Här bygger man eller diskuterar implementationer vars händelseförlopp utfaller dynamiskt allteftersom de körs. Det är NPC:erna som driver storyn genom sina handlingar. De ges personlighetsdrag och mål att uppnå, de kan manipulera sin omvärld eller samtala med andra NPC:er, de väljer vilken kunskap de vill förmedla och kan till och med ljuga för att uppnå sina mål.

Riedl och Young [18] talar om system där spelagenter själva skapar storyn genom att ta beslut för att uppnå sina förutsatta mål. Storyn blir då dynamiskt och skapas allteftersom av systemet själv istället för en författare. De kommer fram till att förutsättningarna i spelvärlden är oerhört viktiga. Händelseförlopp kan upphöra och agenternas mål kan bli omöjliga att uppnå om de inte har rätt förutsättningar. Samma författare skriver i en annan artikel [16] att det är viktigt att spelkaraktärerna beter sig på ett trovärdigt sätt. Detta ser till att spelaren får chansen att förutspå vad NPC:erna kommer att göra i framtiden för att uppnå sina mål eller vad det har gjort i det förflutna för att hamna i sin nuvarande situation. De hävdar att det är viktigt att spelaren har någon slags uppfattning om vad som händer på platser och under tider där de inte befinner sig för tillfället. Det blir då viktigt att spelkaraktärerna agerar på eget bevåg snarare än att bli styrda av ett manus. I en tredje artikel[17] tacklar de uteslutande problem som spelare kan orsaka när de ges makten att påverka agenternas interaktion. Dessa problem ligger utanför detta arbetes omfattning och delvis p.g.a. den här artikeln, väljer vi att inte inkludera en spelare i implementationen.

Mateas m.fl.[13] skriver om hur de planerar att bygga ett mer eller mindre fullfjädrat spel med dynamiskt agerande spelkaraktärer. De, till skillnad från Riedl och Stern väljer att använda en så kallad regissör som styr och påverkar spelagenterna för att regissera storyn. Själva väljer vi den första metoden där agenterna agerar självständigt.

(12)

Cavazza m.fl.[6] styrker uppfattningen om att händelseförlopp i spel kan göras mer intressanta när de styrs av spelagenterna. Deras implementation innehåller slumpmässiga faktorer som gör att slutresultatet inte går att förutspå. De studerar därför variationerna i utfallen som simuleringarna av deras implementation ger. Precis som vårt arbete ser de sitt eget som ett första steg där smådetaljer kan hamras ut och problem kan identifie-ras. Framtida arbeten kan sedan utöka komplexiteten, lösa tidigare problem och undvika förutspådda.

1.3.2 NPC-konversationer

Dessa arbeten handlar om NPC:er som kommunicerar med människoliknande tal, dels system som bygger konversationer men även system som väljer vad NPC:erna ska säga och kommunicera. I vårt fall är det intressant att se vad som bestämmer vad NPC:erna väljer att tala om och hur det implementeras.

Larsson[11] skapar en implementation där testpersoner för dialoger med spelkaraktärer. Han hävdar att trenden i spelindustrin går mot mer komplicerade konversationer med alltmer trovärdiga karaktärer, att det från spelarens synvinkel är karaktärerna som driver storyn. Hans arbete har ingen direkt koppling till vårt men hans uppfattning om hur industrin ser ut idag och kommer se ut i framtiden stämmer med vår egen och hjälper att motivera problemet.

Brusk[4] tar fram en modell för hur själva NPC-konversationerna bör ske. Här kan vi dra inspiration och få hjälp med utvecklingen av implementationen. Vi lär oss att NPC:ers attribut och relationer kan användas för att bestämma om en konversation ska ske eller inte. Vi lär oss även vikten av att finjustera och balansera av dessa värden.

Khosmood och Walker[10] skapar Grapevine som är ett konversationsgenererings-system. Även detta är till för att konstruera dialoger och har inte en direkt koppling till våran im-plementation. Dock använder det personlighetsattribut precis som vi gör för att bestämma vad som sägs.

1.3.3 NPC som lär sig om omvärlden

En vanligt inriktning är att skapa NPC:er som tar beslut baserat på begränsad kunskap. Till skillnad från det här arbetet så använder NPC:erna själva sin kunskap. Vad som är intressant här är att de samlar på sig kunskap som sedan kan överföras mellan varandra eller till en spelare. Hlubocky och Amir[7] planerar att bygga en implementation när NPC:er lär sig om sin omvärld genom att först observera den.

De kan sen berätta vad de lärt sig till andra NPC:er eller spelaren. Oertel och Amir[15] bygger en liknande implementation där fokus istället ligger på vilken kunskap NPC:erna ska behålla och använda.

(13)

1.3.4 Trovärdiga agenter

Det finns en stor mängd artiklar som kanske inte direkt hanterar vår problemställning eller implementation men styrker vår uppfattning om problemet med stela, icke trovärdiga och förutsägbara NPC:er existerar och bör lösas. I flertalet artiklar [1, 2, 3, 9, 12, 14, 16] finner vi ett genomgående tema. Man anser att utvecklingen av spel-AI under det senaste årtiondet inte håller måttet samt att AI-agenter bör styra storyn i spel till skillnad från ett manus. Publicerings-åren för artiklarna sträcker sig från 2001 t.o.m. 2014 så problemet verkar sannerligen inte ha blivit löst än. Man vill se agenter med långsiktiga mål att lösa, flera agenter som samarbetar för att lösa problem, agenter som samlar på sig kunskap som de senare kan återberätta för spelaren, för att nämna några. Målet med detta är att vidareutveckla aspekten av trovärdiga agenter i spelvärldar.

1.4 Problembeskrivning

Syftet med det här arbetet är att ta fram ett system för RPG-spel där NPC:er samlar på sig kunskap om spelvärlden och sprider den vidare dynamiskt genom konversationer med andra NPC:er. Arbetet ska även fokusera på hur NPC:ernas vardagliga aktiviteter, personlighetsdrag och resemönster genom spelvärlden, påverkar spridningen av kunskapen. Den ska sedan kunna användas för att informera spelaren om hur spelvärlden ser ut och vad som händer.

Förhoppningen är att detta ska skapa en mer verklighetstrogen upplevelse än vad som finns i dagens spel där inlevelsen inte bryts p.g.a. NPC:er som vet om saker de inte borde och där spelaren inte alltid vet om vem, som vet vad. Spelaren ska kunna använda sin list och bedömning för att skaffa sig kunskap om diverse aktiviteter och uppdrag i spelet.

1.5 Frågeställningar

• Hur kan man skapa ett system där kunskap en spelvärld sprids via dess NPC:er? • Vid tester, hur sprids kunskapen? Var sprids den? Och hur lång tid tar det? 1.6 Avgränsningar

• Den kunskap som sprids i systemet av NPC:erna är inte avsedd att användas av dem själva på något sätt. Den är endast tänkt att vara användbar för och användas av spelaren. Fokus ligger på hur kunskapen sprids, inte hur den används. Ett system där NPC:er ändrar rutiner eller personlighetsdrag allteftersom det körs är ett minst lika komplext ämne som vårat kunskapsspridnings-system och vi väljer att fokusera på ett ämne i taget.

• I arbetet kommer inte spelaren representeras i spelvärlden. Vi kommer istället kon-centrera oss på hur implementationen fungerar och hur kunskapen sprids i testerna. En spelare kommer inte behövas för att hämta information från NPC:erna då detta kan göras enklare med ett inspektionsverktyg. Arbetet kommer heller inte att

(14)

foku-• Vi kommer inte låta NPC:er ljuga för varandra eller missuppfatta konversationer. NPC:er kommer att kunna bestämma om kunskap förs vidare eller inte beroende på deras personlighetsdrag. Att ge dem makten att även kunna förvränga denna kunskap skulle bredda arbetet allt för mycket.

2

Metod

2.1 Metodbeskrivning

Vi börjar med att utföra en litteraturstudie för att ta reda på om det finns tidigare ar-beten som berör problemställningen. De kan hjälpa oss med implementationen, motivera problemställningen och försäkra oss att problemet inte redan är löst. Därefter bygger vi en implementation som innehåller de system vi behöver för att kunna simulera kunskapssprid-ningen mellan NPC:erna. Som del i uppbyggnaden av implementationen behöver vi även göra finjusteringar av de variabler vi använder. De måste fungera på ett sådant sätt att de producerar användbara och intressanta resultat. Implementationen ska användas som ett proof of concept där vi helt eller delvis besvarar problemställningen.

I slutdelen av arbetet simulerar vi olika scenarier, med olika förutsättningar för att visa hur händelseförloppen skiljer sig. Därefter dokumenterar vi dem i detalj samt beskriver och analyserar vad som har hänt.

2.2 Litteraturstudie

För att finna kunskap som kan hjälpa till i utvecklingen av implementationen samt för att se till att arbetet verkligen är unikt och bidrar med kunskap så börjar vi med att utföra en litteraturstudie. Båda målen förväntas uppfyllas genom att söka efter vetenskapliga artiklar med ämnen som implementationen hanterar. Problemställningen i vårt arbete kan vara något svår att förstå och relatera till om man inte har personlig erfarenhet med den. Därför letar vi även efter litteratur som styrker och motiverar problemställningen.

Vi använder oss av sökmotorn Google Scholar och databaserna ACM, AAAI, Springer och IEEE Xplore. Vi använder sökfraser som npc eller game agent i kombination med knowledge, communication, dialogue och gossip. Det visar sig snabbt att dessa sökfraser inte ger många resultat. Fraserna knowledge och communication används ofta i artiklar angående helt andra ämnen. Dessutom använder sig många av de artiklar vi senare finner, av något luddiga titlar. Titlar som inte alltid talar om att det är NPC:er det handlar om. Lyckligtvis hittar vi fler relevanta artiklar i referenslistorna, i de artiklar vi hittar genom sökningen.

Vi hittar inga artiklar som hanterar specifikt vårt problem men vi finner som stär-ker vår uppfattning om att problemet med stela och dåligt utvecklade NPC:er existerar [1, 2, 3, 9, 12, 14, 16]. Nästan alla försöker lösa problemet med ambitiösa implementatio-ner där agenterna själva plaimplementatio-nerar sina rutiimplementatio-ner för att uppnå förutbestämda mål. En del implementerar kommunikation mellan NPC:erna så att de kan samarbeta för att uppnå dessa mål [6, 16, 17]. Dessa NPC:er försöker övertala varandra och väljer vilken kunskap de vill sprida baserat på attribut bland kunskapen eller varandra. De kommunicerar inte

(15)

med samma mål som oss men vi kan fortfarande dra lärdom av dessa arbeten.

Frågan om vi ska inkludera en spelare som kan påverka NPC:erna och deras rutiner besvaras fort då vi finner några artiklar som berör detta område [6, 13, 17]. De behandlar spelaren som en störande faktor i simuleringar. Som ett problem som måste hanteras separat. Vi väljer därför inte att inkludera en spelare då vi anser att det vore allt för problematiskt att göra det. Vi lär oss också från litteraturstudien att vi inte vill inkludera några slumpmässiga faktorer i huvud taget eftersom det skulle introducera allt för mycket arbete med simuleringar, statistik och analyser.

Bland implementationerna i artiklarna finner vi att det finns två filosofier om hur agenterna ska dirigeras. Autonomt där de själva tar beslut och måste själva ta besluten att interagera med omvärlden för att påverka den [13, 16]. Eller regisserat där en central modul styr dem [1]. Medan B. M. Blumbert m.fl.[2] väljer att försöka kombinera de båda. Vår implementation är dock så pass simpel att dessa skillnader inte riktigt gestaltar sig. Å ena sidan är deras rutiner förutbestämda och styrs centralt. Medan deras beslut angående kommunikation utförs dynamiskt av dem själva.

Såsom i många av artiklarna ser vi vår implementation endast som ett första steg [3, 6, 7, 10, 11, 12, 16, 17]. Det görs klart att problemet vi hanterar i detta arbete är endast en liten del av ett större område. Därför måste vi söndra och härska, och se till att problemet är avgränsat.

Vi finner endast en artikel som hjälper oss direkt med implementationen av J. Brusk [4]. Den fokuserar på överföringen av kunskap mellan NPC:er. Här handlar det dock om NPC:er som kommunicerar för att påverka varandra och inte för att sprida den till en spelare. Artikeln beskriver i detalj hur överföring av kunskap mellan NPC:er skulle kunna ske, algoritmiskt. Dessutom använder man diverse attribut för att avgöra om överföringen kommer att ske eller ej vilket överens med hur vi tänker oss att det ska implementeras.

Vi tar lärdom av slutsatserna i några av arbetena om hur viktigt det är att spelvärlden och NPC:ernas attribut används och justeras på ett sådant sätt att inte omöjliga situatio-ner uppstår [1, 4, 9, 18]. NPC:er kan bli tilldelade variabler som gör att de alltid agerar på ett visst sätt vilket motsträvar ett dynamiskt beteende. Som sista bit av litteratur använder oss av boken Programming Game AI by Example[5] för hjälp i utvecklingen av implementationen.

2.3 Implementationen

Som implementation bygger vi en enkel tvådimensionell värld med byggnader, byar, vägar och NPC:er med diverse rutiner och personliga attribut. Vi använder ett tidssystem uppde-lat i timmar, dagar och veckor som vi förankrar rutinsystemet till. För att kunna analysera scenarierna bygger vi ett inspektionsverktyg. Det ska kunna visa visuellt vilka NPC:er som har kunskapen i spelvärlden och var de är. Den ska också kunna visa deras attribut samt loggar över var kunskapen har färdats och genom vem. Som plattform använder vi spel-motorn Unity[24] med programmeringsspråket C#.

(16)

2.4 Scenarier

Vi simulerar totalt sju scenarier: Scenario 1, 2 och 3 följt av två special-simuleringar av Scenario 1. De två sista kallar vi regisserade scenarier med namnen Scenario A och B. Med dessa demonstrerar vi hur implementationen på ett mer dynamiskt sätt sprider kunskap genom spelvärlden avsett för spelaren. Vi kommer att dokumentera deras händelseförlopp så länge som de fortsätter förändras. När de nått en tidpunkt då inga nya konversationer lyckas (ett så kallat steady state), avslutar vi scenariot.

I Scenario 1 ger vi ett kunskapsobjekt till en välberest NPC som har lätt att sprida kunskapen och som besöker alla större delar av spelvärlden. I Scenario 2 delar vi istället ut kunskapsobjekt till alla NPC:er som besöker en specifik plats. I Scenario 3 ger vi den istället till en annan välberest NPC och väntar några speldagar innan vi gör det. Det enda som skiljer sig mellan de första tre basscenarierna är kunskapens startpunkt, NPC:ernas attribut och rutiner förblir lika.

I de två sista special-simuleringarna kör vi Scenario 1 i två speciallägen där vi ignorerar det ena eller andra av de två personlighetsattributen som används för att bestämma om en konversation kommer att lyckas eller inte. Detta gör vi för att tydligare demonstrera attributens påverkan på scenariernas händelseförlopp.

I de två regisserade scenarierna: A och B sätter vi upp vars ett mål för hur vi vill att kunskapen ska spridas för att sedan justera spelets parametrar så att målen uppfylls. Detta gör vi för att visa hur implementationen skulle kunna fungera som ett riktigt spel där storyn kräver en särskild kunskapsspridning. Utvecklare ska alltså indirekt kunna påverka spridningen av kunskapen för att uppnå önskade händelseförlopp.

Vi dokumenterar sedan händelseförloppen skriftligen, med skärmdumpar och tar ut statistik. På så sätt kommer vi att kunna se vilken effekt NPC:ernas attribut och rutiner har. Vad som fungerar bra eller kanske till och med för bra samt vad som inte gör det. Med denna kunskapen kan vi förhoppningsvis även hitta sätt som implementationen kan vidareutvecklas på.

3

Implementation

3.1 Spelvärlden

I implementeringen representeras spelvärlden och många av dess komponenter över en grafisk tvådimensionell yta. Med byar, byggnader, vägar, vildmark, NPC:er, osv. Det finns fyra byar. En i varje hörn med nio byggnader vardera som representeras av olikfärgade fyrkanter. Det finns även fyra hus utplacerade i vildmarken varav två är eremit-hus och två är bondgårdar befolkade av familjer. Alla byar och byggnader kopplas samman med vägar som representeras av bruna linjer. NPC:er representeras av slumpmässigt färgade cirklar med svarta konturer och överliggande namntext.

(17)

Figur 1: Spelvärlden befolkad med NPC:er.

3.2 Tid

Spelvärlden simulerar tid i veckor, dagar och timmar. Dagar består av 24 timmar och veckor av sju dagar medan veckor representeras av ett enkelt löpnummer utan någon övre gräns. Tiden kan stoppas, återstartas och accelereras av användaren med hjälp av knapptryck på tangentbordet. Detta behövs så av vi i lugn och ro kan inspektera händelseförloppet. Tidsvariablerna används för att aktivera diverse schemalagda aktiviteter och händelser samt att simulera den tid det tar för NPC:erna att utföra dessa aktiviteter såsom att sova, arbeta, förflytta sig från plats till plats osv.

(18)

3.3 Non-playing Characters

Spelvärlden innehåller 47 NPC:er med var sitt namn, rutiner och personlighetsdrag. De flesta bor och arbetar i byarna och rör sig aldrig utanför andra förflyttar sig ofta mellan byarna och vistas länge i vildmarken.

Vi bygger upp spelvärlden så här för att kunna simulera olika typer av karaktärer. T.ex. en kung eller drottning som aldrig rör sig utanför sitt slott eller en resande köpman som stöter en mängd olika karaktärer, på olika platser. På så sätt skapar vi en potentiellt intressant flaskhals som kunskapsobjekten behöver färdas genom.

Varje NPC har två olika personlighetsdrag: hur pratglada de är och deras sociala sta-tus. Båda representeras med ett decimaltal från 0,1 till 1 där ett lägre tal anger en lägre social status eller en mindre pratglad personlighet. Vid varje konversation jämförs de bå-da NPC:ernas sociala status. Desto mindre de skiljer sig, desto högre är chansen att de delar med sig av sin kunskap. Dessa attribut tilldelas NPC:erna för att skapa en slags uppsättning karaktärer man kan tänkas se i ett riktigt spel. Karaktärer som t.ex. prat-glada köpmän, kungligheter, hantverkare, barn, eremiter, osv. En tabell över NPC:ernas personlighetsattribut finns i bilagan.

3.4 Byggnader

En byggnad eller hus är en plats där NPC:er kan konversera med varandra. Varje byggnad har ett id-nummer och en position i koordinatsystemet. En NPC befinner sig antingen i ett hus eller inte. Om implementationen upptäcker att en NPC har en punkt i spelvärlden som ligger inuti en byggnad så tilldelas denne husets id-nummer. Under den uppdateringscykel där NPC:n gjorde entré i byggnaden så letar den efter andra NPC:er som befinner sig i samma byggnad. Om den finner någon så försöker den initiera en konversation med dem. När detta har skett så gör alla andra NPC:er i byggnaden det samma med den förstnämnda.

3.5 Rutiner

Som sagt har varje NPC sina egna rutiner. Dessa är schemalagda aktiviteter som utförs och i de flesta fall upprepas varje dag. Standard-exemplet är en NPC som vaknar varje morgon, går till sitt arbete, går till puben på kvällen för att till sist gå hem och lägga sig. Andra NPC:er som t.ex. köpmannen följer ett schema som skiljer sig från dag till dag och upprepas varje vecka istället. De besöker alltså olika byar och utför olika aktiviteter varje dag. Den tredje varianten följs t.ex. av bonden som vanligtvis upprepar sitt schema varje dag men bryter det under speciella dagar när denne tar sig in till byn för att sälja sina varor t.ex.

Vi planerar och tilldelar var NPC ett eget rutinobjekt för hand. Varje sådant objekt innehåller en unik uppsättning uppgifter som NPC:n utför vid utsatta tider. Uppgifterna handlar alla om att antingen ta sig till en plats eller stanna där tills nästa uppgift ska utföras. Vi bygger en finite state machine (FSM) för att styra NPC:erna. Detta gör att de aldrig försöker utföra mer än en uppgift åt gången och hjälper till att hålla simuleringen organiserad. Antingen tar de sig till ett mål eller väntar i en byggnad där de kan utföra konversationer. De utför aldrig konversationer utanför byggnader.

(19)

3.6 Kunskapsobjekt

Den centrala delen i hela implementationen som representerar vad NPC:erna känner till och kan förmedla till spelaren är kunskapsobjekten. De kan skapas och delas ut till specifika NPC:er vid schemalagda tidpunkter eller placeras i spelvärlden och delas ut till förbipasse-rande NPC:er. Det enda sättet en NPC kan vidareförmedla sina kunskapsobjekt är genom konversationer med andra NPC:er. Kunskapsobjekten innehåller en logg som sparar in-formation angående när, var, och mellan vilka NPC:er det har färdats så att vi senare kan analysera simuleringen. Då vi fokuserar på kunskapsobjektens spridning är inte deras innehåll intressant. Därför innehåller de endast en textsträng i implementationen.

3.7 Uppdateringscykler

Implementationen är i grunden baserat på uppdateringscykler. Spelmotorn som vi använder oss av[24] försöker köra dessa med en frekvens av 60 per sekund. Koden vi skriver måste dock anpassas så att den fungerar korrekt även vid lägre frekvenser. Detta kan ske om datorn som simuleringarna körs på inte klarar av dem prestandamässigt. Detta är dock inget problem då simuleringsdatorn lyckas köra simuleringarna utan att någon gång gå under 60 uppdateringar per sekund.

Under varje cykel förflyttas NPC:erna enligt sina rutiner samt utför konversationer och beslut om konversationer. På så sätt är de alltid redo att utföra konversationer eller inte. Vi använder oss inte av trådar eller events i någon form så det finns alltså inga mellantings-situationer som kan skapa problem. Rutinsystemet är uppbyggt så att en NPC som besöker ett hus alltid gör det under minst en cykel. De kan aldrig gå in och ut, utan att ha kunnat starta ett samtal eller bli samtalad med.

En annan form av cykler som implementationen använder är spel-timmarna. Alla ruti-ner schemaläggs enligt spel-timmar och veckodagar. Nya rutiruti-ner startas alltså endast vid första uppdateringscykeln under varje spel-timme vilket ger gott om tid åt NPC:erna att starta konversationer. Vad vi inte vet med säkerhet dock är där NPC:er anländer till sina mål. Det kan hända att de når sitt mål, en cykel innan en annan NPC lämnar samma mål och på sätt missar varandra med en hårsmån. Vi gör helt enkelt vårt bästa att förebygga detta när vi planerar deras rutiner.

(20)

3.8 Konversationer

Konversationer kan ske när två NPC:er befinner sig i samma hus. Det sker specifikt under uppdateringscykler då en NPC precis gjort entré i ett hus där en eller flera andra NPC:er befinner sig. När detta sker försöker NPC:n starta konversationer med alla andra NPC:er i byggnaden. Strax därefter gör alla andra NPC:er det samma med den som nyss anlände. Kunskapsobjektet överförs endast vid lyckade konversationer från den som har objektet till den som inte har det. Dessutom används NPC:ernas attribut på olika sätt, beroende på vilket “håll” konversationen sker.

Varje NPC har två attribut som används i algoritmen, som bestämmer huruvida en konversation eller överföring av kunskapsobjekt kommer att ske eller inte. Det första at-tributet kallar vi pratgladhet och har ett värde mellan 0,3 och 0,8 där ett högre värde ger en högre chans till att konversationen lyckas. Endast pratgladhetsvärdet hos NPC:n som startar konversationen används här. Det andra attributet är social status. NPC:er som t.ex. kungligheter eller trollkarlar har högre social status medan t.ex. barn och eremiter har lägre värden. Värdena sträcker sig mellan 0,1 och 1. Det är skillnaden mellan dessa som används i algoritmen. En lägre skillnad ger högre chans till en lyckad konversation. När en NPC försöker överföra kunskapsobjektet till en annan kallar vi detta för en konversation. I de fall där de lyckas överföra objektet kallar vi det en lyckad konversation.

NPC:ernas specifika värden samt den högsta och lägsta gränser för dessa, har fastställts efter en mängd finjusteringar. Målet med dessa finjusteringar är att kunskapen ska ha spri-dits någorlunda jämnt vid de tre första scenariernas slut. Vi har även under finjusteringens gång valt att halvera vikten av NPC:ernas sociala status. Detta skulle även ha kunnat åstadkommas genom att manuellt justera samtliga NPC:ers värden men eftersom de är så pass många har vi valt att implementera liknande ändringar i algoritmen istället för att minska arbetsbelastningen.

För en referens till alla NPC:ers attribut se bilagan, Figur 8.

3.9 Konversationsalgoritmen

Under varje uppdateringscykel itererar systemet genom varje NPC för att se om denne befinner sig i en situation där den har möjlighet att utföra en konversation med en annan NPC. Med andra ord: om de befinner sig i samma hus, en av dem har precis anlänt och en av dem saknar ett kunskapsobjekt som den andra har. Vid det här tillfället initierar den NPC som har ett kunskapsobjekt med den som inte har ett. En algoritm, baserat på deras personlighetsattribut körs. Om den lyckas så överförs en kopia av kunskapsobjektet till den mottagande NPC:n. Om algoritmen ger ett negativt värde så överförs ingen kunskap och inga nya försök utförs mellan samma NPC:er förrän minst en av dem har förflyttat sig in eller ut ur huset där försöket skedde.

Själva algoritmen använder sig av fuzzy logic-metoden för att kombinera skillnaden på de båda NPC:ernas sociala status-värde samt den initierande NPC:ns pratgladhets-värde. Resultatet blir ett decimaltal och om det ligger över eller är lika med tröskelvärdet vi har satt så ger algoritmen ett positivt resultat.

(21)

Stegvis går algoritmen till så här:

1. Hämta skillnaden på de två NCP:ernas sociala status-värde. 2. Invertera värdet så att en större skillnad ger ett lägre värde.

3. Halvera sedan värdet för att minska dess signifikans i slutresultatet.

4. Ta ut genomsnittet på förra värdet och den initierande NPC:ns pratgladhets-värde. 5. Om slutvärdet ligger över eller lika med tröskelvärdet, returnera ett positivt resultat. Vi använder ett värde som blir lägre desto större skillnaden i social status är mellan NPC:erna för att ge konversationerna en lägre chans att lyckas. Vi kombinerar sedan detta värde med den initierande NPC:ns pratgladhets-värde för att ge de med högre värden, en högre chans att lyckas sprida kunskap. Tröskelvärdet har vi bestämt efter tester och fin-justeringar med målet att kunskapen ska ha spridits till hälften eller mer av spelvärldens befolkning vid slutet av scenarierna. Detta för att vi ska få ett användbart och intressant slutresultat.

Figur 2: Konversationsalgoritmen

3.10 Inspektionsverktyget

Eftersom spelvärlden inte innehåller någon spelare som kan interagera med NPC:erna så använder vi oss av inspektionsverktyget för att se vad som händer i simuleringarna. Med hjälp av verktyget kan vi se vilka rutiner de följer, deras personlighetsattribut och vilka kunskapsobjekt de tillhandahåller. Vi kan även inspektera kunskapsobjekten och se var, när och mellan vilka NPC:er de har spridits.

3.11 Dold Markovmodell

Implementationen kan ses som en dold Markovmodell[22] där kunskapsspridningens väg kan förutspås till full säkerhet. Simuleringarnas utfall deterministiska och sker på samma sätt varje gång de körs vilket gör att vi kan förutse ett scenarios händelseförlopp om vi redan har sett det köras tidigare. Det som är intressant dock är att ett helt nytt, på-hittat scenario också skulle förutspås med hjälp av Markovmodellen, givet att vi känner till samtliga konversationer och försök till konversationer mellan NPC:erna under tidiga-re simuleringarna. I ett riktigt spel skulle denna förutsägbarhet ses som något dåligt då spelaren efter en tid skulle kunna känna igen vissa mönster. Vår implementation är dock inte tänkt att fungera som ett riktigt spel utan är byggd med denna förutsägbarhet så att resultaten lätt skulle kunna tydas och jämföras med varandra.

(22)

4

Resultat

Vi kör tre simuleringar där kunskapsobjekt placerats ut på tre olika ställen. Simuleringarna körs över två spelvärlds-veckor tills att inga nya konversationer lyckas sprida någon kun-skap. Alla NPC:ers rutiner upprepas varje vecka där de flesta kunskapsöverföringarna sker under den första veckan medan endast ett fåtal sker under den andra. Skärmdumpar över händelseförloppet i scenarierna finnes i bilagan, del B. Vi kommer att beskriva de mest intressanta händelserna, var, när och genom vem kunskapen lyckas ta sig fram och var den inte gör det. På så sätt kan vi finna intressanta mönster och se varför de uppkommer. Vi kommer inte att ge en fullkomlig återberättelse över händelseförloppen i simuleringarna eftersom händelserna är alldeles för mångtaliga och triviala utan kontext.

Vi kommer att beskriva händelseförloppet både i text nedan och enligt detaljerade punkter i bilagan. Varje punkt kommer ha en tillhörande skärmdump och tidpunkt följt av en beskrivning över vad som har hänt. Hädanefter kommer tidpunkter i spelet refereras exempelvis så här: D1H17. Där D1 syftar på den andra av sju dagar och H17 på timme sjutton av tjugofyra. Om inget annat anges så syftar textsträngen på en tidpunkt i första veckan. Annars läggs W1 till i början av strängen och syftar på den andra veckan.

Simuleringarna avslutas när ingen ny kunskapsspridning sker vilket händer under första eller andra veckan. För en referens till NPC:ernas personlighetsattribut, rutiner och roll, figur 8 i bilagan.

Arbetet innehåller många referenser till figurer i bilagan. Notera att det går att klicka direkt på referenssiffran i texten i de flesta pdf-läsare för att bli skickad till figuren i fråga. Detta gäller så klart inte om texten är utskriven.,

4.1 Grafisk representation och skärmdumpar

Här följer en förklaring av de grafiska element som skärmdumparna innehåller.

NPC:er representeras av olikfärgade cirklar med en ovanliggande textetikett som visar deras namn. En NPC som har skaffat sig kunskapen i fråga visas i rött. Även dess namnetikett som vanligtvis är vit, blir nu röd.

Spelvärlden innehåller fyra byar med en i varje hörn. Hädanefter kommer byarna kallas by 1, 2, 3 och 4 där den övre högra är by 1, övre vänstra är by 2, undre vänstra är by 3 och undre högra är by 4. Var by har i sin tur nio hus som representeras av olikfärgade kvadrater. Gröna hus är bostäder, gula är marknadsplatser, det vinröda är slottet, turkosa är eremiternas hus och orange, ljusblå, grå och lila är arbetsplatser.

Varje by kopplas samman med ett vägnät som representeras av de slingrande bruna linjerna. Här färdas NPC:er som försöker ta sig mellan byarna. Längs med vägarna, utanför byarna finns två eremit-hus (turkos) och två bondgårdar (orange).

Siffran på varje segment av skärmdumparna representerar en punkt i den detaljerade be-skrivningen i bilagan.

(23)

4.2 Scenario 1

För en detaljerad genomgång av händelseförloppet i det här scenariot, se bilagan del A Händelseförlopp. För att se skärmdumpar av händelseförloppet och grafer se bilagan, del B Figurer. För att se en video över händelseförloppet se länken i referenslistan[25].

Översikt Scenariot börjar med att den resande köpmannen Dan tilldelas kunskapen. Vi har valt att börja med Dan eftersom vi tror att han kommer kunna sprida kunskapen bäst av alla NPC:er i spelvärlden. Han har det näst högsta möjliga pratgladhetsvärdet och hans sociala status ligger på 0,7 vilket är något högre än genomsnittet på 0,47. Dessa attribut gör att han kommer överföra kunskapen vid 60% av alla konversationer. Dessutom reser han mellan samtliga byar, eremit-hus och bondgårdar varje vecka.

Dan är först med att sprida kunskapen till båda eremiterna, by 3 och 4 via pubarna samt bondgården vid by 4. I by 4 talar han med nyhetsutroparen Adria som är den andra av tre NPC:er som reser mellan byarna dagligen. Härnäst är det Adria som är först med att sprida kunskapen till by 1 och 2 via marknaden resp. puben. Innan hon gör det så besöker reser hon till puben i by 3, precis som Dan och träffar samma NPC:er som han redan har talat med. Adria har samma attribut som Dan vilket betyder att hon inte hade kunnat sprida till någon som Dan misslyckades med tidigare. I by 1 sprider hon kunskapen till den tredje resande NPC:n Anne. Hennes attribut och resevanor liknar Dans med den stora skillnaden att hennes pratgladhets-värde är det lägsta på 0,3. Hon får dock aldrig någon chans att tala med någon i resten av det här scenariot. Sent under den femte dagen levererar Adria kunskapen till den sista byn, by 2. All spridning mellan byarna har nu skett genom Dan och Adria.

By 1 Adria är först med att införa kunskapen till by 1 via marknaden under den fjärde dagen. Här sprider hon den lätt till hovet, bondgården och den andra köpmannen Anne. Betjänten Charlie får inte kunskapen eftersom de NPC:er han möter som har liknande social status, är inte pratglada. De som däremot är pratglada har alldeles för stor skillnad i social status. Vakterna Peggy och Eve talar aldrig med någon annan NPC p.g.a. ett misstag i planeringen av deras rutiner. De är väldigt enkla rutiner går enbart ut på att NPC:erna går till sitt arbete och sen hem igen. Det finns heller ingen annan NPC med ett oregelbundet schema som talar med dem. De sista två som inte får kunskapen är Rosanne och Peter på bondgården. Catherine som fick kunskapen tidigt på marknaden, sprider den inte både p.g.a. hennes låga pratgladhet samt skillnader i social status.

By 2 Även by 2 får, först kunskapen införd av Adria. Denna gången går hon direkt hem med den och talar med maken Geoff men inte barnen Nikole och Amy. Dock gör Geoff det nästa dag när han kommer hem från arbetet. Både Geoff och Adria har det hösta pratgladhets-värdet på 0,8 men Geoff har lägre social status vilket gör att han lyckas prata med barnen som har den lägsta sociala statusen på 0,1. Nästa dag sprider barnen vidare kunskapen till vännerna Tony, Nicholas och föräldern Ellen. Längre än så här kommer den inte. Varken Nicholas eller Tony talar med sina föräldrar p.g.a. deras låga

(24)

pratgladhets-By 3 I by 3 introducerar Dan själv kunskapen till Leo, James och Alice i puben. Alice har ett lågt pratgladhets-värde och talar inte med någon i sin familj. Frank talar med sonen Sean men James talar inte med rumskamraten Oscar. Sean är nära men lyckas inte sprida kunskapen till vännerna Will, Sofie och Trent. Alice går till arbetet men talar inte med kollegan Rick, återigen p.g.a. pratgladhets-värdet. Nu har fyra av elva NPC:er kunskapen i by 3 och den kommer inte längre än så.

By 4 Även i by 4 är det Dan som introducerar kunskapen på puben. Denna gången till Leo och Adria. Adria reser iväg och Leo lyckas inte tala med någon. Dan sprider kunskapen till bonden Kenneth på bondgården och hans fru Christina på marknaden. Anne besöker byn genom puben. Varken hon eller Leo talar med någon inom byn p.g.a. deras låga pratgladhets-värde. Nu har alla NPC:er på bondgården kunskapen men Leo är den enda i byn som har den.

Grafer I figur 9 och 10 kan vi se kunskapsfördelningen vid scenariots slut efter bostad och social status. I figur 11 kan vi se spridningen över tid efter NPC:ernas bostad. Till sist ser vi en graf över de NPC:er som lyckats sprida kunskapen minst en gång i figur 12. Här ser vi deras totala antal lyckade spridningar över tid.

4.3 Scenario 2

För en detaljerad genomgång av händelseförloppet i det här scenariot, se bilagan del A Händelseförlopp. För att se skärmdumpar av händelseförloppet och grafer se bilagan, del B Figurer. För att se en video över händelseförloppet se länken i referenslistan[26].

Översikt Scenariot börjar med att kunskapen delas ut till alla NPC:er på slottet. Alla NPC:er som går dit i framtiden kommer också bli tilldelade kunskapen automatiskt utan att någon konversation tar plats. Trollkarlen Joseph reser från by 2 till slottet i by 1, en gång i veckan. Han blir den första utanför by 1 som tar del av kunskapen. Nästa dag reser han hem igen där han enbart talar med kollegan Sue och ingen annan. Anne är den andra utomstående NPC:n som besöker slottet. Något senare blir Dan den tredje. De båda har samma sociala status och liknande resevägar men Anne har ett mycket lägre pratgladhets-värde. Hon är först med att lämna byn och beger sig till by 4. Här möter hon totalt sju NPC:er men kommunicerar inte med någon av dem. Samtidigt har Dan tagit sig till by 3 där han precis som i scenario 1, lätt sprider kunskapen via puben. Efter det reser Dan till by 4 där han till skillnad från Anne, talar med nästan alla han möter inklusive den resande nyhetsutroparen Adria. Dock möter han enbart de lokala bönderna och bartendern Leo. Anne besöker kort by 2 men sprider inte något här heller. Till sist kommer Adria hem till by 2 och bryter dödläget genom att sprida kunskapen till maken Geoff på samma sätt som i scenario 1. Kunskapen har i by 2, tills ny varit låst till Joseph och Sue.

By 1 Alla fem NPC:er i slottet tilldelas kunskapen i by 1. De tre betjänterna som bor i egna hus utanför slottet och kungaparet som självklart bor i slottet. Alla betjänter har någon som de har chans att tala med i byn: familjemedlemmar, på marknaden eller puben.

(25)

Dessvärre lyckas inte någon av dem sprida vidare kunskapen till någon annan i byn eller besökare utifrån. Detta p.g.a. en kombination av för hög social status, låg pratgladhet eller att de helt enkelt inte är på rätt plats vid rätt tid.

By 2 Trollkarlen Joseph som nyss besökt slottet är för att föra kunskapen till by 2. Han sprider den endast till kollegan Sue men inte sin familj. Sue sprider inte den vidare till sin egen familj och kunskapen fastnar hos dessa två under en längre tid. Inte förrän tidigt under den andra veckan kommer kunskapen hit på ett nytt sätt. Först genom Anne som besöker puben utan att tala med någon. Senare genom Adria som sprider den till maken som i sin tur sprider den till sina barn. Barnen sprider den till de andra barnen i byn och Ellen, en av deras föräldrar. Slutligen är Roland den enda som inte har kunskapen i byn eftersom både hans son och fru har ett lågt pratgladhets-värde.

By 3 By 3 är den sista byn som får kunskapen. Det sker på samma sätt som i scenario 1 genom Dan som besöker puben. Han talar med alla han möter, d.v.s. James, Frank och Alice. Alla tre går hem till sina familjer men det är bara Frank som sprider kunskapen till någon. I det här fallet sonen Sean. Han sprider inte den vidare till någon annan och den har fastnat hos fyra av byns elva innevånare. Adria anländer till puben senare men hon stöter på samma NPC:er som Dan gjorde vilket gör att inget nytt händer.

By 4 Anne kommer till by 4 med kunskapen i slutet på första veckan. Hon möter åtta olika NPC:er på både puben, marknaden och bondgården men sprider inte kunskapen till någon av dem. Under andra veckan, kort efter att hon har lämnat kommer Dan till byn. Han talar med bartendern Leo i puben, bonden Kenneth på bondgården och den andra bonden Christina på marknaden. Hon sprider senare kunskapen till sina barn på bondgården. När Dan lämnar byn har alla kunskapen på bondgården men endast Leo har den i byn. Hans sociala status liknar de flesta andras i byn men han har något för lågt pratgladhets-värde och talar inte med någon.

Grafer I figur 13 och 14 kan vi se kunskapsfördelningen vid scenariots slut efter bostad och social status. I figur 15 kan vi se spridningen över tid efter NPC:ernas bostad. Till sist ser vi en graf över de NPC:er som lyckats sprida kunskapen minst en gång i figur 16. Här ser vi deras totala antal lyckade spridningar över tid.

4.4 Scenario 3

För en detaljerad genomgång av händelseförloppet i det här scenariot, se bilagan del A Händelseförlopp. För att se skärmdumpar av händelseförloppet och grafer se bilagan, del B Figurer. För att se en video över händelseförloppet se länken i referenslistan[27].

Översikt Det tredje scenariot börjar inte förrän den fjärde dagen kl. 12. Nyhetsutropa-ren Adria får en stor nyhet som ska spridas genom spelvärlden och hon är inte i by 1 förrän

(26)

familjemedlemmar sprider hon bara nyheten till maken Geoff. Under den sjätte dagen tar Anne den med sig till by 4 men som vanligt lyckas hon inte tala med någon. Dan sitter på kunskapen i by 1 p.g.a. marknadsdagarna, över ett par dagar. När han lämnar missar han precis barnen i byns bondgård. Därefter går han, precis som i de andra scenarierna via eremiten Desmonds hus till puben i by 3 och sprider nyheten till alla han möter. By 4 får kunskapen sist eftersom Anne inte lyckades sprida den dit. Det sker genom Adria som kommer till puben precis innan Dan och talar med alla där.

By 1 Adria som är väl berest och har samma pratsamhets-värde som Dan. Det gör att hon lätt sprider nyheten på marknaden i by 1. Tillfället hon gör det är en av två marknadsdagar där andra NPC:er har tilldelats special-scheman så att de besöker marknaden. Över dessa dagar sprider hon nyheten till byborna samt köpmännen Dan och Anne utan problem. Den tar sig till slottet via betjänten Willma som fick den i puben och till betjänten Carol som fick den via bybon Ellis.

By 2 Adria själv är den som tar med sig nyheten först utanför by 1. Dock går det inte riktigt som tänkt när hon går hem och tar ledigt i en dag. Hon sprider i alla fall nyheten till maken Geoff som, precis som i de andra scenarierna går till jobbet för att sedan sprida den till sina barn när han kommer hem. De sprider den i sin tur, nästa dag till kamraterna Tony, Nicholas och föräldern Ellen. Dvs. samma händelseförlopp som vi sett tidigare fast under en annan tidpunkt.

By 3 Dan kommer med nyheten till by 3, inte förrän andra veckan, andra dagen, kl. 21. Han talar precis som innan med bartendern Frank, vakten James och bybon Alice. När de går hem är det endast Frank som talar med sonen Sean. Nyheten sprider sig exklusivt genom puben och inte mycket längre än så.

By 4 Anne kommer till by 4, två dagar efter att kunskapsobjektet skapades. Som vanligt sprider hon ingenting p.g.a. sitt låga pratsamhets-värde även om hon stöter på flerta-let andra NPC:er. Tidigt under andra veckan anländer Adria och med sitt mycket högre pratsamhets-värde, sprider nyheten till alla hon möter. Dan kommer henne hack i häl men alla han möter i byn känner redan till nyheten. Däremot sprider han den till byns bondgård innan han lämnar.

Grafer I figur 17 och 18 kan vi se kunskapsfördelningen vid scenariots slut efter bostad och social status. I figur 19 kan vi se spridningen över tid efter NPC:ernas bostad. Till sist ser vi en graf över de NPC:er som lyckats sprida kunskapen minst en gång i figur 20. Här ser vi deras totala antal lyckade spridningar över tid.

4.5 Special-simuleringar av Scenario 1

Special-simuleringarna av Scenario 1 består av två simuleringar där vi, i den ena endast använder NPC:ernas sociala status-attribut och i den andra endast deras pratsamhet för att bedöma huruvida deras konversationer lyckas eller inte. På det här sättet kan vi iaktta

(27)

spridningsfenomen som inte annars hade skett om båda attributen hade använts. Detta hjälper oss att tydligare se verkan som de båda attributen har på händelseförloppet. Vi kan se resultaten av simuleringarna i figur 21, 22, 23, 24, 25 och 26.

Vi väljer att inte inkludera detaljerade händelseförlopps-beskrivningar i stil med de vi har haft till scenario 1, 2 och 3 eftersom special-simuleringarna inte är tänkta att ge ett önskat slutresultat. Dvs. de demonstrerar vad som kan gå fel när inte det ena eller andra attributet används. Vi inkluderar däremot samma grafer och tabeller som används i beskrivningen av de andra scenarierna.

Observera att i simuleringen där vi enbart använder pratsamhets-attributet, väljer vi att inte halvera dess påverkan i algoritmen som vi vanligtvis gör när båda attributen används. Läs mer om algoritmen under rubriken Konversationsalgoritmen i Implementations-delen av uppsatsen. Om vi inte hade gjort detta så hade NPC:erna endast lyckats sprida kun-skapen i ett fåtal extremfall. Det viktiga är att vi visar vad som händer när endast ett personlighetsattribut används vid konversationerna.

4.6 Regisserade scenarier

I de två regisserade scenarierna lägger vi ut kunskapen i början av varje scenario och sätter upp ett mål för hur vi vill att den ska ha spridits vid scenariots slut. Vi påverkar kunskaps-objektets spridning genom att justera NPC:ernas personlighetsattribut för att stoppa eller möjliggöra spridningen. Vi kommer att först köra varje scenario utan ändringar för att ta reda på vilka ändringar som behöver göras. Sedan justerar vi personlighetsattributen var för sig och kör scenariot igen. Vi repeterar dessa två steg tills att vårt utsatta mål är nått. Därefter dokumenterar vi ändringarna som gjorts och hur händelseförloppen skiljer sig, före och efter ändringarna. På detta sätt visar vi att ett önskat händelseförlopp kan skapas utan direkta, artificiella ändringar i spelvärlden som kan upplevas onaturliga för spelaren.

4.6.1 Scenario A

Målet med scenario A är att kunskapen ska spridas från kungaslottet i by 1 till mer eller mindre samtliga NPC:er i spelvärlden för att simulera en slags nyhet eller befallning som ska förmedlas till alla kungens undersåtar. Scenariot börjar med att kunskapen delas ut till alla NPC:er i by 1 där kungen bor.

Precis som i tidigare scenarier sprids kunskapen ut ur byn först genom Joseph som besöker slottet. Han lyckas dock inte sprida den vidare när han går hem till by 2. Senare i scenariot kommer kunskapen hit via en annan NPC och sprids till nästan alla invånare, dock skulle det ha kunnat skett mycket tidigare och snabbare. Både i by 3 och 4 ser vi att den lokala baren är en flaskhals. NPC:erna som befinner sig där när kunskapen anländer tar själva del av den men är dåliga på att sprida den vidare till familjer och kollegor. På landsbygden är spridningen god och bara två av åtta NPC:er saknar kunskapen vid scenariots slut.

Den första ändringen vi gör är bland NPC:er som interagerar med Joseph. Först höjer vi hans pratsamhet något. Sedan höjer vi den sociala statusen för samtliga barn i by 2.

(28)

kunskapen vidare till dem. Ändringarnas effekt blir att Joseph talar med Ellen som i sin tur talar med barnen. Barnen sprider i sin tur vidare kunskapen något bättre med sin höjda sociala status. Joseph lyckas även sprida till sina två kollegor vilket han inte gjorde innan.

Den andra gruppen av ändringar gör vi för att öka spridningen i by 4. Den som först anländer hit med kunskapen är Anne som inte sprider den alls. Däremot kommer Adria kort därefter och gör ett bättre jobb. Vi väljer att inte ändra något hos dessa två för att hålla antalet ändringar så lågt som möjligt. I by 4 ser vi som sagt flaskhals-fenomenet och för att lösa det höjer vi helt enkelt pratsamheten hos de tre NPC:er som vistas i baren och får kunskapen av Adria. Efter denna ändring sprids kunskapen till samtliga NPC:er i by 4 vid scenariots slut.

I by 3 ser vi samma fenomen som i by 4 fast till en mindre grad. Alla NPC:er i baren får kunskapen utifrån och lyckas faktiskt sprida den. Däremot finns det en NPC vid namn Alice som har en stor familj med flera barn men talar inte med någon av dem. Precis som i by 2 kan vi använda den lokala “barnligan” för att sprida kunskapen inom byn. De har många kontakter (föräldrar och andra barn) och rör sig aktivt inom byn. Ändringarna vi gör är att öka Alices pratsamhet och alla barnens sociala status något. Nu sprids kunskapen via Alice, till sina barn och sedan via barnen till deras föräldrar.

Vid scenariots slut har kunskapen spridits till 41 av 47 NPC:er till skillnad från de 27 som hade den vid slutet, innan ändringarna. De sex som inte har fått kunskapen är någorlunda jämt utspridda utmed spelvärlden. Efter att ha utfört ändringar på 14 NPC:er och spridit kunskapen till 87% av dem anser vi målet vara uppnått.

4.6.2 Scenario B

I scenario B lägger vi upp ett mer specifikt och avancerat mål. Vi låtsas att implementa-tionen är ett riktigt spel med story och spelare. “Barnligan” i by 3 har funnit en magisk artefakt som magikerna Sue och Joseph i by 2 behöver. Dock vet de inte var den finns. Målet med scenariot är alltså att vetskapen om artefakten ska färdas från barnen i by 3 till magikerna i by 2. När en av dem har fått kunskapen anser vi målet vara uppnått.

Vi börjar med att tilldela kunskapen till de fyra barnen i by 3. Sedan höjer vi deras sociala status något precis som i scenario A för att ge dem en realistisk chans att lyckas med sina konversationer. Det visar sig dock att detta inte räcker, utan vi måste även öka deras pratsamhet. Vi gör detta för de barn vars föräldrar besöker den lokala baren. Baren i by 3 har ofta fungerat som en flaskhals för inkommande kunskap men i det här fallet använder vi den för att sprida den utåt. Ändringarna hos barnens attribut gör stor skillnad, kunskapen sprids till alla NPC:er i byn förutom två. Alla bar-besökare får kunskapen men inte innan köpmannen Dan har lämnat. Något senare anländer den andra köpmannen Adria som bor i by 2 precis som magikerna. Hon får kunskapen i baren som tänkt och lämnar byn för att bege sig till by 1.

I by 1 lyckas hon tala med de flesta bar-besökare och kunskapen sprids fort till slottet som magikern Joseph besöker ibland. Dan får även tag på kunskapen här men eftersom han aldrig besöker by 2 och vi har kommit så pass långt i simuleringen, tror vi inte att han kommer lyckas sprida kunskapen på ett användbart sätt.

(29)

Efter sitt besök i by 1 går Adria till sitt hem i by 2. Här sprider hon kunskapen till maken Geoff som sprider den till barnen i familjen. De är själva medlemmar av byns “barnliga” som de sprider kunskapen till. Barnen lyckas dock bara tala med ett fåtal NPC:er i byn så även här ökar vi deras sociala status något. Detta gynnar spridningen i byn men inte tillräckligt, Sue och Joseph går fortfarande utan. Vi prövar att höja pratsamheten hos magikernas egna barn i hopp om att de ska lyckas tala med dem. Tyvärr är detta inte heller tillräckligt då magikerna har väldigt höga social status-värden. Vi provar istället att sprida kunskapen genom mellanhänder: deras andra föräldrar. Nu till slut lyckas vi genom att sänka Joseph och Sues sociala status ytterst lite samt öka Josephs fru Ellens pratgladhet. Kunskapen har alltså färdats från barn med låg social status, till en förälder med mellanhögt värde, till den andra föräldern med väldigt högt värde. I Sues familj lyckas fortfarande inte spridningen då hon har en något högre social status än Joseph. Vi har redan nått målet för scenariot men om vi väntar lite så lyckas Joseph sprida till Sue när de båda träffas på arbetet.

Det tar ungefär en spel-vecka för kunskapen att sprida sig från startplatsen till slutmå-let. Vi behöver endast ändra personlighetsattribut på åtta NPC:er vilket är ungefär hälften gentemot scenario A. De flesta av dessa ändringar görs på barnen där vi ökar deras sociala status samt pratsamhet för en del av dem. Kunskapen sprids väl i by 1, 2 och 3. Dvs. byarna som vi dirigerar kunskapen genom. På landsbygden och i by 4 som vi inte dirigerar den igenom är spridningen ovanligt låg. Endast en NPC i varje zon har kunskapen vid scenariots slut. Vi ser alltså ett väldigt tydligt spår utmed vägen vi dirigerar kunskapen.

5

Analys

Vi kan se en del mönster eller fenomen i sättet kunskapen färdas. Både de som hjälper spridningen och de som hämmar den. I de tre första scenarierna ser vi att de regelbundet resande och pratglada NPC:erna har haft en absolut avgörande roll. Anne som reser ofta men inte var särskilt pratglad, sprider knappt någon kunskap i huvudtaget. Joseph som reser, men inte ofta och som har ett högt pratgladhets-värde presterade inte mycket bätt-re. Adria och Dan däremot spred kunskapen mest och med stor marginal tack vare sina resevanor och pratgladhet.

Vi ser även att den kunde fastna när flaskhalsar uppstod. Dessa gestaltar sig ofta hos bartenders. Resande NPC:er sprider kunskapen till dem men sen lyckas de själva ald-rig sprida den vidare i byn. Det är inte ovanligt att antingen deras sociala status eller pratgladhets-värde var 0,1 enheter för lågt.

Vi ser ett fåtal near misses där en NPC lämnar en byggnad precis innan en annan och missar att i huvudtaget försöka prata med dem. Vi ser enbart ett fåtal sådana här missar i scenarierna men de har en potential att bli ett större problem om man använder en annan uppsättning av rutiner för NPC:erna.

I kontrast till flaskhals-fenomenet ser vi att kunskapen sprids lätt inom grupper av NPC:er med liknande social status. Ett par exempel är bland barn som alla har det lägst möjliga värdet samt i slottet där de har det högsta värdena. Spridning inom familjer,

(30)

medan de i själva verket lyckades med detta lika ofta som de inte gjorde det.

NPC:ernas personlighetsattribut är minst lika viktigt som deras rutiner. De kan avgöra om kunskapen kan ta sig genom en flaskhals eller inte, om en bra spridare som Dan eller Adria i huvudtaget får tag på den eller inte.

I figur 3, 4 och 5 ser vi en tabell över de NPC:er som lyckats sprida kunskapen minst en gång. Deras personlighetsattribut och antal lyckade kunskapsspridningar vid scenariernas slut, listas. Vi lägger märke till att pratsamhets-värdena är väldigt höga med undantaget Ellis. De sociala status-värdena är dock mer utspridda och ligger endast något över ge-nomsnittet. Tabellerna visar inte hur många tillfällen till NPC:erna har haft till att starta konversationer men vi ser att ett högt pratsamhets-värde definitivt bidrar till att bli en bra spridare.

Pratsamhets-värdet verkar ha haft allt för stor vikt i simuleringarna. De NPC:er med för lågt värde har aldrig kunnat sprida kunskapen medan de med ett högt värde alltid lyckas. Attributen var tänkta att skapa små variationer i hur de lyckas konversera eller inte. Dock känns det mer som om att det har skapat ett mer “svart eller vitt” utfall.

I båda special-simuleringarna av scenario 1 ser vi ett ökat antal lyckade kunskapssprid-ningar och vi når ett steady state ungefär lika fort ±1 speldag i båda. Vi ser ett liknande spridningsmönster både i plats och tid jämfört med originalsimuleringen. Vid slutet av simuleringarna har varianten som endast använder sociala status-attributet lyckats sprida kunskapen till nästan vart enda NPC medan pratgladhets-varianten mer liknar originalsce-nariot. I alla tre varianter finns det NPC:er som har avsevärt många fler lyckade spridningar än andra och de består av ungefär samma grupp som tidigare. I den sociala status-varianten finns det även av en stor mängd “småspridare” med en eller ett par lyckade spridningar var, något som vi inte riktigt ser i originalsimuleringen.

I scenario B använder vi oss av en slags trappstegseffekt för att kringgå den sociala status-barriären. Vi justerar alltså personlighetsattributen så att en NPC med låg social status talar med som har ett högre. Denne talar sedan en annan som i sin tur har ett ännu högre värde osv. Med hjälp av den här tekniken kan man sprida kunskapen inom NPC-grupper med liknande social status för att sedan förflytta den upp eller ner till NPC:er med andra värden.

(31)

Figur 3: Scenario 1, Tabell över NPC:er som lyckats sprida kunskapen samt deras person-lighetsattribut

Figur 4: Scenario 2, Tabell över NPC:er som lyckats sprida kunskapen samt deras person-lighetsattribut

Figur 5: Scenario 3, Tabell över NPC:er som lyckats sprida kunskapen samt deras person-lighetsattribut

(32)

Figur 6: Scenario 1, endast social status, Tabell över NPC:er som lyckats sprida kunskapen samt deras personlighetsattribut

Figur 7: Scenario 1, endast pratsamhet, Tabell över NPC:er som lyckats sprida kunskapen samt deras personlighetsattribut

(33)

6

Diskussion

Vi har justerat konversationsalgoritmen och NPC:ernas personlighetsattribut så att kun-skapen sprids någorlunda jämt i spelvärlden i alla tre första grund-scenarier. Den har alltså spridits till vissa NPC:er eller områden men inte andra genom indirekta regler och algorit-mer. På det sättet fungerar spelvärlden som det var tänkt men det känns något stelt och simpelt i särskilda fall.

Såsom konversationsalgoritmen fungerar nu så talar aldrig en NPC med 0,5 (min: 0,3 och max: 0,8) med en annan NPC med samma sociala status. Dvs. de talar aldrig med någon utan tar enbart emot kunskapen. Detta är något av en miss som uppfattades genom uträkningar först efter att scenarierna hade slutförts och dokumenterats. Detta har dock inte stoppat kunskapen från att sprida sig jämnt då andra, lite väl pratglada NPC:er har gjort upp för den här bristen.

NPC:er som Dan och Adria har varit alldeles för bra på att sprida kunskapen, särskilt mellan byarna medan andra har legat i lä. Man skulle ha tonat ner dessa tvås spridnings-förmåga och haft fler oregelbart resande NPC:er för att göra det hela lite mindre ensidigt. Eremiterna Desmond och Margery har gjorts totalt ointressanta p.g.a. Dan och Adria. Det är alltid dessa två som sprider kunskapen till eremiterna, de lyckas alltid och ingen annan besöker dem.

Vakter är en grupp NPC:er som också blev väldigt isolerade. Ingen av dem hade några oregelbundna rutiner och träffade enbart familjemedlemmar. Det var från början tänkt att de skulle vara isolerade fast i en miljö där kunskapen ligger nära till hands. Resultatet blev dock att de praktiskt taget aldrig fick ta del av den.

I specialsimuleringarna av scenario 1 såg vi stor skillnad på antalet lyckade spridningar där den sociala status-varianten dominerade. I en simulering där inga personlighetsattri-but hade används så hade samtliga konversationer lyckats vilket är nästan det vi ser i sociala status-simuleringen. Den enda skillnaden är att här bromsar attributet spridningen något, dock ser vi nästan en total spridning slutresultatet. Vi kan alltså dra slutsatsen att pratsamhets-attributet har haft störst betydelse av de två när det gäller att begrän-sa spridningen. Kanske hade en överföringbegrän-salgoritm där båda attributen spelat lika stor roll, givit ett mer intressant resultat. Ytterligare justeringar och simuleringar hade kunnat avslöja detta.

I de regisserade scenarierna A och B lär vi oss att trots implementeringens dynamiska och självgående stil krävs det fortfarande en stor mängd manuella justeringar av värdena för att uppnå ett realistiskt resultat. Det går alltså inte att bara låta tekniken lösa problemet, det krävs fortfarande att man behandlar ett sådant här system som ett hantverk. Vi lär oss även av scenarierna att det sociala status-värdet av 0,1 för barn är något lågt. Det nya värdet av 0,3 som vi ofta använde oss av efter ändringarna verkade passa bättre. Det bidrog att barnen oftare talade med sina föräldrar och inte bara med andra barn. På så sätt kan vi använda barn-NPC:er som är bra spridare inom byarna för att sprida kunskapen. Efter det använder vi trappstegseffekten för att flytta den uppåt i rangerna för att nå NPC:er med hög social status som kan tänkas vara viktiga i ett riktigt spel.

Figure

Figur 1: Spelvärlden befolkad med NPC:er.
Figur 5: Scenario 3, Tabell över NPC:er som lyckats sprida kunskapen samt deras person- person-lighetsattribut
Figur 6: Scenario 1, endast social status, Tabell över NPC:er som lyckats sprida kunskapen samt deras personlighetsattribut
Figur 8: NPC:ers rutiner och attribut
+7

References

Related documents

Utan att åsidosätta prisstabilitetsmålet ska Riksbanken också bidra till en balanserad utveckling av produktion och sysselsättning (ta realekonomisk hänsyn). 89) 1 Vi stöder

IFAU behandlar dina personuppgifter i enlighet med gällande lagstiftning/regelverk som följer av Dataskyddsförordningen (GDPR). Information om hur IFAU behandlar dina

Once more, Kalmar became the hub in a great union, this time uniting the Kingdom of Sweden and the Polish-Lithuanian Rzeczpospolita, Unfortunately, this brave experience

THE ADMINISTRATIVE BOARD OF KALMAR COUNTY'S ROLE AND EXPERIENCES CONCERNING CONTAMINATED SITES Jens Johannisson Administrative Board of Kalmar County, Sweden.. THE ROLE OF

ståelse för psykoanalysen, är han också särskilt sysselsatt med striden mellan ande och natur i människans väsen, dessa krafter, som med hans egna ord alltid

each other to fully achieve targeted goal. In particular, regardless of the fact that management contract is the most favorable entry mode in terms of return