Spelutveckling med.NET Johan Lindfors. Agenda  Introduktion till DirectX och Direct3D ◦ Komponenter ◦ Grafik  DirectX SDK och Visual Studio ◦ Visual.

Slides:



Advertisements
Liknande presentationer
låt oss presentera SLIDEPLAYER.SE
Advertisements

Visual Basic - Genomgång
Tomas Sandström, Adtollo
This work is licensed under a Creative Commons 3.0 Attribution License Wikispaces för SBC En guide
Teknik 1 utifrån förmågorna och centrala innehållet Vad teknik är
DSLR astrofotografering
Martin Persson Mattias Persson Robert Novo Johannes Ullström.
A 3D racing game with network support. Team •Jonas Gustafsson •Lin Loi •Fredrik Norén •Michael Sandén •Patrik Sjölin.
1 Windows programmering (2) Borland C++ Builder 4/5 Modsoft Ab Kent Westerholm.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
A 3D racing game with network support. Team •Jonas Gustafsson •Lin Loi •Fredrik Norén •Michael Sandén •Patrik Sjölin.
Göran Husman Office 365 MVP / HumanData AB
Informationshantering
Smartare administration i Quality Center HUGS 3 april 2008 Jan Czajkowski
”Ett sätt att distribuera Business Objects via webben”
Programmeringsteknik Föreläsning 13 Skolan för Datavetenskap och kommunikation.
Sidbeskrivningsprogram
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Objektorienterad tänkande
Programmering II C#, ID1304.
Programmeringsteknik K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Digitala bilder. Elektroniska bilder VH Digitala bilder Datorskärmen visar bild m.h.a. pixlar.
1 MSPEL Föreläsning 5 DSV Peter Mozelius 3D – programmering.
Stöd för haptisk hårdvara i en spelmotor
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 11: Implementation av filsystem.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Jämförelse av 3D-möjligheter för HTML5 Rasmus Saxén.
EN KOMPLETT INDUSTRIPARTNER ! ALLMÄNT OM MELSEC STYRSYSTEM.
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Zend Framework Exemplifierat med spagooy.com Kurs: Moderna applikationsmiljöer, HIK Handledare: Martin Blomberg Studenter: Robin Bengtsson, Magnus Spång.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pekare och speciell programstruktur i inbyggda system
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Grafiken: En del av spelet Rickard ArvedalFredrik Andersson.
Välkommen till Del 1.
Introduktion till DITA
Programmeringsteknik för Media1 & K1
Grundläggande programmering
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
MV500B: Introduktion till interaktiv ljuddesign David Yanagisawa, Anders-Petter Andersson 4.5 högskolepoängLektion 3.
15 maj Partikelsystem för interaktiva 3d-miljöer - med shaderteknologi Examensarbete vid inst. för datavetenskap Jakob Schyberg,
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Välkommen till Sommarkollo Windows Presentation Foundation och Expression Blend Robert FolkessonJohan Lindfors
Designstöd Daniel Fällman Institutionen för informatik Umeå universitet Design och utvärdering, 5 poäng.
Microsoft Visual Studio och.NET Framework, idag och imorgon! Robert Folkesson
Fluidsimulering med Smoothed-particle Hydrodynamics Martin Persson Mattias Persson Robert Novo Johannes Ullström.
1 Windows Azure Mikael ÖstbergTorkel Ödegaard. 2 Äshur Ashore Azzuure.
Rikare webb med AJAX, Microsoft Silverlight, WPF och Expression Studio Robert Folkesson
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( )‏ Innehåll:  Introduktion till Java EE (Enterprise Edition)  Enterprise Java Beans.
Föreläsning 4 Klasser Och Objekt.
Perception och motorik Perception och MDI Modeller Konkreta resultat Generella slutsatser Att läsa: Kapitel 2 & 3 i Carroll.
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
Multimedia och Pedagogik
1 Mjukvaru-utveckling av interaktiva system God utveckling av interaktiva system kräver abstrakt funktionell beskrivning noggrann utvecklingsmetod Slutanvändare.
Copyright, Mahmud Al Hakim, Hakimdata.se Agenda  Kunskapstest  Windows Skrivbord (Desktop)  Aktivitetsfält  Fönster och menyer  Systemåterställning.
1 Ingenjörsmetodik IT & ME 2007 Föreläsare Dr. Gunnar Malm.
1 Registrering och uppladdning shp-filer för geotekniska undersökningsområden - startläge.
OOP - teori1 OOP del II– Föreläsning 5 vecka 6. OOP - teori2 Klasser Substantiv i singularis stavat med stor bokstav till exempel Human Dog Account Circle.
Välkommen till Sommarkollo Expression Studio, verktyg för designers Juli 2007 Robert Folkesson Developer Evangelist Microsoft Johan Lindfors.
Föreläsning 1 Introduktion till kursen. Algoritmer
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Konfiguraitonshantering EN KORT SAMMANFATTNING AV KONFIGURAITONSHANTERING.
Välkommen! Nu ska vi skapa nya världar och koda våra egna spel.
KPP053, HT2015 MATLAB, Föreläsning 4
Python.
Computational thinking progression F-9
Designstöd Design och utvärdering, 5 poäng
Programmera dina klasskamrater
Presentationens avskrift:

Spelutveckling med.NET Johan Lindfors

Agenda  Introduktion till DirectX och Direct3D ◦ Komponenter ◦ Grafik  DirectX SDK och Visual Studio ◦ Visual Studio 2005 Express?  XNA ◦ XNA Framework ◦ XNA GameStudio Express

 Vad är DirectX? ◦ En grupp av tekniker som erbjuder multimedafunktioner till Windows-applikationer ◦ En samling komponenter ◦ API oberoende av hårdvara

 Grafik ◦ Direct3D – 3D grafik ◦ DirectDraw – 2D grafik  Ljud ◦ DirectSound  Inspelning och uppspelning  Mixning i realtid  “Surround” och positionering i 3D  Filter och effekter (reverb, dist osv) ◦ DirectMusic

 DirectInput ◦ Hanterar inmatning med kontroller ◦ Tangentbord, joysticks, möss osv. ◦ Stöd för “Force Feedback”  DirectPlay ◦ Protokoll-oberoende nätverksmöjligheter ◦ Fungerar med NAT och brandväggar  DirectShow ◦ “Streaming media” ◦ Video

 “Managed DirectX”  “High Level Shader Language”  API för animationer  Förbättrat 2D stöd ◦ Interoperabilitet med GDI  En massa annat

 Komponenter ◦ DirectX grafik  2D – DirectDraw  3D – Direct3D ◦ DirectSound ◦ DirectInput ◦ DirectPlay ◦ AudioVideoPlayback  Enklare hantering av ljud och video  Alla funktioner och “features”

 Bättre prestanda ◦ Eliminerar flaskhalsar med COM interoperabilitet ◦ Prestandan ligger i paritet med ren C++  Enklare utveckling ◦ Färre rader kod ◦ ”Ingen” minneshantering ◦ Kraftfull debuggning med Visual Studio Fördelar med MDX

 Koordinatsystemet ◦ Vänsterhänt ◦ Högerhänt (OBS standard i XNA)  Nästan allting konstrueras av trianglar  En modell (kallas för Mesh) är en geometrisk struktur av trianglar Y Z X Grundläggande 3D

 Vektorer (Vector3) ◦ Används för att definera punkter, riktningar, avstånd  Matriser ◦ Matrix = 4x4 matris ◦ Används för transformationer  Quaternion ◦ Används för rotationer 3D matematik

”Rendering Pipeline”  Applikation ◦ Logik som är specifik för applikationen  Geometri ◦ Definerar hur “världen” ser ut ◦ Operationer på polygoner  Rasterisering ◦ Tilldelar färger till pixlar på skärmen ◦ Operationer på pixlar

Initialisera Hantera inmatning Uppdatera variabler Uppdatera skärm Städa upp  Starta Direct3D ◦ Initialisera objekt ◦ “RestoreDeviceObjects”  “Main Loop” ◦ Uppdatera ◦ Rita ◦ Repetera  Städa upp Anatomin av en 3D-applikation

Vilken är den optimala loopen?

 Videominne ◦ Vertexdata, texturer, osv.  3D kort har mer och mer tagit över geometriska operationer  3D kort är mycket bättre på geometri än en vanlig CPU ◦ Specialiserade för vektor-matematik  Programmerbar “pipeline” ger nya möjligheter 3D kort

 Exponerar funktionalitet från grafikkorten  Hanterar dubbel- och trippel-buffring  ”Hardware” ◦ Erbjuder bara existerande förmågor  ”Reference” ◦ Enbart implementera i mjukvara ◦ Erbjuder alla förmågor ◦ Betydligt lägre prestanda Objektet ”device”

