Datorspelshistoria: Tidigt 70-tal

Relevanta dokument
Datorspelsgrafik. Gustav Taxén

Datorspelsutveckling. Datorspel. Datorspelsföretag - roller. Finansiering. Spelmotorns komponenter. Datorspelsföretag - projekt.

Rastrering och displayalgoritmer. Gustav Taxén

Spelutveckling 3d-grafik och modellering. Grunder för 3d-grafik Blender Animering

Avalanche Studios. OpenGL. Vår teknik. Våra spel. Lite inspiration... Stora, öppna spelvärldar. Sandbox-gameplay. Hög audiovisuell standard

Procedurell renderingsmotor i Javascript och HTML5

Spelutveckling - Scenegrafer. Scenegrafer Optimeringar Culling

Hemtenta i Grafik och Interaktionsprogrammering Martin Berglund Uppgift 1 Föreläsning 1 Föreläsning 2 föreläsning 3 föreläsning 4

OpenGL, Maya och specialeffekter

Tentamen TNM061, 3D-grafik och animering för MT2. Tisdag 3/ kl 8-12 TP51, TP52, TP54, TP56, TP41, TP43. Inga hjälpmedel

Datorkonstruktion - Grafik för datorspel

Robin Wahlstedt Datavetenskap / Spel Vetenskapsmetodik rwt07001@student.mdh.se. Datorgrafik i spel

I rastergrafikens barndom...gjorde man grafik genom att skriva i ett videominne. Operationer på buffert och pixlar. Idag... Varför grafikkort?

VRay för Max Camilla Ravenna / André Ravenna Alto Punto 2012 Alto Punto Askims Stationsväg Askim

OpenGL, Maya och specialeffekter

DGI/SUDOA Den historiska utvecklingen. Globala - lokala belysningsmodeller. Lokala belysningsmodeller. Rendering equation

Universe Engine Rapport

OpenGL AGI HT05. Gustav Taxén

Procedurell Terräng med LOD i OpenGL 4

TSBK 10 Teknik för avancerade datorspel Fö 9: Nätverk, Peter Johansson, ISY

LAJKA-GUIDE. Så enkelt kör du. retro-spel. på din pc. 7 Commodore 64 7 Super Nintendo 7 Arkadspel

PROCEDUELL TERRÄNG. Proceduella metoder för bilder (TNM084) Jimmy Liikala Institutionen för teknik och naturvetenskap

Fotorealism, animering, SW resurser

Projektdokumentation för Othello

Datorns historia. Från räknemaskin till meta-medium. Vad är egentligen en dator? Datamaskin kan hantera data (sakuppgifter, informationssymboler)

Grafiska pipelinens funktion

Grafiska pipelinen. Edvin Fischer

2D-grafik. Gustav Taxén

Procedurella Grottor TNM084. Sammanfattning. Alexander Steen

TAGTOOL Användarmanual

Procedurell 3D-eld på grafikkortet

Procedurell grottgenerator och eld i GLSL. Marcus Widegren

Space Shooter. Projektrapport i kursen Avancerad C/C++ (DVA303) vid Mälardalens Högskola av Lars Lindqvist och Niklas Nolte

Teknik för avancerade datorspel!

Grafik raytracing. Mattias Axblom.

Space Invaders - Slutrapport

C-UPPSATS. Revitalizing classic art using real-time game technology

Grafik. För enklare datorsystem

HAND TRACKING MED DJUPKAMERA

Dagens föreläsning. 3 Kom-ihåg! Kursens innehåll. Introduktion till datorspelsutveckling CD5630

Adobe. Photoshop CS3. Fortsättningskurs.

Grafik. För enklare datorsystem

Pressrelease Artes Industriambassadör Mer realistiska skuggor i datorspel och virtual reality-applikationer

Teknik för avancerade datorspel!

Post Mortem för Get The Treasure!

Mikael Bondestam Johan Isaksson. Spelprogrammering. med CDX och OpenGL

