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

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

4/3/2017 9:57 AM ΧΝΑ in a nutshell Τι κάνει ένας XNA Developer σε ένα μεγάλο studio ανάπτυξης παιχνιδιών; Άγγελος Μπιμπούδης, Φοιτητής/Ερευνητής στο Τμήμα.

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


Παρουσίαση με θέμα: "4/3/2017 9:57 AM ΧΝΑ in a nutshell Τι κάνει ένας XNA Developer σε ένα μεγάλο studio ανάπτυξης παιχνιδιών; Άγγελος Μπιμπούδης, Φοιτητής/Ερευνητής στο Τμήμα."— Μεταγράφημα παρουσίασης:

1 4/3/2017 9:57 AM ΧΝΑ in a nutshell Τι κάνει ένας XNA Developer σε ένα μεγάλο studio ανάπτυξης παιχνιδιών; Άγγελος Μπιμπούδης, Φοιτητής/Ερευνητής στο Τμήμα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστημίου Αθηνών, Microsoft Student Partner

2 Πώς φτάσαμε στο XNA Assembly Direct3D <= 7.x Direct3D 8,9
4/3/2017 9:57 AM Πώς φτάσαμε στο 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
4/3/2017 9:57 AM 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
4/3/2017 9:57 AM 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
4/3/2017 9:57 AM 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
4/3/2017 9:57 AM 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
4/3/2017 9:57 AM 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 4/3/2017 9:57 AM XNA Equivalent _

10 Toggling FullScreen 4/3/2017 9:57 AM
// 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 ) 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); 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
4/3/2017 9:57 AM Full Screen – XNA Equivalent graphics.IsFullScreen = true/false

12 Microsoft’s XNA Framework
Το ΧΝΑ (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, αναμένεται τέλος έτους)

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

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

15 XNA Framework Layers Games Starter Kits Code Content Components
Extended Framework Application Model Content Pipeline Core Framework Graphics Audio Input Math Storage Platform XACT XINPUT XContent Direct3D Legend XNA Προγραμματιστής Πηγές

16 4/3/2017 9:57 AM Extended Framework

17 Έμφαση στην λογική του παιχνιδιού
4/3/2017 9:57 AM 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 4/3/2017 9:57 AM Application Model Δημιουργία components και προσθήκη λειτουργικότητας με αντικειμενοστραφή λογική Game Component Βασικός τύπος για όλα τα XNA components Game.GameComponents Διαχειρίζονται από την managed πλατφόρμα του framework Προσθέτουν λειτουργικότητα Game Logic Rendering Code Frame rate Menus

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

21 4/3/2017 9:57 AM Core Framework

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

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

24 Υποστήριξη διαχείρισης εισόδων παικτών
4/3/2017 9:57 AM Input Υποστήριξη διαχείρισης εισόδων παικτών Έτοιμο προγραμματιστικό μοντέλο ΔΕΝ χρειάζεται αρχικοποίηση ΔΕΝ χρειάζεται διαχείριση καταστάσεων Παρέχονται Υποστήριξη για XBOX χειριστήρια Πληκτρολόγιο Ποντίκι (αν πρόκειται για παιχνίδι Windows)

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

26 Εξειδικευμένη βιβλιοθήκη μαθηματικών λειτουργιών
4/3/2017 9:57 AM 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 Υπέρτατη προγραμματιστική εμπειρία
4/3/2017 9:57 AM ΧΝΑ & ΧΒΟΧ 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. Ονόματα αρχείων (conventions για μέγεθος ονομάτων, κτλ) Threading

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

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

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

32 4/3/2017 9:57 AM Profiling on Xbox 360

33 Profiling on Windows Οι ίδιες βελτιστοποιήσεις ισχύουν και εδώ
4/3/2017 9:57 AM 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 λεπτά)
4/3/2017 9:57 AM Ολοκληρωμένο παιχνίδι (Tutorial για 60 λεπτά) (XBOX 360 demo) 35

36 Starter Kits Πρώτες κινήσεις για την είσοδο στον κόσμο του XNA
4/3/2017 9:57 AM 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 4/3/2017 9:57 AM Game Planning

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

39 4/3/2017 9:57 AM XNA in action

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

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

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

43 4/3/2017 9:57 AM Q&A Ευχαριστώ, Happy Joyful Game Designers 


Κατέβασμα ppt "4/3/2017 9:57 AM ΧΝΑ in a nutshell Τι κάνει ένας XNA Developer σε ένα μεγάλο studio ανάπτυξης παιχνιδιών; Άγγελος Μπιμπούδης, Φοιτητής/Ερευνητής στο Τμήμα."

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


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