Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Άγγελος Μπιμπούδης, Φοιτητής/Ερευνητής στο Τμήμα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστημίου Αθηνών, Microsoft Student Partner.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Άγγελος Μπιμπούδης, Φοιτητής/Ερευνητής στο Τμήμα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστημίου Αθηνών, Microsoft Student Partner."— Μεταγράφημα παρουσίασης:

1 Άγγελος Μπιμπούδης, Φοιτητής/Ερευνητής στο Τμήμα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστημίου Αθηνών, Microsoft Student Partner

2 Πώς φτάσαμε στο XNA  Assembly  Direct3D <= 7.x  Προγραμματισμός σε C  Ανεπαρκή εργαλεία  Code porting δύσκολο  Αποκλειστικά fixed function pipeline  Direct3D 8,9  Προγραμματισμός σε C++  Βελτιωμένο Hardware Abstraction Layer  Για πρώτη φορά εμφανίζονται programmable pipelines, ενισχύοντας τον προγραμματισμό των 3D γραφικών  Managed Direct3D (MDX)  Πρώτη προσπάθεια να γίνονται κλήσεις DirectX, από.ΝΕΤ βιβλιοθήκες  Προγραμματισμός και σε Visual Basic  Απλοποίηση κώδικα  Αρχίζει και γίνεται προσιτό σε ευρύτερο πλήθος προγραμματιστών  ΧΝΑ

3 FFP vs Pixel Shaders  Fixed Function Pipeline  Programmable Pipeline

4 Initializing DirectX – Step 1 // Step 1: Δημιουργία του IDirect3D9 object. md3dObject = Direct3DCreate9(D3D_SDK_VERSION); if( !md3dObject ) { MessageBox(0, "Direct3DCreate9 FAILED", 0, 0); PostQuitMessage(0); }

5 Initializing DirectX – Step 2 // Step 2: Έλεγχοι για υποστήριξη διάφορων συσκευών D3DDISPLAYMODE mode; md3dObject- >GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &mode); HR(md3dObject- >CheckDeviceType(D3DADAPTER_DEFAULT, mDevType, mode.Format, mode.Format, true)); HR(md3dObject- >CheckDeviceType(D3DADAPTER_DEFAULT, mDevType, D3DFMT_X8R8G8B8, D3DFMT_X8R8G8B8, false));

6 Initializing DirectX – Step 3 // Step 3: Έλεγχος για την υποστήριξη επεξεργαστή κορυφών. D3DCAPS9 caps; HR(md3dObject->GetDeviceCaps(D3DADAPTER_DEFAULT, mDevType, &caps)); DWORD devBehaviorFlags = 0; if( caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT ) devBehaviorFlags |= mRequestedVP; else devBehaviorFlags |= D3DCREATE_SOFTWARE_VERTEXPROCESSING; // If pure device and HW T&L supported if( caps.DevCaps & D3DDEVCAPS_PUREDEVICE && devBehaviorFlags & D3DCREATE_HARDWARE_VERTEXPROCESSING) devBehaviorFlags |= D3DCREATE_PUREDEVICE;

7 Initializing DirectX – Step 4 // Step 4: Fill out the D3DPRESENT_PARAMETERS structure. md3dPP.BackBufferWidth = 0; md3dPP.BackBufferHeight = 0; md3dPP.BackBufferFormat = D3DFMT_UNKNOWN; md3dPP.BackBufferCount = 1; md3dPP.MultiSampleType = D3DMULTISAMPLE_NONE; md3dPP.MultiSampleQuality = 0; md3dPP.SwapEffect = D3DSWAPEFFECT_DISCARD; md3dPP.hDeviceWindow = mhMainWnd; md3dPP.Windowed = true; md3dPP.EnableAutoDepthStencil = true; md3dPP.AutoDepthStencilFormat = D3DFMT_D24S8; md3dPP.Flags = 0; md3dPP.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT; md3dPP.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;

8 Initializing DirectX – Step 5 // Step 5: Δημιουργία κυρίως object HR(md3dObject->CreateDevice( D3DADAPTER_DEFAULT, // primary adapter mDevType, // device type mhMainWnd, // window associated with device devBehaviorFlags, // vertex processing &md3dPP, // present parameters &gd3dDevice)); // return created device }

9 XNA Equivalent _