TDDD78, TDDE30, 729A Grafik: Att "rita" egna komponenter

Ett spel skapat av Albin Wahlstrand

Uppdrag för LEGO projektet Hitta en vattensamling på Mars

TBSK 03 Teknik för Advancerade Datorspel

Grafiska användargränssnitt i Java

För installationen av SPECTRUM 4.0 och det fortsatta arbetet med programvaran måste följande systemkrav vara uppfyllda:

Procedurell stad. Projekt i kursen TNM022 Procedurella metoder för bilder. Tobias Heldring, tobhe

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Kravspecifikation TDP005 Projekt: Objektorienterat system

Realtidsalgoritmer för ljusets spridning och absorption mot partiklar i luften P E T E R L Ö N N Q U I S T

Bézierkurvor och parametriska objektrepresentationer

Att göra spel med Game Maker. Rum. Grundläggande delar. Gamemaker, dagens föreläsning. Programmeringsmodell

LANDING ZONE II (v1.0, uppgift 2 av 4) för 3D Animering B 1112

TBSK 03 Teknik för Advancerade Datorspel

Grundredigering i Photoshop Elements. Innehåll. Lennart Elg Grundredigering i Elements Version 2, uppdaterad

TUTORIAL 3: ATT STARTA ETT NYTT PROJEKT, IMPORTERA ELLER DIGITALISERA MATERIAL, SAMT SORTERA DET.

Bemästra verktyget TriBall

Vi är alla i gruppen väldigt intresserade av spel och vill lära oss mer om hur man skapar ett helt spel från idé till slutprodukt.

Konstruera, styra, reglera och programmera en röd tråd F-9

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Kravspecifikation. TDP005 Projekt: objektorienterade system. Version 4.0 Datum Anna Ahlberg Johan Almberg

Model View Controller. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Falcon III. AOI system för 2D och 3D inspektion för komponenter på fixtur eller på palett

Gran Canaria - Arbetsbeskrivning knapplänkar (Mediator 8)

Hemtentamen 2D1640 Grafik- och interaktionsprogrammering. Jonas Frid

Grunder. Grafiktyper. Vektorgrafik

Extramaterial till Matematik Y

Bildredigering i EPiServer & Gimp

TBSK 03 Teknik för Advancerade Datorspel

HDMI, Displayport och USB. Utbildningsmaterial med fokus på certifieringar

SeniorNet Södermalm. Windows 10. En snabbtitt Windows 10 1

Ljusets böjning & interferens

PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI

Macromedia Flash MX 2004

Varför behövs grafikbibliotek? Introduktion till OpenGL. OpenGL är ett grafikbibliotek. Fördelar med OpenGL. Allmänt om OpenGL. Nackdelar med OpenGL

Fotorealistiska bilder 1 PV360 kap 1 7: Grunder samt material och dekaler i Photoview 360

Macintosh PowerMac, system Mac OS och Classic Mode 64 Mb RAM Miljontalsfärger (24 bit)

Bokslutskommuniké januari - december 1998

Animation. Gustav Taxén

P L A Y. Adobe Produktguide. Adobe Photoshop Elements 4.0 Adobe Premiere Elements 2.0

Bygga kurser för mobila enheter

Borttagning av skymda ytor Painter s Algorithm och Z-buffering. MICHAEL HJORTHOLT och ANDREAS PAULSSON

Fyra i rad Javaprojekt inom TDDC32

Transformationer. Translation. Skalning. Homogena koordinater. Rotation. 2D-grafik. x y. Inom datorgrafik är transformationer den. Många. bevaras.

Tentamen i EDAF oktober Skrivtid: Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas.

After Effects Lathund

Skapande av en modifikation till Crysis

Snabbguide. ITP Whiteboard har 3 nivåer bas, medel och avancerad. Detta gör att det är enkelt att börja jobba med ITP Whiteboard.

