HIOF IT DMPro 07 Spillprogrammering i flash Gruppe spill_v0926 Øystein Lyby Driton Peci Klaus Jäger Sluttrapport til spillet «InQuizzion»
Introduksjon Spillet Vi har laget et Quiz/kunnskaps spill der spilleren er en alien som må gjennom en test for å kunne få lov til å besøke Jorden. Spilleren har 3 svevende satelitter som alternative svar på spørsmåla som blir gitt. Spilleren har til rådighet å bruke en Google-knapp, dersom han ikke vet hva svaret er. Dersom spilleren tar sjansen og svarer på feil satelitt, får han muligheten til å ta i bruk Wikipedia knappen som kommer opp etter feil svar. Her har han muligheten til å finne svaret og prøve igjen. Hvorfor vi har laget akkurat dette spillet og hva skilles fra andre lignende spill? Ett av målene vi satt oss var å lage et annerledes quizz spill. I virkemåten utseende og tematikk, fordi vanlige quiz bare appellerer via tekst og kan være ganske slapp i lengden. Vi ønsket Quizz med spenning gjennom tid, men også mulighet for å bruke ferdigheter. I tillegg har vi implementert noen kule lyder som øker konsentrasjon, eller skaper litt panikk når tiden går ut. En del ideer utover det måtte vi skrinlegge, da vi ikke hadde kunnskap nok til å integrere disse funksjonene problemfritt. Vi ville skape noe som har potensialet til å videreutvikles og øke vår kompetanse. Vi ville også lage et spill som kan tilfredsstille kravene som integrerer ande ressurser som wiki, google og Youtube. Vi tenkte å tilby en modifisert versjon til avdelingen for lærerutdanningen. Ut av egen erfaring vet vi at kunnskap er ofte lettere tilgjengelig og blir forstått, når fremstillingsmåten av informasjonen blir gjort på en underholdende måte. Studentenes fokus og interesse styrkes dermed og lærings-kurven økes. Spill,nysgjerrighet, interesse, forskning, ferdighet, underholdning og historiefortelling samt kunst /musikk er stikkord og faktorer i videreutviklingen av spillet. For å øke kunnskapsmengden, valgte vi å bruke et større medium sammen med quiz-spillet. Ved integrering av Google og Wikipedia tok vi hensyn til å gjør quizzet mer lærerik og utfordrende. Spilleren får også muligheten til å forske på det hun ikke kan svaret på. Bruker veiledning Etter ferdig videosekvens, må spilleren trykke Start for å begynne spillet. Etter at spillet har startet, går også tiden, og spilleren må velge riktig svar ved å trykke venstre museknapp. Dersom spilleren ikke vet svaret, kan spilleren benytte seg av Googleknappen til høyre og deretter svare inne 60 sekunder. Trykker spilleren på feil svar, kommer det opp alternativ på om han vil prøve på nytt. Spilleren har også mulighet til å finne svaret før han prøver på nytt.
Henviser til illustrasjon nummer 1. 60 sekunder Tid-teller representert av en krympende sirkel som skifter farge fra grønn til gul og så rød ved de siste 10 sekunder sammen med en alarmerende break-beat. 2. Jordkloden som også huser enter knappen ved spilloppstart. 3. Info videopanel som dukker opp med audiovisuelle beskjeder fra zyclopshead of immigration IQ quantum control crewen. 4. De tre svar alternativer 5. Spørsmål 6. Lignende satellitter hvorav den rette skal klikkes 7. Googleknappen 7a. Google siden som inneholder material som hjelper til å finne svaret 8. On lyset signaliserer at spillet er i gang 9. En nano satellit som er på tenkt en truende rolle i senere versjoner av spillet som nå bare skal gir litt bevegelse til bildet 10. Et sky med spacejunk, som i senere versjon av spillet, skal ekspandere og setter svar alternativ-satellittene og senere quizzstation i fare. Dette skal gjøres ved bruk av partikkler. 11. Total time teller som skal vise oppspart tid.
12. Her dukker det opp de siste 10 sekunder før tiden går ut i en 60 sek syklus 13. Wikipedia knappen med linken til det sist feil besvarte topikk 13a. Wikipedia siden med informasjon og svar på sist feil besvart spørsmål 14. Retry knappen 15. «Viktig tekstbeskjed» panel
Teknisk oppbygning
Beskrivelse av funksjonene i spillet: Til å begynne med hadde vi for mange ideer og for mange konsept på løsningen om hvordan spillet skulle se ut og fungere. Derfor valgte vi fra første stund å fokusere oss på koding av de forskjellige funksjonene, framfor å benytte flash-animasjoner for å lage spillet. Dette for å legge mer vekt på kvalitet, framfor kvantitet. Vårt ferdigspill er derfor veldig forskjellig både funksjons og designmessig fra vårt detaljerte prosjektforslag. Veien til ferdigspill har bestått av opptil flere diskusjoner innad i gruppen. 1. Lyd For å spille lyden i spillet, kom vi fram til koden ved hjelp av boken, ActionScript 3.0 Bible. Denne koden hjalp oss ikke fullt ut, fordi vi skulle spille flere lyd-filer samtidig og etter hverandre. Det ene problemet løste vi ved å spille lydene i forskjellige lyd-kanaler. Dermed stoppet ikke lydene når en ny lyd skulle spilles. Problemet med å spille lydene etter hverandre fikk vi ikke løst på en funksjonell måte og vi valgte derfor å gjøre det enklere ved å sette lyden sammen med videoklippet. En mulig løsning på dette lydproblemet, ville vært å sette lydene i en Array, noe vi ikke hadde anledning til å teste ut. Etter som vi hadde tilgang til flere forskjellige elektroniske lyd-instrumenter internt i gruppa. 2. Video I vårt spill har vi valgt å inkludere en videsekvens for hver gang det skjer noe i spillet. Vi har en velkomstvideo, som forteller oss hva vi skal gjøre. En nextlevel video som kommer opp, dersom man har svart på 5 rette svar. Svarer man feil på et spørsmål, kommer det opp en failed-video. Har man klart alle spørsmåla, kommer det opp en velkommen-til-jorda video. Koden for videospilleren har vi funnet delvis av oss selv ved å benytte ActionScript 3.0 Bible og forumsider på internett. Aller først trodde vi at vi måtte legge alle videoene i en Array, men kom fram til at vi også kunne Streame hver video. Til å begynne med hadde vi problemer med å integrere denne koden, da vi forsøkte å sette det inn i egne funksjoner. Det vi kom fram til var at deler av denne koden kunne ikke stå inne i en funksjon, men måtte ligge utenfor funksjonslaget. 3. Satellittene I begynnelsen av dette spillprosjektet bestod satelittene av baner som var laget av «Guides». Dette gikk vi bort fra og bestemte oss for å benytte kode til å flytte på satelittene. Dette fører til at vi med enkle grep kan forandre hastigheten og banerettingene i spillet. Koden til dette fant vi på www.actionscript.org og problemet med dette var at det var skrevet i ActionScript 2.0. Store deler av tiden gikk til å oversette dette til ActionScript 3.0. Dette klarte vi med minimal hjelp. Etter at dette var gjort, fikk vi hjelp til å legge alt ett kode lag (currenttarget). Satelittenes funksjon er bygget opp av et senterpunkt, der hver satelitt roterer i satt avstand og vinkel fra senterpunktet. Det har tatt oss tid å forstå matematikken bak koden.
4. Filsystemet Filsystemet er bygget opp utifra at man kan sette inn hva slags spørsmål man vil, uten å ha noen bakgrunns erfaring med Flash eller XML. Aller først i filsystemet kommer spørsmålet, deretter kommer tre forskjellige svaralternativer(dette kan utvides etter hvor mange svaralternative man vil ha, med enkle justeringer i actionscript koden). Etter dette kommer en google link etterfulgt av en wikipedialink. Aller sist kommer tallet for hvilken rett svar. Alle disse blokkene er delt med spesialtegn. Eksempel: spml;:;alt1;:;alt2;:;alt3;:;google;:;wikipedia;:;rettsvar Linkene til Google og Wikipedia kan enkelt kobles til egne databaser. Spørsmåls fila blir lastet inn av en Array, som blir delt ut til hvert sitt element. Vi har også klart å lage en randomfunksjon til dette, med hjelp fra lærer. 5. Filbehandling Elementene i Arrayen blir fordelt til fire tekstfelt, googleknappen og wikipediknappen. Satellitten får tildelt nummer fra 1-3, der en av disse alltid er det riktige svaret. Tallet peker på elementet i Arrayen, som inneholder rett svaralterantiv. Til sammen er det 4 tekstfelt, der ett av disse er spørsmålet, og 3 andre er alternativene med rettsvar. En grafisk framstilling av hver satelitt står ved siden av svaralternativene. Utifra disse må du velge hvilken satelitt som inneholder rett svar. For hvert spørsmål følger 2 forskjellige linker, en fra Wikipedia og en fra Google. Googlelinken som er tilgjengelig før man svarer, er ikke nødvendigvis nøyaktig link til riktig svar. Dette for at spilleren må lete seg fram. Wikipedialinken er en direkte link til informasjon til riktig svar, denne kommer ikke opp før spilleren har svar feil. Dette for at spilleren må tilegne seg mer kunnskap. 6. Tidsbehandling Tiden i spillet har blitt satt til at spilleren har 60 sekunder på å svare. Dette kan enkelt endres ved å forandre på en variabel som heter «tid», utifra hvor vanskelig man vil at spillet skal være. Tiden blir vist for spilleren via en sirkel som starter som grønn og etter 30 sekunder går den over til å bli gul. Når spilleren har kun 10 sekunder igjen, blir sirkelen rød og det trigges en varslingslyd. Samtidig blir det visualisert en nedtelling fra 10 sekunder. I tillegg til fargeendring, vil sirkelens diameter minke for hvert sekund. 7. Kontroll av Svar og Level bytte For at vi skal kunne sjekke om spilleren har svart rett, har vi laget en funksjon som heter «sjekksvar». I denne funksjonen lagres det siste elementet i Arrayen, altså den som inneholder riktig svar alternativ. Denne blir sjekket opp mot hvilket svaralternativ spiller velger. Dersom riktig svar blir trykket, vil 3 forskjellige variabler økes med 1. Dette medfører for det første at neste kolonne i Arrayen blir lagt ut (neste spørsmål kommer). For
det andre, vil variabelen «indexteller» øke helt opp til den blir 5. Da skiftes det level på spillet. For det tredje, økes det en variabel som heter «rettsvar» frem til denne blir 10. Dette vil være slutten av spillet. De siste 2 variablene kan enkelt endres utifra hvor mange level eller spørsmål man vil ha. Dersom spilleren svarer feil på et spørsmål, vil aller først en video spilles av. Etter at videoen er ferdig, vil det komme opp 2 forskjellige knapper. Den ene knappen gir deg mulighet til å finne riktig svar på Wikipedia og den andre starter spillet på nytt. Spillet må uansett startes på nytt for at man skal kunne fullføres. Arbeidsprosess innad i gruppa Vi i gruppen har hatt et tett samarbeid, fra dag en bestemte vi oss for å ha gruppemøter så ofte som mulig. Dette har ført til at vi har jobbet med spillprosjektet 2-3 dager i uka, minimum 3-4 timer per dag. Både før og etter forelesningene. Dette vil ikke si at vi alltid har vært enig hele veien. De uenighetene vi har støtt på, har vi klart å diskutere oss fram til en gjensidig løsning som alle kunne stille seg bak. Uenighetene har stort sett gått ut på hvordan man best kunne arbeide parallelt med både design og kode. Til å begynne med gikk det en del tid til å tenke konsepter for hva som skulle bli laget. Noe av denne tiden kunne vi brukt til å finne ut hvilken kunnskap vi hadde for hvordan vi skulle realisere spillet. Vi hadde flere forslag på hvor spillet skulle befinne seg. Noen mer urealistiske enn andre. Mye av grunnen til at dette tok litt tid, var fordi vi måtte beskrive ett konsept uten å ha oversikt over hvilken kompetanse vi hadde på spillprogrammering. Arbeidsfordelingen i gruppen Enhver gruppemedlem hadde sin spesielle ansvarsområde, men likevel ble all problemstillinger diskutert og avgjort i gruppen. På denne måten skulle vi samtidig ta vare på både spillets kvalitet og deling av kunnskap. Klaus jobbet med designen, Øystein jobbet med koden og Driton jobbet med research. Denne fordelingen ble tildelt utifra gruppemedlemmenes tidligere erfaringer. Hva vil vi gjøre annerledes? Fra begynnelsen var formålet å fokuserer mest på aktivisering av de grafiske elementer og videolayers gjennom AS3. Spillet tar fortsatt mye plass og vi er klar over at mange grafiske elementer kan skaleres ned i størrelse og bit størrelse, eller kan omgjøres til vektobasert grafikk. Dette vil medfører en drastisk redusering av filstørrelsen mot en ønsket totalstørrelse av ca 3-4 mb eksklusive streamet video. Vi har fortsatt noen små-bugs i koden. En av disse er at video for neste-level og avslutningsvideo spilles samtidig. En funksjon vi ikke fikk implementert var syklisk gjentagelse av ubesvart spørsmål etter 5 stilte spørsmål. Dette er feil vi ønsker å rette på, grunnet mangel på tid, har vi ikke fått utført det. Vi så også bort fra å integrere funksjoner som GUI-skift og musikk valg. En annen funksjon vi ønsker å legge til, er at spillet blir koblet til en ekstern database. Som for eksempel datawiki eller Wikianswers.