Skapa en device och rensa ytan

 Enkla ◦ PointList ◦ LineList ◦ LineStrip  Lite mer avancerade ◦ TriangleList ◦ TriangleStrip ◦ TriangleFan v1 v2 v3 v4 v5 v6 v1 v2 v3 v4 v5 v1 v2 v3 v4 v5 Primitiva typer

Rita något på skärmen

 En vertex är mer omfattande än en punkt  Vanliga vertex-format (CustomVertex) ◦ Transformed- X och Y för skärm ◦ TransformedColored- ovanstående och färg ◦ PositionOnly- X, Y och Z ◦ PositionColored- ovanstående och färg  Kan också innehålla ◦ Normal för exempelvis ljussättning ◦ Tu och Tv koordinater för texturer  Lagras ofta i en ”VertexBuffer” Mer om vertex

 Effektivare buffert av vertex ◦ Kan lagra vertex i GPU-minnet ◦ Kan kombineras med en uppsättning index  IndexBuffer ◦ Vektor med int eller short ◦ Kan snåla med minnet (med begränsningar) VertexBuffer

Använda Vertex- och Index-bufferts

 “View Transform” ◦ Positionerar kameran ◦ Kontrollerar kamerans riktning ◦ Beskriver vad som är uppåt  “Projection Transform” ◦ Kontrollerar kamerans lins ◦ Hur mycket och hur långt ska vi se Transformationer

 “World Transform” ◦ Positionerar en modell i förhållande till andra  Förflyttning ◦ Matrix.Translation(…)  Rotation ◦ Matrix.RotationX(…) ◦ Matrix.RotationYawPitchRoll(…)  Skalning ◦ Matrix.Scaling(…) Transformationer

Skapa en kamera

(0,0) (1,1) (1,0) (1,1) (0,1)(0,0)  Texturer ◦ ”Mappa” en bild mot en triangel ◦ En bild har bara 2 dimensioner ◦ Tu och Tv koordinater  Direct3D hanterar transformationer Texturer

Använda texturer

 Olika typer av ljus ◦ Ambient – Lika mycket ljus överallt ◦ Direction – solen ◦ Point – lampa ◦ Spot – ficklampa  Attribut på ljus ◦ Position, riktning, räckvidd och avmattning ◦ ”Diffuse”, ”ambient”, ”Specular” Ljussättning

Material och skuggor  Material reflekterar ljus ◦ ”Diffuse” reflektion ◦ ”Ambient” reflektion ◦ ”Specular” reflektion och styrka ◦ ”Emission” – material verkar skina utan ljus  Skuggor ◦ Flat – hela polygonen får samma nyans ◦ Gouraud – interpolering mellan vertex  Normalen är viktig!!!

Varde ljus!

 Modeller och objekt ◦ Skapas sällan av programmerare  Flertal verktyg ◦ 3D Studio Max, Maya, Softimage ◦ Blender, Milkshape3D  Olika filformat ◦.X är vanligt för DirectX ◦ Funktionalitet finns i D3DX  Mesh Avancerade objekt

Meshes  Vad behövs för att rita en Mesh ◦ Ladda data  Information om vertex och index  Material och texturer ◦ Uppdatera postition ◦ Rita  Anropa DrawSubset(…) för varje material

 Djup med z-buffer ◦ Sparar värde på djup för varje pixel ◦ Jämförs för att hantera perspektiv  ”Stencil buffer” ◦ Kan användas för skuggor Andra bufferts

Avancerade objekt

 Animerade meshes ◦ “Key Frame animation” ◦ “Skinned Meshes”  Animations-API för att förenkla ◦ Har stöd för interpolering mellan “frames” ◦ Blanda animationer Animationer

Animationer

 Text  ”Fog”  2D och 3D tillsammans  ”Skybox”  ”AlphaBlending”  Generera terränger  Rita i fullskärm  Flera skärmar samtidigt (backspegel) Andra saker