Tanka program KAPITEL 7. Shareware och freeware. Shareware. Freeware

Tips på webbsidor med enkla spel för dator

Fyrverkerier. Introduktion. Nivå. I det här projektet ska vi skapa ett fyrverkeri över en stad. Activity Checklist.

ATT UPPTÄCKA DOLDA OBJEKT I SPEL

Installation av UIU (trial version och skarp) DSS Data (Sverige)

ADOBE FLASH 8. Vad är egentligen Flash

Transkript:

Datorspelshistoria: : 50-tal Datorspelsgrafik Gustav Taxén gustavt@nada.kth.se http://en.wikipedia.org/wiki/tennis_for_two 2D1640 Grafik och Interaktionsprogrammering VT 2006 Datorspelshistoria: : 60-tal Datorspelshistoria: Tidigt 70-tal Universitetsdatorer Hackers och studenter CRT-sk skärmar Enkel interaktiv grafik Ex: SpaceWar Oscilloskop Analoga och tidiga digitala datorer Enkla brädspel typ tic- tac-toe toe Enkla interaktiva simuleringar,, ex: William Higinbotham's Tennis for Two Ralph Baer uppfinner och patenterar TV- spelet Nolan Bushnell grundar Atari och skapar en marknad för arkadspel med Pong Magnavox börjar sälja Ralph Baer's Odyseey-maskin En-spelskonsoller i massor (de flesta är olika Pong-varianter varianter) http://www.classicgaming.com/museum/pong/ Datorspelshistoria: : Sent 70-tal Datorspelshistoria: : ~1978-83 83 Arkadspelen (amerikanska och japanska) blir extermt populära ra.. Ex: Asteroids (Atari), Space Invaders (Taito) Spelkonsoller för hemmabruk blir programmerbara (Ex: Atari VCS 2600) Cartridges http://en.wikipedia.org/wiki/space_invaders TV- och arkadspelens "guldålder" 8-bitarsgrafik, laserdisk Flexibel och programmerbar hårdvara Arkadspel för konsoller Activision skapar marknad för spelutveckling http://en.wikipedia.org/wiki/pac-man 1

Datorspelshistoria: Krashen ~1983 Datorspelshistoria: : Sent 80-tal Hemdatorer,, Ex: Sinclair ZX Spectrum, Commodore 64, Commodore Amiga Diskett- och bandstationer TV-spelsmarknaden mättad med usla spel och jämförelsevis dålig hårdvara Återförsäljare får kalla fötter Japanmarknaden påverkas inte nämnvärt http://en.wikipedia.org/wiki/ Video_game_crash_of_1983 Hemdatormarknaden är fortsatt framgångsrik Stort antal mindre spelproducenter Skapar ny marknad: spelförl rläggare Nintendo får nytt grepp om europeiska och amerikanska marknaden med NES och "kvalitetsstämpeln" http://en.wikipedia.org/wiki/ Leisure_Suit_Larry Datorspelshistoria: Tidigt 90-tal Datorspelshistoria: : Sent 90-tal PCns modulära och snabba hårdvara får genomslag BBS:er och Internet ger upphov till ny marknad: : shareware Tidig 3D-grafik, ex: Wolfenstein 3D, Doom CD-ROM http://en.wikipedia.org/wiki/doom 3Dfx släpper specialhårdvara för 3D- grafik och skapar ny marknad för grafikkort 16-bitarsgrafik Multiplayerspel över LAN och Internet, t.ex. Quake, Ultima Online Konsollmarknaden hämtar ikapp PCns försprång, t.ex. Sega Saturn,, Sony PlayStation http://en.wikipedia.org/wiki/half-life http://en.wikipedia.org/wiki/myst Datorspelshistoria: : 2000-tal Nya konsoller, t.ex. Microsoft XBox och Nintendo GameBoy Advance Prestandan hos stationär konsoller är bättre än PC vid release Programmerbara grafikkort DVD-ROM Bredband Realism och simulering (bildsyntes, mekanik, akustik,,...) http://en.wikipedia.org/wiki/farcry http://www.elderscrolls.com/art/obliv_pc_screens_01.htm 2

