Presentation laddar. Vänta.

Presentation laddar. Vänta.

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

Liknande presentationer


En presentation över ämnet: "Spelutveckling med.NET Johan Lindfors. Agenda  Introduktion till DirectX och Direct3D ◦ Komponenter ◦ Grafik  DirectX SDK och Visual Studio ◦ Visual."— Presentationens avskrift:

1 Spelutveckling med.NET Johan Lindfors

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

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

4  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

5  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

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

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

8  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

9  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

10  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

11 ”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

12 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

13 Vilken är den optimala loopen?

14  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

15  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”

16 Skapa en device och rensa ytan

17  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

18 Rita något på skärmen

19  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

20  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

21 Använda Vertex- och Index-bufferts

22  “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

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

24 Skapa en kamera

25 (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

26 Använda texturer

27  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

28 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!!!

29 Varde ljus!

30  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

31 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

32  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

33 Avancerade objekt

34  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

35

36 Animationer

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

38 Andra saker…

39  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”

40 ”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

41 ”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

42 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

43 Effekter och HLSL

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

45

46  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

47

48  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

49 Hur används Sample Framework?

50  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

51  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

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

53 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”

54  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”

55 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

56 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

57 Effekter i MDX 2.0

58 …och lite till

59 Effekter i XNA Framework

60

61 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

62 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

63 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)

64 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

65 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

66  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

67 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

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

69 Andra resurser  Forum ◦ www.gamedev.se ◦ www.gamedev.net ◦ www.flipcode.net ◦ www.psionic3d.co.uk  Microsoft ◦ msdn.microsoft.com/forums ◦ msdn.microsoft.com/directx ◦ msdn.microsoft.com/xna ◦ www.devmaster.net ◦ www.thezbuffer.net ◦ www.animate.se  Nvidia ◦ developer.nvidia.com

70 Johan.Lindfors@microsoft.com blogs.msdn.com/johanl

71 Titel på sliden


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

Liknande presentationer


Google-annonser