Andra saker…

 Introducerades i DirectX 8  Ger flexibilitet och prestanda  Vertex Shader ◦ Jobbar med en vertex åt gången ◦ Kan inte lägga till nya vertex  Pixel Shader ◦ Jobbar med en pixel åt gången ◦ Kan inte lägga till pixlar ”Programmable Pipeline”

”Vertex Shader”  Kan skapa effekter som inte setts tidigare ◦ Simulering av kläder ◦ Avancerad animation ◦ Ansiktsrörelser och talsynkronisering ◦ Linseffekter  Verktyg finns ◦ Nvidia  Endast en vertex åt gången ◦ Kan inte lägga till nya vertex

”Pixel Shader”  Förändra det som slutligen ritas, per pixel ◦ Ljussättning ◦ Skuggor ◦ Serieboks utseende  Jobbar med en pixel åt gången ◦ Kan inte lägga till nya pixlar

Effektfiler  Uppdelade i tre delar  Variabel deklarationer ◦ Texturer, matriser, parametrar  Tekniker och passager ◦ Tekniker kan delas upp för hantering av olika typer av hårdvara  Funktioner ◦ Kod som skrivs i exempelvis HLSL

Effekter och HLSL

 DirectInput och numera även XInput  Olika enheter ◦ Tangentbord ◦ Möss ◦ Gamepads och andra kontroller  Relativt enkel hantering ◦ Initiera ◦ Läs av ◦ Agera Hantera inmatning

 DirectSound ◦ Kan användas för ljudeffekter och musik ◦ Hårdvarukontrollerade bufferts  Flexibilitet ◦ Positionera ljud i 3D-rymden ◦ Lägg till effekter, reverb, eko osv… Ljud och musik

 Exempel  Tutorials ◦ Bra att börja med ◦ Men det finns bättre på nätet  Sample Framework ◦ Ett ramverk som utgångspunkt  Verktyg DirectX SDK

Hur används Sample Framework?

 PIX ◦ Kan användas för att analysera applikationen  XACT ◦ Verktyg för konstruktion av ljud och sekvenser  DXViewer ◦ Öppna och analysera.X-filer (även.FX)  Texture tool ◦ För att skapa och editera texturer Några verktyg i DirectX SDK

 33ms… klockan tickar snabbt! ◦ Den mesta tiden spenderas ritandes ◦ Hitta ställan att förberäkna värden istället för beräkningar varje “frame”  Minneshantering ◦ Trådhantering ◦ Boxing/unboxing ◦ Släpp objekt Tänk på prestandan

XNA Game Studio Express  Ge ”communityn” möjlighet att skapa mjukvara för ◦ Windows ◦ Xbox 360 XNA Game Studio Express XNA Framework

Skikten i XNA Framework Plattformen “Core Framework” “Extended Framework” Spel XACTXINPUTXContent Direct3D GraphicsAudioInputMath Storage “Application Model”“Content Pipeline” Starter Kits KodInnehåll Komponenter Legend XNA erbjuderDu erbjuder “Community”

 Kom snabbt upp ”på banan” ◦ Första raden kod du skriver är för ditt spel!  Abstraktion av plattformen ◦ Vilken är den bästa designen av loopen? ◦ Hur skapar jag och hanterar mitt ”Window”? ◦ Hur följer jag alla rekommendationer för plattformen?  Game ◦ Bastypen för alla dina spel ◦ Händelser som “Load”, “Update” och “Draw” Platform CoreFramework ExtendedFramework Games XACTXINPUTXContentDirect3D GraphicsAudioInputMathStorage Application Model Content Pipeline Starter Kits CodeContent Comps “Application Model”

Platform CoreFramework ExtendedFramework Games XACTXINPUTXContentDirect3D GraphicsAudioInputMathStorage Application Model Content Pipeline Starter Kits CodeContent Comps “Application Model”  GameComponent ◦ Bastypen för alla XNA-komponenter ◦ Författaren skriver ”Load”, ”Update” och ”Draw” ◦ Kan hitta och interagera med andra komponenter  Game.GameComponents ◦ Hanteras vid exekvering av spelet ◦ Fullt ”design-time”-stöd i IDE

