Teknik GYMNASI EARBETE HÄSSLEHOLMS TEKNISKA SKOLA Cosmos Warfare The game of The Universe Fredrik Sjöholm 30 april 2015 Abstract The aim of this project was to see how people in a group would work together as well as seeing how good a game made in Unity3D; Blender 3D and programmed using Microsoft Visual Studio 2013 as the programming environment, would turn out to be. This was done by using the game engine Unity3D, modeled with the 3D graphics engine Blender and programmed in the IDE Visual Studio 2013 by Microsoft. The results of this project were a playable game with working user account system, multiplayer online support, score system and more. TE Innehållsförteckning Cosmos Warfare......................................4 Bakgrund................................................4 Syfte......................................................4 Frågeställning.........................................4 Avgränsningar........................................4 Metod.....................................................4 Resultat..................................................4 Slutsats..................................................4 Diskussion..............................................4 Litteraturförteckning...............................4 Cosmos Warfare Bakgrund Vi har valt detta gymnasiearbete därför att vi vill se hur vi jobbar mellan varandra samt för att vi gillar att programmera och spel innehåller mycket programmerande (grafisk eller kod) väldigt ofta. Samhället har nytta av detta arbete eftersom de kan spela tillsammans med andra och ha roligt, vilket är bra. Världens absolut första datorspel, som hade en katodstråleskärm, var en tidig version av tic-tac-toe, det vill säga tre-i-rad. Det skapades 1952 av A. S Douglas på en universitetsdator EDSAC. Nu, 63 år senare, skapar vi ett spel som kan spelas på nästan alla datorer och består av 3D-grafik, något som på den tiden inte användes, samt vi har mer grafiska egenskaper, men det beror på att man på den tiden inte kunde ha sådan teknik. Syfte Vårt mål med detta gymnasiearbete är att utveckla ett spel tillsammans för att se hur bra vi kan uppnå det, samt se hur vi jobbar tillsammans när vi inte har vetskap om hur varandra jobbar. Frågeställning Hur arbetar vi när vi inte redan vet du varandra arbetar, bra/effektivt eller dåligt/kan inte integrera till den andra. 5 Avgränsningar - Metod Unity3D, som är en spelmotor, blev spelets grundmotor. Denna går att hämta på http://www.unity3d.com/ och finns både i gratis och betald version. Ett program utvecklades i Visual Studio 2013 för att underlätta fildelning inom arbetsgruppen. Arbetsprocessen bestod av utveckling av fysiska egenskaper, exempelvis gravitation, kollisioner, skottfysik m.m. Processen innehöll även framkallande av diverse servrar, såsom inloggningsserver, som används vid inloggning av spelare samt spelservrar, som spelarna ansluter sig till för att mötas via Internet. Servrarna utvecklades i Visual Studio 2013 med C# (C-Sharp) som programmeringsspråk och följer en liknande nätverksstruktur som fildelningsprogrammet. Under tiden som dessa servrar skapades planerades grunder för spelarna i spelet; det vill säga hur spelarna ser ut, hur de rör sig, nätverkskorrigeringar som används för att kompensera diverse förseningar som kan uppstå vid Internet kommunikation samt fysikegenskaperna, som tidigare nämnts, blev tillämpade på spelarna och mycket, mycket mera. Banor till spelet blev utvecklade och konfigurerade att fungera med nätverksstrukturen och servern blev informerad om aktiv bana så att servern i sin tur kunde informera nya spelare som ännu inte visste vilken bana som för tillfället användes. Ett poäng system blev framkallat och utvecklat så att fusk mestadels blev negerat, delvis genom att en given spelare inte ”ger” sig själv poäng, utan en annan spelare ”tilldelar” den förste med poäng. 6 Vad gäller lag (teams) blev systemet utvecklat så att det teoretiskt kan finnas oändligt många lag, men än så länge blev endast 2 lag utvecklade, ”Human Resistance” och ”Human Brutality”. Spel servern blev även uppdaterad till att klara av ett flertal, det vill säga teoretiskt oändligt antal, olika lag, inklusive varje lags ”spawn point” så att servern sedan kan uppge vilken punkt en given spelare till ett givet lag ska/kan starta på. Modeller, såsom väggar, golv, tak m.m. skapades i ett 3D modelleringsprogram som heter Blender (https://www.blender.org/), detta program är gratis och uppfyller många krav inom 3D grafik. Resultat Resultatet blev ett väl funktionellt spel med många fina egenskaper. Exempelvis funktionell inloggning, registrering och utloggning med användarkonton, spelsökning, poängsystem, poängtavla, grafisk respons när något går fel eller bör observeras, exempelvis vid misslyckad inloggning eller fel vid uppkoppling till server. Just nu saknas animationer till spelarna, både hos den givna spelaren och för andra spelare online. Detta kan däremot jobbas med och få funktionellt. Slutsats Arbetet mellan den aktiva arbetsgruppen var hyfsad mellan varandra, det vill säga: inte dåligt, men inte heller helt bra, trots att vi vet hur varandra arbetar och har en integrations princip. Resultat av arbetet var även ett fungerande flerspelar online spel, med support för ett teoretiskt oändligt antal lag samt grafisk meddelande respons vid behov, exempelvis när inloggning misslyckas eller uppkopplingen till en given server försvann. 7 Diskussion Arbetet hade kunnat gå bättre om arbetsgruppen hade haft bättre arbetsstruktur. Vilka som gör vad inom projektet hade kunnat vara bättre fördelat, förutsatt att varje deltagande utför sina uppgifter, vilket hade gjort att varje person bara behövt jobba/fundera på sina egna uppgifter. Utvecklingen av nätverksstrukturerna gick bra och fungerade utan större problem, spelets utvecklande blev även gjort så att det ska köra snabbt och inte använda krävande egenskaper, det vill säga, spelet ska kunna köra på allt från äldre datorer till dagens datorer. Litteraturförteckning Unity3D (https://unity3d.com/) Microsoft Visual Studio 2013 (https://www.visualstudio.com/) Unity3D Documentation (https://docs.unity3d.com/) Blender 3D (https://www.blender.org/) 8