Ja, da var vi her alt. 10 case har gått fort! Men jeg har lært mye, det kan jeg ikke nekte for! Oppgaven denne gangen var å gjøre siste finpussen, lage meny med knapper, mulighet til å starte spillet på nytt osv. Jeg lagde en meny med instruksjoner til hvordan man spiller, som viser kontroller og poenget med spillet. Så fikk jeg inn et par knapper, en start-knapp og en "se intro"-knapp. Deretter lagde jeg en intro-film, som kommer helt først når man åpner spillet. Når den er ferdig-spilt (eller du har trykket skip intro), kommer du til menyen. Etter spillet kommer en gameover-skjerm, som viser hvor mye poeng du fikk, og med mulighet til å gå til menyen eller restarte. Det meste her var egentlig ganske lett å få til, det vanskeligste var nok nullstilling og fjerning av objekter fra scenen, men med litt pusling og toldmodighet så går det bra til slutt! Spillet er ferdig!
Ja, nå er jeg nærme slutten her! På tide å få litt lyd i spillet nå! Spillet skal ha bakgrunnsmusikk og lyder trigget av forskjellige eventer i spillet. Jeg var smart og lånte med meg en H4 Zoom lydopptaker for noen uker siden og spilte inn de lydene jeg trengte da, så derfor hadde jeg alle lydene ligende på dataen når vi begynte med dette caset. Etter å ha sett et eksempel på hvordan man gjør det kodemessig med lyd, ble jeg overraska, det var jo slettes ikke vanskelig! Man må bare huske på å legge musikken i SoundChannel, så man får ordentlig kontroll over lydklippa. Lydsettinga var faktisk veldig enkelt. Jeg har lagt inn lyder til litt forskjellige situasjoner i spillet, som f.eks. når Gustaf plukker opp godteri, treffer fiender, kommer i mål og sånt no. Det som derimot var litt krevende, var å finne bakgrunnsmusikk. For det første, ikke alt passer i et flash-spill, og jeg hadde en liten idè om hva slags musikk jeg ville ha. Men så var det det å finne den musikken da. Problemet er at mesteparten av musikken du finner på nettet er copyrighta. HELDIGVIS var jeg heldig og fant en side med musikk beregna på å bruke i f.eks. filmer, og der fant jeg den perfekte låta til spillet mitt. Og det beste: ingen copyright! Nå er spillet klar for siste finpus!
I denne casen skulle vi lage objekter som figuren skulle kunne plukke opp for å få poeng, og en timer som holder styr på tiden på et vis.
Objekter som skal plukkes opp i mitt spill, er godteri som Gustaf finner i Karamellskogen. Disse ble lagt i en Array, som fungerer som et magasin med mange objekter i. Det som er smart med array er at man kan styre mange like objekter ved èn kode, i stedet for å gi hvert eneste objekt sin egen kode. Det tok litt tid å forstå det her helt, men tror jeg har litt oversikt nå. Etter å ha fått frem godteriobjektene på skjermen, gjaldt det å flytte arrayen etterhvert som figuren flytta seg rundt, den måtte derfor integreres i move-funksjonen til figuren, noe som gikk ganske lett. Jeg ville også gi godteriet sin egen gravity og kjøre hit-test mot baken på det, ettersom jeg ville at det skulle falle litt tilfeldig her og der, ved hjelp av en random-funksjon, men det førte til at spillet begynte å lagge/henge igjen veldig, noe jeg har begynt å slite mer og mer med i det siste. Jeg vil derfor gi hvert objekt i arrayen et fast-bestemt punkt i stedet, ettersom det krever mye mindre av pcen. Jeg forstår ikke riktig hvorfor spillet hakker så mye som det gjør, det er sykt irriterende og hindrer meg litt i å gå videre med spillet, ettersom det er et problem jeg gjerne vil ha løst. Etter at jeg fikk plassert inn godteriet, la jeg inn en hit-test som sjekker om figuren treffer godteriet, og hvis det skjer, så fjernes objektet og det legges til 1 i variabelen Poeng. Jeg lagde også en HUD, som viser hvor mange liv som gjenstår, antall poeng og til slutt en timer som teller ned. Tanken er at hvis denne når 0 så er spillet tapt. Timeren krevde en del triksing og miksing å få til, klasser måtte importeres og brukes på nye måter, så det tok litt tid å sette seg inn i det. Men jeg fikk det til med litt hjelp fra forskningsassistenter og medelever. Herlig! En ting jeg tenkte med objektene som gir poeng, er at man får en poengbonus til slutt hvis alle objektene er plukket opp. Og jo mer tid man har igjen, jo mer poeng får man. Tror jeg skal få til dette med en enkel variabel. Jeg får se hva det blir til.
package { I case 7 skulle vi integrere enda en karakter i spillet, som skulle leve sitt eget liv og ikke styres av spilleren. Denne karakteren skulle automatisk følge etter hovedkarakteren og eventuell kontakt mellom de to skulle føre til en reaksjon, for eksempel spille av en annen animasjon, vise beskjed på skjermen, fjerne den nye karakteren eller lignende. Jeg har valgt en tannbørste som fiende i mitt spill, ettersom jeg syns den er en passende fiende for en godtegris og sukkerslave som hovedkarakteren min er. Tannbørsten hadde jeg allerede tegnet, men animeringen gjensto. Etter å ha gjort ferdig den, gjaldt det å få karakteren inn i spillet, noe som var ganske enkelt, det ble gjort akkurat på samme måte som med hovedkarakteren. Deretter lagde jeg en hit-test, som sjekka om tannbørsten traff bakken, og la til gravity, som gjorde at fienden fulgte bakken på lik måte som hovedfiguren gjør. Så kom jeg til det jeg syns var den vanskelige delen: å få fienden til å bevege seg riktig i forhold til hovedkarakteren. Ettersom jeg har en GANSKE langt funksjon som ordner med farta på figuren og den bevegelser, tok det en del tid å få alt til å klaffe på riktig måte. Her gjaldt det å holde tunga rett i munnen og tenke riktig. At fienden f.eks. skulle ha minus i fart når jeg løp ifra den, og hvor fort den skulle løpe om jeg løper mot den, står stille og lignende, krevde litt å få til riktig, men til slutt fikk jeg et resultat jeg ble ganske fornøyd med. Så lagde jeg en Boolean-variabel som jeg koblet opp mot hvilken side av hovedkarakteren fienden befant seg på. Var fiendens x-verdi mer enn hovedkarakterens, altså til høyre for den, var variabelen fiendehøyre=true, og scaleX=1. Var x-verdien mindre, var fiendehøyre=false og scaleX=-1. Dermed snur fienden seg etter hvilken side den befinner seg på. Til slutt lagde jeg en hit-test som sjekker om figuren treffer fienden. Hvis den gjør det, springer fienden tilbake den veien den kom fra, og en dø-animasjon avspilles for hovedfiguren. Etter dette, får hovedfiguren et nytt liv (man har i alt tre) og tannbørsten begynner å følge etter igjen.
I case 5 skulle vi få figuren vår til å følge bakken den gikk på og ikke bare gå rett bortover langs x-aksen. Vi skulle også få figuren til å hoppe, bytte til riktige animasjoner og få figuren ned på bakken igjen ved hjelp av gravitasjon.
Mange nye kodeelementer ble introdusert i actionscript-programmeringen, men uten at vi fikk noen innføring eller forklaring i bruk av koden, noe som førte til GANSKE mye frustrasjon for undertegnede. Iblant var jeg frista til å kaste dataen ut av vinduet, i ren irritasjon over at jeg ikke hadde en anelse om hvor jeg skulle begynne for å få til denne casen. Fram til case 5 har vi fått alt inn med teskje med tanke på hvordan vi skal programmere, vi har fått forklaring på hvordan ting funker og vi har nærmest kunne kopiere ferdig kode med kommentarer inn i fila vår og få det til å virke. Så, ved case 5 ble alt dette tatt bort. Alt vi satt med var et stykke uforståelig kode som vi på et vis skulle klare å integrere i vår daværende kode. En alt for stor overgang syns jeg. Ikke at jeg syns vi skal få alt opp i hendene som vi gjorde på tidligere case, men overgangen til å stå fullstendig på egne bein kom litt for brått.
Heldigvis sto forskningsassistenene tilgjengelig søndag kveld før case-frist og hjalp til å klarne opp i tankene til en fortvila stakkar. Jeg fikk en pekepinn på hvordan koden skulle brukes og hvor den skulle settes inn, og jobbet en god stund for å få den til å passe til mitt prosjekt. Og etterhvert ble det ganske så bra syns jeg selv. Sent søndag kveld var case 5 ferdig.
I case 6 var det tilbake til tegning og design igjen. Vi skulle begynne å designe bakgrunn og fiender som skal være med i spillet. Jeg har kommet godt i gang med bakgrunnen og fått til scrolling slik jeg vil ha det, men caset blir nok ikke ferdig med det første, jeg kommer hele tiden til å prøve å videreutvikle designet. MEN: grunnlaget er lagt. Etter at jeg fullførte case 5 føltes det MYE enklere å gå igang med programmering på egenhånd og eksprimentere med koden. Jeg føler meg ikke lengre bundet opp av casene, men at jeg kan jobbe på egenhånd og utvikle spillet slik jeg ønsker det.
Ideen for spillet begynner forhåpentligvis å nå sin endelige form, historien er ganske like slik jeg tenkte i begynnelsen: Gustaf blir nektet å spise godteri av foreldrene og pålagt diet. På grunn av dette, rømmer Gustaf hjemmefra, ut i den nærliggende skogen, på jakt etter godteri.
Rent funksjonsmessig kan Gustaf løpe fritt mot høyre og venstre, hoppe over hinder og opp på platåer. Hans mål er å samle opp godteri som han finner på sin vei (som muligens skal gi han sukkerkick, dvs. sette opp farten på gangen). Han må unngå fiender som er ute etter han, som jeg foreløpig vil holde hemmelig.
Under kan du se hvor lang jeg har kommet hittil:
Klikk på animasjonen for å gjøre den aktiv, og bruk deretter piltastene for å styre figuren til høyre og venstre og hoppe med opp
Allright.... Case 4. Få figuren til å bevege seg til høyre og til venstre ved bruk av piltastene, og innta en idle-posisjon når ingen knapper er trykt ned.
Hadde vanskelig for å sovne natt til i dag, så ble sittende å trikse og mixe med denne casen en god stund utover natta. Fikk satt sammen en sprite og gikk i gang med kodingen. Fikk det til, men det ved hjelp av så og si ren avskrift fra eksempelet jeg fant på fronter. Å forstå hva jeg har gjort blir no annet, det kommer vel etterhvert. Skal prøve å jobbe meg gjennom koden noen ganger sammen med kommentarene i eksempelet, og få lest de første kapitlene i boka, så kanskje jeg forstår litt mer hva jeg driver med, for akkurat nå er det litt fjernt. Ellers tar det nok en del tid bare å komme inn i basic oppsett av koden og kommandoer.
Ellers har jeg et problem med at koden, ved oppstart av programmet, looper spriten helt til man har trykt ned en av tastene. Jeg må finne en måte å forhindre dette, slik at når programmet startes, står figuren i idle-posisjon. Noen som vet hvordan man gjør det? HEEELP!
Klikk på animasjonen for å gjøre den aktiv, og bruk deretter piltastene for å styre figuren til høyre og venstre
Endelig! Det har tatt sin tid, men endelig er jeg ferdig med case 2, som gikk ut på å animere figuren min. Jeg har nå fått animert den løpende, stillestående og hoppende, alle stillingene både mot høyre og venstre. Jeg har brukt bone-tool, som har tatt en god del tid og krefter å bli kjent med og sette seg inn i. Mye prøving og mye feiling gang på gang, og smådetaljer man glemmer som man får svi for seinere, som f.eks. å huske på å ha samme stilling på starten og slutten av animasjonen. Akkurat selve animeringa gikk vel egentlig greit når jeg fikk bone tool til å virke slik jeg ville, ettersom det meste gjør seg av seg selv bare man setter inn forskjellige "poses". Noe som igjen ga meg en utfordring var når jeg hadde animert løpende og idle mot høyre og jeg skulle vende figuren. Det ble mye frem og tilbake og tull, (trolig pga. bone-tool), men kom vel frem til at det lønte seg å dytte alt inn i et symbol og deretter vende figuren. Ettersom figuren min ser forskjellig ut fra høyre og venstre side, ble jeg nødt til å gå inn i symbolet etter jeg hadde vendt det og bytte litt rekkefølge på layers og flytte litt på ting, noe som gikk bra.
Case 3 har jeg også blitt ferdig med, men vet ikke riktig om jeg har skjønt hvordan enda. Ble for det meste avskrift mens caset ble gjennomgått på torsdag, så en del av funksjonene som ble brukt er tilnærmet gresk for meg foreløpig. MEN, skal få lest igjennom kapittelene i boka som omhandler det, og jobbe en del med det, regner med at det vil gjøre ting litt mer forståelig.
Generelt syns jeg kurset går greit, det er morsomme, utfordrende og tidskrevende oppgaver, men ikke så mye at man ikke klarer det. Men jeg savner kanskje litt mer gjennomgang i det vi får utdelt caset, i stedet for at vi må vente helt til torsdag. Sitter man fast mandag og ikke vet hvor man ska begynne, blir det fort til at man venter til man får en gjennomgang på torsdag, og da har man bare helga på seg til å gjøre ferdig caset. Hadde vi fått en lett gjennomgang og mer oppstartshjelp på mandag, hadde vi hatt mulighet til å snakke om det i gruppene etterpå og vært bedre rustet for å hjelpe hverandre gjennom uka. Deretter kunne vi hatt en mer fullstendig, evt. mer fordypende gjennomgang på torsdag.
Vi har fått nytt case denne uka, nr 2 av 10 på veien til et ferdig plattformspill. Denne uka skal vi få figuren vår til å bevege seg, og Flash byr nok en gang på tålmodighetsprøver og STORE mengder frustrasjon. Bone-tool, som brukes til å bygge opp et skjellett i figuren er vel trolig det verktøyet jeg har dratt ut mest hår av hode på grunn av. Makan til kronglete og trøblete verktøy skal man lete lenge etter.
KLIKK PÅ BILDET FOR Å SE ANIMASJONEN
Her er animasjonen hittil, fortsatt en god del finjusteringer og endringer som skal til.
Endelig er hovedkarakteren i spillet ferdig-tegna, i allefall slik han kommer til å se ut "in-action". Nå gjelder det bare å få tegna han litt mer på skrå, vendt mot skjermen, som blir posisjonen han vil stå i når han står stille. Klokka går fort når man holder på med det her, så håper jeg rekker å få det til før det blir alt for seint.
Gleder meg til å få nytt case i morgen, da skal vi begynne å animere bevegelsene til figuren, som jeg kan se for meg sikkert blir både morsomt og sykt frustrerende. Blir også spennende å se hva de andre i gruppa har fått til.
TIPS! Har lagt min elsk på line-tool (N), kombinert med selection-tool (V), som gjorde det meste arbeidet myyye mindre frustrerende og vanskelig enn hva det var med pen-tool. Så, syns du pen-tool var vanskelig, anbefaller jeg virkelig å bruke disse to i stedet, fordi de gjør så og si akkurat samme nytta. Tegn en linje med line-tool, og bruk deretter selection-tool til å lage bue på linja, gjøre den kortere, eller lengre.
Ja, da var vi i gang. Vi har fått vårt første case, å tenke ut en spillidè a la plattformspill og designe og tegne en hovedkarakter til spillet. Som om ikke det å tegne i Photoshop var vanskelig nok, ble det ikke akkurat enklere nå som vi begynte i Flash. Mye automatikk, ting som ikke blir som man vil, og mye prøving og feiling. Ganske uvant å måtte tenke på vektorpunkter og alle disse lagrene, fort gjort å glemme seg litt bort. MEN, skal nok få det til!
Her er så langt jeg har kommet med hovedkarakteren, den "lille" gutten Gustaf.
Spillidè: Den lille gutten Gustaf, en ekte sukkerslave, rømmer fra foreldrene etter at de pålegger ham sukkerforbud og Fedon Lindberg-diett. Like utenfor byen, finner han en mystisk skog som lokker ham til seg med allslags fristende godteri. Men er alt dette kanskje for godt til å være sant? En kamp om sukker på liv og død venter ham.
For de av dere som ikke vet hva OPIM er for noe merkelig, så er det en forkortelse for "Opplevelsesproduksjon og interaktive medier" som er studiet jeg holder på med her på Hamar. Animasjon, spillprogrammering/design, filmproduksjon, lydsetting og mye mer er noe av det vi skal holde på med.
På denne bloggen kommer jeg for det meste til å skrive om prosjekter jeg holder på med og hvordan de utvikler seg.