Robin Wahlstedt Datavetenskap / Spel Vetenskapsmetodik rwt07001@student.mdh.se Datorgrafik i spel 1
Sammanfattning Dator grafik kan delas in i fyra olika områden: information, design, simuleringar och fönsterhantering. Det finns många aspekter som man måste tänka på när man skapar grafiken till ett program. Om man t.ex. skapar ett spel måste man tänka på hur man hanterar skuggor, ljus och vinklar till de objekt som man skapar i grafiken. Spelare kan sedan ändra på dessa inställningar i spelet för att få en så bra spelupplevelse som möjligt utan att bilden hackar fram med alldeles för låg fps, antal bilder per sekund. Det första spelet som använde grafik var spelet Tick Tack Toe redan på 50 talet och sedan dess har grafiken utvecklats oerhört. Alltså på bara ett par decennier utvecklades grafiken enormt, bland annat från två dimensioner till tre dimensioner. Dessutom har man även förbättrat tekniken ytterligare. Spelgrafik utvecklas hela tiden eftersom spelföretagen vill att varje ny utgåva ska sälja bäst på marknaden. Detta är nog den största faktorn till att det går så fort att komma på nya tekniker inom datorgrafik. När man skapar ett spel använder man sig av olika sorters grafikbibliotek som innehåller funktioner för att hantera grafiken på olika sätt. 2
Innehållsförteckning Datorgrafik i spel... 1 Sammanfattning... 2 Inledning... 4 Datorgrafik... 4 Grafik och spel historia... 5 Dimensioner... 8 Grafik bibliotek... 9 Slutsatser... 9 Referenser... 9
Inledning Datorgrafik är bilder som förmedlar vad som händer på skärmen. Användaren i ett spel ska kunna se bilden och förstå vad som händer och kunna agera därefter. Till att börja med så hade jag tänkt förklara vad datorgrafik är och sedan gå in på hur grafiken har utvecklats med åren. Spel har inte alltid sett ut som de gör idag. Därmed kommer jag också att gå in på spel utvecklingens historia. Efter det kommer jag gå in och förklara vissa begrepp i ämnet spelgrafik. Datorgrafik Datorgrafik kan delas in i 4 olika områden. För att visa information Design Simuleringar / Animeringar Fönsterhantering Datorgrafik är med andra ord den information som visas på skärmen. Som användaren i sin tur ser och uppfattar för att sedan kunna integrera med systemet. Nästan all grafik består av raster grafik. Med det menas att bilden ritas upp av en mängd pixlar som ligger i en buffert som är specificerade till olika delar av skärmen för att skapa den bild som programmet ska visa. Ju mer pixlar man har i sin buffert desto skarpare och mer verklighets trognare ser bilden ut. Man brukar räkna på hur många bitar en sådan buffert innehåller. Desto mer bitar det är desto fler färger kan varje pixel innehålla och de ger mer precision och djup i själva bilden. Om en buffert innehåller 1 bit så innehåller den 2 färger, om den innehåller 8 bitar så blir de då 256 färger dvs 2^8=256.(2) Pixlarna i sig ritas ut på skärmen rad för rad. [Edward]. Det finns också någonting som kallas för vektor grafik. Den typen av grafik används nästan jämt då man ska göra 3d-modulering och är väldigt användbart i spel. Istället för att rita pixel för pixel som man gör med raster grafik så ritar man linjer, trianglar eller andra geometriska formler för att bilda objekt. [12] Det är ganska mycket man måste tänka på när man skapar bilder till olika program. Man vill att de ska vara så verkligt som möjligt. Tex om man vill skapa en 3d miljö i ett spel så måste man tänka på hur det ser ut i verkligheten. Hur vi ser att något objekt befinner sig längre bort eller inte? Man specificerar vart de specifika bild delarna ska ritas ut med geometriska formler och sedan ritar man ut bilder med linjer, prickar, polygoner eller helt enkelt laddar in en bild som man sedan placerar på den positionen med hjälp av x,y,z formeln. [Edward] Varje objekt ser också olika ut beroende på vilken vinkel man väljer att titta på bilden ifrån. Ser man ett objekt rakt framifrån så ser objektet helt platt ut och man kan egentligen inte anta att det finns någon baksida av själva objektet. Men ser man ett objekt snett framifrån så bildar man ofta en bild i huvudet att de finns en baksida av objektet även om det i vissa fall kanske inte finns det. [Edward] Men det är inte bara detta som bestämmer hur en bild uppfattas i ett spel eller i något annan form av program. Hur ljus speglar sig mot objekt spelar väldigt stor roll. Skulle vi inte ha någon ljus källa i bilden så skulle objekten vara helt svarta och vi skulle inte ha någon bild alls. Ljuset kan också lägga skugga på vissa objekt om man skulle vilja ha detta för att göra en mer verklighets trolig bild. [Edward]
En metod som gör detta kallas raytracing då man beräknar hur ljus strålarna faller på olika objekt i bilden för att sedan räkna ut skuggan och reflektioner på objekten som ljuset faller på. Detta resulterar i att användaren ser det som den ska se. Med det menar jag om ett objekt befinner sig bakom ett annat objekt så kan vi inte se det objektet eftersom ljuset inte når den bilden. Men de finns ett aber med raytracing och det är att kanterna av skuggorna blir ofta för skarpa så i spel använder man ofta en metod som heter radiosity som fungerar som raytracing men de har inte dessa skarpa kanter på skuggan av objekten.[edward] [1] [2] I spel idag så kan man ändra på sina grafik inställningar för varje spel eftersom alla datorer har olika sorts grafik kort. Vissa grafik kort klarar av att förbättra bilden bättre än andra. Det finns en mängd olika grafik inställningar man kan göra i respektive spel. Här är några exempel på inställningar som man kan ändra på. Upplösning på skärmen Hur många bitar av färger per pixel Om man vill ha bättre kanthantering Vad man ser Om skuggor ska finnas eller inte Hur detaljrik grafiken ska vara Anledningen till att man har möjligheten att ändra på dessa inställningar i grafik är att man vill att bilden ska flyta på så snabbt som möjligt. Alltså man vill ha så hög fram rate som möjligt, betecknas fps ( frame per second) och är antalet bilder som ritas om på skärmen per sekund. Man brukar säga att man vill ha ca 30 fps för att bilden inte ska hacka fram men högre frame rate är alltid bättre. När man spelar spel online framförallt shoot em up (skjutspel i första persons läge) spel så vill man helst ligga på 100 fps eftersom annars så hinner man missa saker som sker och de kan vara väldigt avgörande för spel resultatet. Då man läser detta kanske man tänker att 100 bilder per sekund låter mycket kan man verkligen uppfatta alla dessa bilder? Svaret på den frågan är ja människan kan uppfatta 200 fps. Snabbare än så kan inte människans öga uppfatta bilder. [3] Grafik och spelhistoria År 1948 så kom det första datorspelet "Cathode Ray Tube Amusement Device" av Thomas T.Goldsmith Jr. Han hade inspirerats av den radar som man använde sig utav under andra världskriget. Spelet gick ut på att skicka missiler på saker som kom in i synfältet. Spelets grafik var inte ens i närheten av hur de ser ut idag, och den ansågs inte ens som grafik utan mer som bilder som överlappade varandra. Det första spelet som ansågs använda grafik var spelet tick-tack-toe och som gjordes av Alexander S. Douglas 1952. Spelets grafik bestod av ett antal lysande pixlar som ändrades när användaren spelade. Spelet gick ut på att få 3 av samma valör i rad för att kunna vinna spelet. Den ena spelaren var användaren och den andra var datorn. Spelen på den tiden fanns inte att köpa i någon butik då det var för avancerad teknologi och datorer var inte på tal om att ha hemma eftersom de var enormt stora på den tiden. Denna bild visar hur spelet då såg ut. [4] [5] [6] [7]
Figur: 1 tick-tack-toe Sedan gick de några år, men år 1961 så kom de ett spel som hette Spacewar utvecklat av Steve Russel som blev ganska revolutionerande eftersom spelet hade rörlig grafik och de var det första shoot em up spelet. Shoot em up är en genre av spel som går ut på i stora drag att skjuta ner sin motståndare innan den förstör dig. Spelet gick ut på att skuta ner rymdskepp. Samtidigt som man skulle undvika att bli träffad av sin motståndare. Spelet blev starten för utvecklingen av spel med rörliga bilder för att sedan utvecklas till den typ av spel som vi har idag. [5] Medans tiden gick på så växte det fram fler genre av spel fram. På 70- talet så kom det första video spelet och allmänheten kunde börja ha spel hemma. Och dator spelen och videospelen började utvecklas separat. Spel som Pong och Space invanders kom och folket ville ha mer och mer spel. Alla spel företag försökte överträffa varandra. I och med detta så utvecklades grafiken och det är därför grafik utvecklingen fortfarande går framåt idag. I dags läget handlar det mycket om hur snyggt spelet är, hur verklighets troget det är. De snyggaste och bästa spelen är de som säljer på marknaden likadant var det då. [5] Det dröjde inte länge innan man började tänka i andra dimensioner. År 1974 så kom det två spel som var i 3d. Spelen var maze och spasim. Men 3d spelen slog inte direkt igenom då man fortsatte att göra de flesta spel i 2d. [5] Senare på 1980 talet så började spel komma med 8 bitars färger och Nintendo släppte sin första konsol. Spel blev då ganska vanligt i hushållen och spelföretagen tjänade mer pengar och de kunde fortsätta utveckla sina spel. Bilden nedan visar hur ett klassiskt spel från denna tidsepok. [5] Figur: 2 The Legend of Zelda I början av 90- talet så blev 3d grafiken större och man började också göra spel med 16 bitars färger. I mitten av 90-talet så släpptes den första konsolen som enbart hade 3d grafik. Nintendo 64 som också hade spel med 64 bitars färger och som blev väldigt populärt bland
allmänheten. De flesta var fascinerade över grafiken eftersom de flesta inte hade spelat spel i 3d innan. Man trodde som spelare av dessa spel att de inte gick att utveckla grafiken ytterligare. Bilden nedan visar hur grafiken såg ut i dessa spel. [5] Figur: 3 Zelda: Ocarina of Time Men jag som så många andra hade naturligtvis fel. Kring år 2000 så släpptes de dator spel och konsol spel med grafik som inte var så kantig. Man hade utjämnat alla hörn man hade förbättrat all kanthantering. Man kunde lägga in dimma i spelen. Dessutom hade man förbättrat det mesta tex ljus, skuggor och färger. Bilden nedan visar uppföljaren till spelet ovan med den nya sortens grafik. [5] Figur: 4 Zelda: The Wind Walker Fem år senare släpptes den nya generationen spelkonsoler och spel. Det är den typen av spel som vi använder just nu. Förbättringen av grafiken är verkligen stor i vissa spel känns de som man sitter och tittar på 1 film. Directx 10 är ett grafik bibliotek som har varit väldigt givande. De har fått spelen att bli mer dynamiska. Tex om man springer in i en buskar i ett spel som använder detta bibliotek så rör sig busken olika beroende på hur du har sprungit in i den med din karaktär. Ljus och skuggor har förbättras ytterligare för att få en så när som verklighets bild. Bilden nedan visar 1 spel som använder detta. [5] Figur: 5 Modern warfare 2
Dimensioner Ibland när man läser om spel så stöter man på att spelet är ett 2d spel 2½d spel eller ett 3d spel. Jag tänkte nu ta och förklara vad som menas med dessa olika begrepp. Med 2D spel menas spel som är gjorde på två dimensioner. Man skulle kunna säga att man beräknar bildernas position i spelet med hjälp av x och y axlarna. Med det menar jag att bilden bara har höjd och bredd. Man ser bilderna rakt framifrån och dom är helt platta det finns inget djup i bilden. Se figur 2. [8] Med 2.5D spel menas att de är en 2d bild dvs att den bara kan placera den på höjd och bredd axlarna. Men bilderna är inte lika platta som 2d bilderna. Bilderna är ritade som om man skulle se ett objekt snett framifrån. De är ofta vanligt att man använder denna teknik när man gör strategi spel. Många spel till gameboy konsolerna använder också denna teknik tex pokemon spelen. Se bild nedan. [9] Figur: 6 Heroes of Might and Magic Med 3D spel menas att de är ett spel med 3 dimensioner. Det har de före gångarna från 2dn höjden och bredden men de nya är att de finns djup i bilden också. Spel figurerna och grafik objekten kan ritas längs med z axeln. Detta gör att man får en bättre bild av spelet och man kan få känslan att denna plats finns på riktigt. Denna teknik används i dagens shoot em up spel, rollspel, flygsimuleringar mm. Se figur 3 och 4. [10] Grafikbibliotek När man bygger spel så använder man sig av olika grafik bibliotek. I dessa bibliotek finns de funktioner som man kan använda sig av. Som en medlare mellan hårdvaran och mjukvaran som skapar grafik. Grafikens anrop skickas till grafik kortet med hjälp av biblioteket för att sedan utföra de transformationer, texturer och ljus inställningar. Exempel på kända grafik bibliotek är OpenGL, Directx 9 som har varit en standard under lång tid i moderna spel. Som nu directx 10 håller på att efterträda. Men man har inte helt gått över till directx 10 än eftersom att de flesta hemanvändarnas grafik kort inte kan klara av de biblioteket eftersom det fungerar på lite annorlunda sett än de föregångna systemet. En skillnad är att grafik beräkningarna sker på grafik kortet med directx 10, innan så var det processorn som fick lov att sköta den delen. En annan sak som är väldigt bra med directx 10 är att med dess teknik så vet den vad spelaren ser och ritar då inte ut de saker som spelaren inte ser. Detta medför att kortet inte behöver jobba lika hårt. [11] Slutsatser Man kan se att förändringen sker snabbt inom spel grafikens underbara värld. Jag antar att den grafik vi har idag kommer säkerligen kännas gammalt och fult bara om några år. Datavetenskap är ganska nytt om man genomför med hur man tillverkar saker för hand. Man
har tillverkat hus i flera tusen år och det har inte alltid sett ut på samma sätt och utvecklats successivt med tiden, men man har bara hållit på med grafik i ca 60 år. Om man ser på detta sätt så kan man anta att grafiken kommer att förbättras i framtiden. Som nämnts tidigare så vill man utveckla nya saker hela tiden, för nya saker säljer och man tjänar pengar och kan leva. Man kanske kommer på nått nytt sett att hantera färger och ljus. Det finns de som spekulerar i att man kan bygga spel i flera dimensioner än tre, där den 4e dimensionen skulle vara tid. Vad tid i detta sammanhang skulle representera de går att fundera på. Referenser [Edward] Edward Angel, Interactive Computer Graphics, A Top-Down Approach Using OpenGL, Fifth Edition pages 2-15, 1979. [1] http://sv.wikipedia.org/wiki/str%c3%a5lf%c3%b6ljning Hämtad: 02 03 2010 [2] http://en.wikipedia.org/wiki/radiosity_%283d_computer_graphics%29 Hämtad: 02 03 2010 [3] http://sv.wikipedia.org/wiki/frames_per_second Hämtad: 04 03 2010 [4] http://en.wikipedia.org/wiki/thomas_t._goldsmith_jr Hämtad: 23 02 2010 [5] http://en.wikipedia.org/wiki/history_of_video_games Hämtad: 23 02 2010 [6] http://www.mauriciogiraldo.com/vgline/beta/#/191 Hämtad: 23 02 2010 [7] http://en.wikipedia.org/wiki/first_video_game#cite_note-pong_story:_main_page-0 Hämtad: 02 03 2010 [8] http://sv.wikipedia.org/wiki/2d Hämtad: 04 03 2010 [9] http://en.wikipedia.org/wiki/2.5d Hämtad: 04 03 2010 [10] http://sv.wikipedia.org/wiki/3d Hämtad: 04 03 2010 [11] http://level7.nu/pages/directx10alltdubehoverveta Hämtad: 03 03 2010 [12] http://sv.wikipedia.org/wiki/vektorgrafik Hämtad: 03 03 2010 Figur 1: Tick Tack Toe [6] Bilden finns där Hämtad: 04 03 2010 Figur 2: The Legend of Zelda http://en.wikipedia.org/wiki/the_legend_of_zelda_%28video_game%29 Hämtad: 04 03 2010 Figur 3: Zelda ocarina of time http://en.wikipedia.org/wiki/the_legend_of_zelda:_ocarina_of_time Hämtad: 04 03 2010 Figur 4: Zelda: The Wind Walker http://en.wikipedia.org/wiki/zelda: WindWaker 04 03 2010 Figur 5: Modern warefare 2: Hämtad: Print screen 04 03 2010 Figur 6: Heroes of Might and Magic: Print screen Hämtad: 04 03 2010