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