10 Toggling FullScreen // Switch to fullscreen mode. if( enable ) { // Are we already in fullscreen mode? if( !md3dPP.Windowed ) return; int width = GetSystemMetrics(SM_CXSCREEN); int height = GetSystemMetrics(SM_CYSCREEN); md3dPP.BackBufferFormat = D3DFMT_X8R8G8B8; md3dPP.BackBufferWidth = width; md3dPP.BackBufferHeight = height; md3dPP.Windowed = false; // Change the window style to a more fullscreen friendly style. SetWindowLongPtr(mhMainWnd, GWL_STYLE, WS_POPUP); // If we call SetWindowLongPtr, MSDN states that we need to call // SetWindowPos for the change to take effect. In addition, we // need to call this function anyway to update the window dimensions. SetWindowPos(mhMainWnd, HWND_TOP, 0, 0, width, height, SWP_NOZORDER | SWP_SHOWWINDOW); } // Switch to windowed mode. else { // Are we already in windowed mode? if( md3dPP.Windowed ) return; RECT R = {0, 0, 800, 600}; AdjustWindowRect(&R, WS_OVERLAPPEDWINDOW, false); md3dPP.BackBufferFormat = D3DFMT_UNKNOWN; md3dPP.BackBufferWidth = 800; md3dPP.BackBufferHeight = 600; md3dPP.Windowed = true; // Change the window style to a more windowed friendly style. SetWindowLongPtr(mhMainWnd, GWL_STYLE, WS_OVERLAPPEDWINDOW); // If we call SetWindowLongPtr, MSDN states that we need to call // SetWindowPos for the change to take effect. In addition, we // need to call this function anyway to update the window dimensions. SetWindowPos(mhMainWnd, HWND_TOP, 100, 100, R.right, R.bottom, SWP_NOZORDER | SWP_SHOWWINDOW); } // Reset the device with the changes. onLostDevice(); HR(gd3dDevice->Reset(&md3dPP)); onResetDevice();

11 Full Screen – XNA Equivalent graphics.IsFullScreen = true/false

12  Το ΧΝΑ (XNA’s Not Acronymed) είναι το καινούριο framework της Microsoft, αποτελούμενο από εργαλεία και βιβλιοθήκες, βασισμένα στο.NET Framework 2.0 και στο DirectX9.0. Aφορά τον προγραμματισμό, την σχεδίαση και την διαχείριση περιβάλλοντος, παιχνιδιών για Windows και XBOX 360.  Αποτελείται, από το ΧΝΑ Framework και το XNA Game Studio Express τα οποία διανέμονται δωρεάν.  Γλώσσα προγραμματισμού: C# (garbage collection, hardware abstraction, thread management, security model)  Δεκέμβριος > Version 1.0  Απρίλιος > Version 1.0R  Δεκέμβριος > Version 2.0  Μάιος > Version 3.0 (CTP, αναμένεται τέλος έτους)Version 3.0 (CTP, αναμένεται τέλος έτους) Microsoft’s XNA Framework

13  Λιγότερος και απλούστερος κώδικας, εστιάζοντας στην ιδέα και όχι στην πλατφόρμα ανάπτυξης.  Ευκολία στον προγραμματισμό παιχνιδιών για ακόμα μεγαλύτερο κοινό: ερασιτέχνες, σπουδαστές και επαγγελματίες  Άνετο debugging, crash-free παιχνίδια  Ανάπτυξη των δικών μας παιχνιδιών για Windows και ΧΒΟΧ 360 XNA Framework Στόχοι

14 XNA Development Tools XNA Framework.NET game framework Άμεση μεταφορά σε XBOX 360 XNA Game Studio Express XNA Framework XNA Game Studio Express Επέκταση του Visual Studio C# Express για υποστήριξη του XNA Framework Επιπλέον, προσθέτει υποστήριξη για δημιουργία και διαχείριση περιεχομένου (μοντέλα, ήχος, κτλ) Platform

15 XNA Framework Layers Platform CoreFramework ExtendedFramework Games XACTXINPUTXContent Direct3D GraphicsAudioInputMath Storage Application Model Content Pipeline Starter Kits CodeContent Components LegendXNA Προγραμματιστής Πηγές

16

17 Application Model Έμφαση στην λογική του παιχνιδιού  Εστιάζουμε στο παιχνίδι και όχι στην πλατφόρμα  Τρόπος σχεδίασης game loop  Διαχείριση παραθύρου  Προγραμματιστικοί κανόνες για την πλατφόρμα  Γράφουμε κατευθείαν κώδικα για την λογική του παιχνιδιού  Game  Είναι η βασική κλάση που αρχικοποιεί την μονάδα γραφικών, την λογική του παιχνιδιού, τον κώδικα που ασχολείται με το rendering  Πέντε οι βασικές μέθοδοι

