Skissa och gissa Individuellt Mjukvaruutvecklingsprojekt, 1DV430 Christian Nilsson, cn222gc, WP2012 2013 06 07 1
Abstrakt Detta är min slutrapport för arbetet med att ta fram ett spel kallat Skissa och gissa. Slutrapporten innehåller bakgrunden samt mina positiva och negativa erfarenheter från projektarbetet som genomförts i kursen Individuellt Mjukvaruutvecklingsprojekt. Spelet är utvecklar i HTML, CSS och Javascript. Tekniker som Node.js, Html5 canvas och websockets har använts. Spelet går att testa på http://skissaochgissa.se. 2
Innehållsförteckning Försättsblad 1 Abstrakt 2 Innehållsförteckning 3 Bakgrund 4 Positiva erfarenheter 5 Negativa erfarenheter 6 Sammanfattning 7 3
Bakgrund 1 Efter att ha läst Webbteknik I blev jag väldigt förtjust i javascript och jag ville därför göra något med mycket javascript. Mitt mål med projektet blev att lära mig så mycket som möjligt om 2 3 javascript och designmönster. Jag är egentligen inte speciellt intresserad av spel eller spelutveckling, men detta kändes som ett bra projekt där jag kunde få med mycket javascript. Jag bestämde mig för att använda Node.js på servern, och ett webbramverk till det. Därför testade jag ett par olika för att hitta det rätta. Jag valde Express eftersom det liknar Sinatra, som är ett ramverk för Ruby jag har använt mycket innan. Spelet skulle vara ett multiplayerspel och jag behövde därför hitta en teknik som kunde hantera 4 det, websocket passade perfekt. För att det skulle gå snabbt att komma igång att spela valde jag att använda Facebook för inloggning. Inloggning behövdes för att kunna se vem man spelar mot och för att spara poäng. Jag har arbetat iterativt och för varje vecka har jag gjort en veckoplanering med uppskattade timmar och faktiskt arbetade timmar. 1 https://coursepress.lnu.se/kurs/webbteknik i/ 2 Ett programmeringsspråk. Lär mer på http://sv.wikipedia.org/wiki/javascript 3 http://sv.wikipedia.org/wiki/designmönster 4 http://sv.wikipedia.org/wiki/websocket 4
Positiva erfarenheter De flesta erfarenheter från detta projekt har varit positiva eftersom jag har lärt mig väldigt mycket. Dels på grund av att jag har läst väldigt mycket om javascript. Allt har även flutit på ganska bra och jag har inte haft några större problem. Jag har lärt mig mycket mer om CSS3 transition och keyframes som jag har använt på en del ställen för att göra animationer. Väldigt stor del av spelet består av websockets och därför har jag lärt mig mycket om Socket.io. Jag har lärt mig att Google är bättre än dokumentation och den bästa informationen finns oftast på Stack Overflow. Jag har varit ganska bra på att planera mitt arbete och jag tycker jag har haft stor nytta av det. Därför har jag kunna koncentrerar mig på programmering istället för att fundera på vad jag ska göra. Vim är den kodeditor som jag oftast använder, eller något vim plugin om jag måste använda något annat som t.ex. Visual Studio. Men när jag jobbar med gränssnittet har jag använt Chrome Developer Tools istället för att direkt kunna se förändringarna. Jag märkte att det hjälpte väldigt mycket att ta screenshots av alla förändringar jag har gjort i gränssnittet, för att slippa skriva om CSSen när jag glömde hur något såg ut. Jag strukturerade koden som jag gjorde i Webbteknik I och det har fungerat bra, men det hade antagligen varit bättre att använda Backbone eller något annat MV* ramverk och Requirejs. Jag har använt Sass och Compass för att generara CSS och har därför inte behövt bry mig om webbläsarnas olika vendor prefix. 5
Negativa erfarenheter En negativ erfarenhet är att dokumentationen till olika bibliotek och ramverk inte alltid är så bra och ibland inte ens stämmer. Men ibland finns det både dokumentation och gott om exempel och oftast går det bra att googla fram lösningar. Debuggning i webbläsaren med Chrome Dev Tools fungerar ganska bra, men debugga Node.js har varit väldigt svårt och har mest bestått av olika utskrifter i terminalen. Utöver Product Backlog och Sprint Backlog har dokumentationen inte gått så bra. Den har ofta blivit eftersatt eftersom det har varit roligare att programmera. Hade jag skrivit Sprint Retrospective hade jag antagligen haft lättare att skriva denna slutrapporten. Jag han inte med allt jag ville, så jag kanske valde antagligen ett för stort projekt. Men det kan även till viss del bero på att jag hela tiden kom på nya idéer och funktioner som spelet behövde. För att inte behöva vänta på Facebook inloggningen när jag utvecklade och laddade om webbplatsen ofta, plockade jag bort den koden. När jag sen la in koden igen upptäckte jag att jag skulle gjort vissa saker lite annorlunda, men jag hade inte tid att ändra något. 6
Sammanfattning Även om kursen är slut kommer jag fortsätta med projektet, främst med poängsystemet. Poängen borde antagligen sänkas ju längre tid det tar att gissa rätt, och den som ritat borde kunna får extra poäng om hen använder många färger eller ritar väldigt mycket. Även om det kanske bara är ett fåtal bilder som är värda att spara så sparas alla. Därför borde bilder som inget tittar på tas bort efter ett tag. Detta är bara ett par av de saker jag vill göra, med det som jag kommer börja med är antagligen att strukturera om koden. Jag var även innan jag började med detta projektet intresserad av funktionell prgrammering och mitt intresse har bara växt. Jag har därför tänkt läsa en kurs i Scala under sommarlovet. Detta är det största projektet jag har gjort och även om jag inte känner mig helt färdig med spelet så har jag uppfyllt alla baskraven och lärt mig väldigt mycket samtidigt som jag har haft väldigt roligt. Jag tycket därför att projektet har varit lyckat. 7