http://media.pc.gamespy.com/media/739/739585/img_3378715.html http://screenshots.teamxbox.com/screen-hires/46349/fight-night-round-3/ http://media.ps2.ign.com/media/490/490849/img_3098669.html http://screenshots.teamxbox.com/screen-hires/42485/gears-of-war/ Datorspelmotorns komponenter Basbibliotek (matematik, minneshantering, spara/ladda tillstånd nd,, etc.) Grafikmotor Ljudmotor Fysikmotor Animationsmotor AI / behaviors argr ndargränssnittnssnitt och inenheter Nätverkskommunikation http://www.alanwake.com/ 3

Middleware Sedan några år tillbaka finns en ny marknad för middleware för spel Grafikmotorer Fysikmotorer Ljudmotorer Nätverkslösningarsningar Animationspaket Hårdvara Idag är grafikhårdvaran rdvaran programmerbar Man kan anta att parallella kärnor och specialiserad hårdvara blir alltmer vanligt i framtiden Specialhårdvara för t.ex. fysik finns redan Fokus på parallellalgoritmer, synkronisering, trådar dar,, etc. Content Ageia PhysX http://www.ageia.com/index.html Minst lika resurskrävande som spelmotorn! Underleverantörer rer för t.ex. filmsekvenser, texturer, animationer, musik / ljud Billigare att licensiera en spelmotor än utveckla en egen Ökade krav på realism och detaljer ökar kraven på content explosionsartat - och resurserna som krävs Automatgenerering (t.ex. texturer,, vegetation, terräng ng) "Dissekering" av ett spel Screenshots från http://www.planethalflife.com/half- life2/screenshots http://www.gamespot.com/pc/action/halflife2/ 4

Borttagning av skymda ytor Level-of of-detail Kommer alltid vara grundläggande ggande! Färre polygoner som ritas i onödan mer tid åt annat Innomhus: Portaler eller PVS; Utomhus: Octrees Bounding volumes för dynamiska objekt Klipp mot kamerans frustum http://graphics.lcs.mit.edu/~seth/ pubs/pubs.html Kommer alltid vara grundläggande ggande! Fler versioner av samma objekt, där antalet polygoner reducerats successivt Blanda / morpha mellan detaljnivåerna erna Lägsta detaljnivån är ofta en impostor eller billboard Särskilda algoritmer för terräng Simplistic ROAM Implementation Bryan Turner brturn@bellsouth.net Karaktärer rer och monster Hierarkiska "skelett" "Skinning" Förinspelade animationer, ofta motion capture Inverse kinematics Karaktärer rer och monster "Skinning" + "muskler" muskler" eller s.k.. "pose blending/morphing" för ansiktsanimation Hudshader uppbyggd av många lager texturer som kombineras på olika sätt Belysning Belysning Statisk vs. dynamisk belysning Statisk belysning ofta någon variant av radiosity-metoden metoden, lagrad i texturer Dynamisk ljussättning adderas under körning i shaders 5

Belysning Radiositytexturer kombineras med "detaljtexturer" för att få ljussatta material Skuggor Dynamiska skuggor fås genom att rita scenen från ljuskällans llans position Det ljuskällan llan "kan se" är belyst Det ljuskällan llan "inte ser" är i skugga er nder texturering på ett "smart" sätt Reflektioner Environment mapping Färdigrenderad bild av världen (utan vatten) kopieras till textur (låg upplösning sning) nd shader för att i varje vattenpixel hämta reflektionen baserat på vattnets normal Refraktion hanteras liknande Normalmappning Lagra en textur med normaler nd dessa vid ljussättningen Sekvenser av sådana kan också användas ndas för t.ex. vågor på vatten Specialeffekter Explosioner, eld, rök, damm, partiklar i luften, etc. Ofta billboardtexturer Ibland baserade på videosekvenser, t.ex. av riktig eld nd alpha för att göra genomskinliga Summera ihop bidraget från olika billboards Specialeffekter "Light shafts" är oftast billboardtexturer som är placerade längs med ljuskällans llans riktning (och så att de följer fönstrets form) Mer avancerade metoder finns också men bygger på ungefär samma idé 6