Platform CoreFramework ExtendedFramework Games XACTXINPUTXContentDirect3D GraphicsAudioInputMathStorage Application Model Content Pipeline Starter Kits CodeContent Comps  Byggt på Direct3D 9  Uppdaterat API som följer riktlinjer för.NET ◦ Effects ◦ Resources ◦ Lock/Unlock ◦ Vertex streams  Provided resources ◦ Mesh ◦ Texture ◦ Effects and shaders Grafik

Effekter i MDX 2.0

…och lite till

Effekter i XNA Framework

Platform CoreFramework ExtendedFramework Games XACTXINPUTXContentDirect3D GraphicsAudioInputMathStorage Application Model Content Pipeline Starter Kits CodeContent Comps Skillnader mot MDX  “Programmable pipeline” ◦ Inget stöd för “fixed-function” ◦ Inga ljus, material, transformationer, FVF  Inget stöd för D3DX mesh ◦ “Content pipeline” hanterar import av.X-filer  Vi kommer att bidra med guide för migrering ◦ MDX 1.1 till XNA ◦ “Fixed function” till “programmable”-pipeline

Platform CoreFramework ExtendedFramework Games XACTXINPUTXContentDirect3D GraphicsAudioInputMathStorage Application Model Content Pipeline Starter Kits CodeContent Comps Ljud  Bygg dina ljudresurser med XACT verktyget ◦ Lägg till ljud ◦ Justera egenskaper ◦ Bygg “ljudbanker”  Enklare integration för utvecklare ◦ Åtkomst till ljud via logiska namn ◦ Loopar, strömmar och minneshantering ◦ Ingen lågnivå-hantering av bufferts

Platform CoreFramework ExtendedFramework Games XACTXINPUTXContentDirect3D GraphicsAudioInputMathStorage Application Model Content Pipeline Starter Kits CodeContent Comps Inmatning  ”Immediate mode” modell för programmering ◦ Ingen initiering ◦ Ingen hantering av tillstånd  Erbjuder ◦ Xbox 360 kontroller ◦ Tangentbord ◦ Möss (men bara för Windows)

Platform CoreFramework ExtendedFramework Games XACTXINPUTXContentDirect3D GraphicsAudioInputMathStorage Application Model Content Pipeline Starter Kits CodeContent Comps Lagring  “StorageContainer” agerar som ett virtuellt filsystem ◦ Filer lagras på korrekt plats på varje plattform ◦ Stöd för flera lagringsenheter och profiler på Xbox 360  Strömbaserad integration med System.IO

Platform CoreFramework ExtendedFramework Games XACTXINPUTXContentDirect3D GraphicsAudioInputMathStorage Application Model Content Pipeline Starter Kits CodeContent Comps  Vector, Matrix, Quaternion, Plane, AABB, Sphere, Ray, Frustum, Curve  Högerhänt som grundinställning  Enkelt integration  Tester för snitt  Hjälpklasser för förflyttning Matematik

 Projektmallar för Xbox 360 spel  Installera på konsol med F5  “Remote debugging” ◦ “Breakpoints” ◦ “Watches” ◦ “Debug and Trace” till PC’n  Men inte… ◦ “Edit and Continue” ◦ Visualiserare för debuggning Platform CoreFramework ExtendedFramework Games XACTXINPUTXContentDirect3D GraphicsAudioInputMathStorage Application Model Content Pipeline Starter Kits CodeContent Comps Utveckling för Xbox 360

Platform CoreFramework ExtendedFramework Games XACTXINPUTXContentDirect3D GraphicsAudioInputMathStorage Application Model Content Pipeline Starter Kits CodeContent Comps ”Starter Kits”  Kompletta, fungerade spel ◦ Använd som utgångspunkt för dina egna spel ◦ Åtkomst via ”New Project…” ◦ Tryck på F5 och börja spela ◦ Dokumentation och ”tutorials”  Tillgänglighet ◦ 2 kommer att inkluderas i XNA Game Studio Express ◦ Nya ”kits” planeras att släppas regelbundet efter lansering

Tips på böcker  Managed DirectX  Shaders  Modellering  Tips och tricks

Andra resurser  Forum ◦ ◦ ◦ ◦  Microsoft ◦ msdn.microsoft.com/forums ◦ msdn.microsoft.com/directx ◦ msdn.microsoft.com/xna ◦ ◦ ◦  Nvidia ◦ developer.nvidia.com

blogs.msdn.com/johanl

Titel på sliden