18 Κορμός Προγράμματος public class Game1 : Microsoft.Xna.Framework.Game { GraphicsDeviceManager graphics; ContentManager content; public Game1() { graphics = new GraphicsDeviceManager( this ); content = new ContentManager( Services ); } protected override void Initialize() { base.Initialize(); } protected override void LoadContent() { } protected override void UnloadContent() { } protected override void Update( GameTime gameTime { } protected override void Draw( GameTime gameTime ) { } }

19 Application Model Δημιουργία components και προσθήκη λειτουργικότητας με αντικειμενοστραφή λογική  Game Component  Βασικός τύπος για όλα τα XNA components  Game.GameComponents  Διαχειρίζονται από την managed πλατφόρμα του framework  Προσθέτουν λειτουργικότητα  Game Logic  Rendering Code  Frame rate  Menus

20 Content Pipeline Σύστημα επεξεργασίας content pipeline διαχειριζόμενο από το περιβάλλον του VS C# Express  To XNA παρέχει απλό και κατανοητό τρόπο για να προσθέσουμε όλα τα σχεδιαστικά στοιχεία στο παιχνίδι μας ότι format και αν έχουν.  Το σύστημα ροής περιεχομένων είναι σχεδιασμένο έτσι ώστε να επιτρέπει στους προγραμματιστές να:  Χρησιμοποιούν ότι εργαλεία (digital content creation tools) σχεδίασης θέλουν  Ξεδιπλώνουν όλο το περιεχόμενο που έχουν ετοιμάσει δένοντάς το με την μηχανή γραφικών  Έρχονται κοντά προγραμματιστής και σχεδιαστής από θέμα ευκολίας επίβλεψης και παραμετροποίησης περιεχομένου  Βασική κλάση το ContentManager  Standar class  Custom Importer method & Processor method

21

22 Graphics Παρέχονται χαμηλού επιπέδου κλήσεις συστήματος για την κάρτα γραφικών  Δομημένο με βάση το Direct3D 9  Καλοσχεδιασμένες μέθοδοι ακολουθώντας την λογική σχεδίασης.ΝΕΤ εφαρμογών  Διαχειρίζονται  Meshes  Texture  Effects  Shaders …

23 Sound Άνεση στην διαχείριση ήχων  Διαχείριση αρχείων XACT  Προσθήκη ήχων  Ρύθμιση παραμέτρων  Δημιουργία συλλογών από ήχους  Εύκολο integration για τους προγραμματιστές  Ανάκτηση με λογικά ονόματα  Looping, streaming, και memory management  Buffer Management υψηλού επιπέδου

24 Input Υποστήριξη διαχείρισης εισόδων παικτών  Έτοιμο προγραμματιστικό μοντέλο  ΔΕΝ χρειάζεται αρχικοποίηση  ΔΕΝ χρειάζεται διαχείριση καταστάσεων  Παρέχονται  Υποστήριξη για XBOX χειριστήρια  Πληκτρολόγιο  Ποντίκι (αν πρόκειται για παιχνίδι Windows)

25 Storage Παρέχεται εύκολο APΙ για λειτουργίες, ανάγνωσης εγγραφής στο σύστημα αρχείων της εκάστοτε πλατφόρμας  Το StorageContainer αποτελεί για τον προγραμματιστή ένα εικονικό σύστημα αρχείων  To XNA είναι αρμόδιο για το που και με ποιον τρόπο θα αποθηκεύσει δεδομένα  Υποστήριξη όλων των ειδών αποθήκευσης για XBOX  Όλες οι λειτουργίες βασίζονται στο System.IO namespace οπότε είναι κάτι πραγματικά εύκολο για τους προγραμματιστές.

26 Mathematics Εξειδικευμένη βιβλιοθήκη μαθηματικών λειτουργιών  Διανύσματα, πίνακες, μετασχηματισμοί, προβολές, σφαίρες, ακτίνες, καμπύλες, γεωμετρία χώρου  Εύκολη προσαρμογή μαθηματικών μοντέλων στην game engine που σχεδιάζουμε  Παρέχεται βοήθεια για κινήσεις δομικών στοιχείων παιχνιδιών

27 XNA Namespaces  Microsoft.Xna.Framework  Microsoft.Xna.Framework.Audio  Microsoft.Xna.Framework.Content  Microsoft.Xna.Framework.Design  Microsoft.Xna.Framework.GamerServices  Microsoft.Xna.Framework.Graphics  Microsoft.Xna.Framework.Graphics.PackedVector  Microsoft.Xna.Framework.Input  Microsoft.Xna.Framework.Net  Microsoft.Xna.Framework.Storage

28 ΧΝΑ & ΧΒΟΧ 360  Υπέρτατη προγραμματιστική εμπειρία  95% του API είναι κοινό μεταξύ Windows και XBOX 360  Προδιαγεγραμμένες οδηγίες που ακολουθούμε ώστε το 100% των παιχνιδιών μας να τρέχει χωρίς αλλαγές σε ΧΒΟΧ 360  Δεν χρησιμοποιούμε Windows-Specific κλάσεις από Framework API (Form, Control, EventArgs)  Δεν χρησιμοποιούμε XNA Framework API που αναφέρεται ως Windows-Only στο documentation (Texture2D.FromFile(), Mouse.GetState() )  Κώδικας, textures, media κτλ δεν πρέπει να ξεπερνούν τα 2GB. 2GB  Ονόματα αρχείων (conventions για μέγεθος ονομάτων, κτλ)  Threading

29 Native vs. managed  Unmanaged Code  Native binaries, που εκτελούνται από την CPU  Managed Code  Ο compiler παράγει ενδιάμεσο κώδικα (IL)  O Just-In-Time compiler μεταφράζει τον IL σε native κώδικα (σε run time)  Οφέλη  Διαχείριση μνήμης  Ανεξαρτησία πλατφόρμας  Ασφάλεια

30 XNA Performance  Απαιτητική η διαδικασία επεξεργασίας γραφικών, όμως…  Το βάρος πέφτει αποκλειστικά στην GPU  Μελετάμε τα system calls  Managed βιβλιοθήκες που χρησιμοποιούν την native υλοποίηση του DirectX  Overhead αμελητέο και πολλές φορές μηδενικό  Optimized έκδοση του.NETcf  Performance Monitoring Tools

31 Profiling on Xbox 360 XNA Framework Remote Performance Monitor for Xbox 360  Βασικές πληροφορίες για GC  Επίγνωση για προβλήματα GC  System calls διερευνώνται και αναφέρονται προσεκτικά  Δυστυχώς όχι καλή υποστήριξη για υπολογιστικά bottlenecks

32 Profiling on Xbox 360

33 Profiling on Windows  Οι ίδιες βελτιστοποιήσεις ισχύουν και εδώ  Άλλοι profilers που μπορούν να χρησιμοποιηθούν  Sampling profilers: Visual Studio Team System, ANTS, NProf, Optimizeit, VTune

34 Profiling on Windows CLR Profiler for the.NET Framework 2.0

35 Ολοκληρωμένο παιχνίδι (Tutorial για 60 λεπτά) (XBOX 360 demo)

36 Starter Kits  Πρώτες κινήσεις για την είσοδο στον κόσμο του XNA  C# 2005 Express Edition & XNA Game Studio Express  Έτοιμο starter kit  Χρησιμοποιείται άμεσα για την δημιουργία δικών μας παιχνιδιών, προσθαφαιρώντας κώδικα  Ανοίγουμε “New Project…” και δοκιμάζουμε  Πλήρη Documentation και tutorials  Διαθεσιμότητα  Συνεχώς δημοσιεύονται starter kits και tutorials από την κοινότητα του XNA, έτοιμα για επεξεργασία και δοκιμές τόσο για το pc όσο και για το XBOX 360

37 Game Planning

38 Τελικά τι έκανε ο XNA developer;  Οι old-school gd’s τον υποδέχτηκαν γεμάτο καχυποψία  Ο XNA developer δεν πτοήθηκε, γιατί δεν ξέρει κάτι διαφορετικό από εκείνους. Χρησιμοποιούσε ένα έξυπνο εργαλείο που τον μύησε στο game design.  Στα project-ακια του έπαιξε με shaders, χρησιμοποίησε AI, physics, κτλ  Προκάλεσε σύγχυση και άφησε το video να παίζει… viewer discretion advised :P

39 XNA in action

40 Χρήσιμα links για XNA  Downloads  Microsoft Visual C# Express Microsoft Visual C# Express  XNA Game Studio Express XNA Game Studio Express  DirectX SDK - (August 2007)(κυρίως για documentation) DirectX SDK - (August 2007)  Πηγές  Forums ○ forums.microsoft.com/msdn forums.microsoft.com/msdn  XNA Developer Center ○ msdn.com/xna msdn.com/xna

41 Χρήσιμα links για XNA  XNA team blog ○ blogs.msdn.com/xna blogs.msdn.com/xna  XNA Creators Club Online ○ creators.xna.com creators.xna.com  Community sites ○ XNAResources.com XNAResources.com ○ XNADevelopment.com XNADevelopment.com  Performance από.NETcf team ( link1 link2) link1link2  Διαθέσιμες οι παρουσιάσεις για XNA από GDC 2008 Διαθέσιμες οι παρουσιάσεις για XNA από GDC 2008  Θα βρείτε την παρουσίαση στο studentguru.gr  Ελληνικό blog του XNA (δηλώστε συμμετοχή)  To blog μου: Delicate Sound of Development

42 ΧΝΑ & ΧΒΟΧ 360  XBOX Live Silver/Gold Subscription  XNA Creators Club Academic Subscription (δωρεάν συνδρομή ενός χρόνου μέσω ELMS) XNA Creators Club Academic Subscription (δωρεάν συνδρομή ενός χρόνου μέσω ELMS)

43 Q&A Ευχαριστώ, Happy Joyful Game Designers 


Κατέβασμα ppt "Άγγελος Μπιμπούδης, Φοιτητής/Ερευνητής στο Τμήμα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστημίου Αθηνών, Microsoft Student Partner."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google