Post-processing Ta bilden och kopiera till textur Applicera t.ex.. Gauss- eller boxfilter på de pixlar vars intensitet är hög Tone mapping förekommer också (kräver pipelines där pixlar får vara flyttal utanför intervallet [0, 1]) Labben Göra ett enkelt spel OpenGL, Director, eller Java Grupper om 3-4 personer C:a 40 timmar per gruppmedlem Planera och dela upp arbetet! Interna deadlines! Håll kontakten med Gustav! Action- och shoot-em em-up-spel 2D-adventure http://en.wikipedia.org/wiki/defender_%28game%29 http://www.mobygames.com/game/dos/secret-of-monkey-island/screenshots Pusselspel Brädspel/strategispel http://en.wikipedia.org/wiki/tetris http://en.wikipedia.org/wiki/reversi 7

Shooting gallery Enkla 3D-shooters http://www.mobygames.com/game/wolfenstein-3d/screenshots http://www.mobygames.com/game/nes/duck-hunt/screenshots Exempel: : OpenGL / GLUT / C++ Corona (http://corona.sourceforge.net corona.sourceforge.net/) för att ladda JPEG-filer PortAudio (http://www.portaudio.com www.portaudio.com/) och LibSndfile (http://www.mega- nerd.com/libsndfile/) /) för ljud C:a 50 timmars arbete (inkl.. content) http://www.nada.kth.se/~gustavt/ink-roids/ glenable(gl_blend); glblendfunc(gl_src_alpha, GL_ONE_MINUS_SRC_ALPHA); gltexenvi(gl_texture_env, GL_TEXTURE_ENV_MODE, GL_REPLACE); roids: fixa alpha-kanal i textur Skapa två JPEG-filer, en med färgerna och en där RGB-kanalerna är samma och motsvarar de alphavärden du vill ha Ladda båda filerna till var sin array Skapa en ny array med dimensionerna: w h 4 Iterera över pixlarna och lägg ihop informationen från RGB- och A-bilderna nd resultatet som en RGBA-textur 8

roids: hantera framerate Se till att alla uppdateringar är i "enhet/s" enhet/s" Registrera en timer på 100 ms Räkna varje frame som ritas Då timern aktiveras, kolla hur många frames som hunnit ritas = f 1 / f är då antalet sekunder per frame! Nollställ timern och frameräknaren roids: : input glutkeyboardfunc() resp. glutkeyboardupfunc() glutspecialfunc() resp. glutspecialupfunc() Gör en statusvariabel för varje tangent När tangenten trycks ned, sätt till true När tangenten släpps pps, sätt till false I din idle()-funktion funktion, kolla statusen på tangenterna och uppdatera parametrar roids: fullskärm glutgamemodestring("1024x768:16@ 60"); glutentergamemode(); Innan du avslutar programmet måste du säga glutleavegamemode() ()! nd glutignorekeyrepeat(true) för att stänga av key repeat Glöm inte att återaktivera key repeat innan du avslutar programmet! roids: kollisionsdetektion Cirklar Om avståndet mellan två punkter är mindre än de två radierna tillsammans har vi en kollision roids: handtextade siffror Varje nummer (0-9) är en textur med alphakanal Alla texturerna har samma dimensioner För att rita ett nummer, dela upp det i sina siffror Välj rätt textur, rita siffran, flytta utritningspositionen enligt texturens bredd roids: : wrap-around around Se till att objekten flyttas runt när de kommit utanför skärmen. För varje riktning, translatera världen en skärmdimension och rita om. 9