Windows Vista i DirectX 10 to największe

Podobne dokumenty
Systemy wirtualnej rzeczywistości. Komponenty i serwisy

Grafika 3D na przykładzie XNA 3.1

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Król Łukasz Nr albumu:

Zastosowania Robotów Mobilnych

Uniwersytet Mikołaja Kopernika. Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej

System zarządzający grami programistycznymi Meridius

SZYBKO ZROZUMIEĆ VISUAL BASIC 2012 Artur Niewiarowski -

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Politechnika Poznańska, Instytut Informatyki, SUM-TWO

D O K U M E N T A C J A

Czym jest wykrywanie kolizji. Elementarne metody detekcji kolizji. Trochę praktyki: Jak przygotować Visual Studio 2010 do pracy z XNA pod Windows

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Wykład 8: klasy cz. 4

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Międzyplatformowy interfejs systemu FOLANessus wykonany przy użyciu biblioteki Qt4

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Biorąc udział w projekcie, możesz wybrać jedną z 8 bezpłatnych ścieżek egzaminacyjnych:

Podstawy programowania. Wprowadzenie

Ustawienia personalne

Programowanie telefonów z Windows Phone 7, cz. 3

Referat Pracy Dyplomowej

PROGRAM MICROSOFT DEVELOPER NETWORK ACADEMIC ALLIANCE MSDN AA

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt

Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński

PRZEWODNIK PO PRZEDMIOCIE

Programowanie w C. dr inż. Stanisław Wszelak

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

Tworzenie i obsługa wirtualnego laboratorium komputerowego

Wykład 5: Klasy cz. 3

INFORMATYKA TECHNICZNA Badanie możliwości wykorzystania języka AutoLISP i środowiska VisualLISP w systemie CAx

Gry Komputerowe Laboratorium 1. Zajęcia organizacyjne Animacja z uwzględnieniem czasu. mgr inż. Michał Chwesiuk 1/22. Szczecin,

Wpisany przez Mateusz Ponikowski Czwartek, 01 Listopad :37 - Zmieniony Czwartek, 01 Listopad :42

Spis treści. Rozdział 1. Aplikacje konsoli w stylu ANSI C i podstawowe operacje w Visual C

Karta przedmiotu. Podstawy programowania procesorów graficznych. realizowanego w ramach projektu PO WER

Zacznij Tu! Poznaj Microsoft Visual Basic. Michael Halvorson. Przekład: Joanna Zatorska

Mikołaj Kania Waldemar Korłub Jakub Krajewski

Procesowa specyfikacja systemów IT

Rys. 1. Główne okno programu QT Creator. Na rysunku 2 oznaczone zostały cztery przyciski, odpowiadają kolejno następującym funkcjom:

TWORZENIE PREZENTACJI MS POWERPOINT

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Pierwszy projekt. Na początku warto wspomnieć, że program WebSite X5 dostępy jest w 3 wariantach: Start, Evolution oraz Professional

World Wide Web? rkijanka

REFERAT PRACY DYPLOMOWEJ Temat pracy: SUDOKU - Algorytmy tworzenia i rozwiązywania

16) Wprowadzenie do raportowania Rave

Programowanie gier 3D w HTML5. Andrzej P.Urbański Politechnika Poznańska

5.4. Tworzymy formularze

I. WSTĘP. Przykład 1. Przykład 2. Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych)

Webowy generator wykresów wykorzystujący program gnuplot

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

GRY KOMPUTEROWE 3D OpenGL DirectX Ogre3D Crystal Space ClanLib Irrlicht SDL Ardor3D jmonkey Engine GRY KOMPUTEROWE 2D ORX Troll2D

Aplikacje w środowisku VBA. Visual Basic for Aplications

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Garmin w pockecie? Czemu nie. dr@doktorski.net

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2018/2019

Unity 2D - prosta gra

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

e-awizo SYSTEM POTWIERDZANIA DORĘCZEŃ POCZTY ELEKTRONICZNEJ

PREZENTACJE MULTIMEDIALNE cz.2

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

PDM wbudowany w Solid Edge

1.Wstęp. 2.Generowanie systemu w EDK

PROGRAMOWANIE DLA KAŻDEGO

biegle i poprawnie posługuje się terminologią informatyczną,

Języki i paradygmaty programowania - 1

Modelowanie Informacji o Budynku (BIM)

Wykład I. Wprowadzenie do baz danych

Wykład 4. Rendering (1) Informacje podstawowe

Platformy Programowania

Miniaturowy rejestrator AUDIO-VIDEO, Video grabber HDMI, nagrywarka HDMI, streaming, id4mobile GrabberHD

Plan wykładu. Akcelerator 3D Potok graficzny

Zintegrowany system usług certyfikacyjnych. Dokumentacja użytkownika. Obsługa wniosków certyfikacyjnych i certyfikatów. Wersja dokumentacji 1.

Utworzenie pliku. Dowiesz się:

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Środowiska i platformy programistyczne

REFERAT O PRACY DYPLOMOWEJ

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

Sieciowe Technologie Mobilne. Laboratorium 2

Dodatkowo planowane jest przeprowadzenie oceny algorytmów w praktycznym wykorzystaniu przez kilku niezależnych użytkowników ukończonej aplikacji.

Pomoc do programu Oferent

Technologia Flash cieszy się coraz większą popularnością. Liczba dostępnych

PRZEWODNIK PO PRZEDMIOCIE

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Opis funkcji modułu Konwerter 3D

programowanie w oparciu o platformę netbeans w praktyce

1.3. Tworzenie obiektów 3D. Rysunek 1.2. Dostępne opcje podręcznego menu dla zaznaczonego obiektu

MAMP: Można to pobrać i zainstalować z XAMPP: Można go pobrać i zainstalować z

Czym są właściwości. Poprawne projektowanie klas

Transkrypt:

Nowe technologie Marcin Duszyński Jacek Matulewski XNA zarządzana platforma dla gier Windows Vista i DirectX 10 to największe nowości tego roku. Razem z nimi udostępniona została nowa wersja platformy.net o numerze 3.0, która ma być w zamierzeniu Microsoft nowym oficjalnym interfejsem programistycznym systemów Windows (nowym WinAPI). O tych trzech produktach było głośno. Nieco mniej informacji w prasie można znaleźć o innej nowości, która stanowi pewnego rodzaju łącznik między powyższymi technologiami, a mianowicie o XNA. Marcin Duszyński student fizyki technicznej, specjalizacji informatyka stosowana na Wydziale Fizyki, Astronomii i Informatyki Stosowanej Uniwersytetu Mikołaja Kopernika w Toruniu. Interesuje się platformą.net i tematyką gier komputerowych. Programowaniem interesuje się od szkoły podstawowej, od kiedy dostał pierwszy komputer Commodore C64. Niedawno uzyskał tytuł inżyniera. Tytułem pracy było: Modelowanie funkcji trójwymiarowych z wykorzystaniem platformy XNA. Kontakt z autorem: m.w.duszynski.s01@fizyka.umk.pl Jacek Matulewski - Fizyk zajmujący się na co dzień optyką kwantową i układami nieuporządkowanymi na Wydziale Fizyki, Astronomii i Informatyki Stosowanej Uniwersytetu Mikołaja Kopernika w Toruniu. Jego specjalnością są symulacje ewolucji układów kwantowych oddziaływujących z silnym światłem lasera. Od 1998 interesuje się programowaniem dla systemu Windows, w szczególności w środowisku Borland C++Builder. Ostatnio zainteresowany platformą.net i językiem C#. Wierny użytkownik kupionego w połowie lat osiemdziesiątych "komputera osobistego" ZX Spectrum 48k. Kontakt z autorem: jacek@fizyka.umk.pl XNA Nowe podejście do programowania gier Pojawienie się XNA jest ciekawą informacją zarówno dla graczy, jak i dla programistów. Gracza powinien zainteresować potencjał jaki tkwi w przenaszalności XNA. Samo Microsoft przygotowuje platformę XNA dla systemu Windows z zainstalowanym.net Framework (komputery PC) oraz dla konsoli gier Xbox 360 wyposażonych w.net Compact Framework. Z tego wynika, że gry korzystające z XNA powinny być jednocześnie dostępne dla obu platform i rzeczywiście w tej chwili przenaszalność kodu jest niemal stuprocentowa. Niezależnie od Microsoft w ramach projektu Mono powstaje Mono.XNA Framework wieloplatformowy interfejs oparty na OpenGL i SDL. Można zatem przypuszczać, że zarządzane gry przygotowywane dla platformy XNA będą mogły być uruchamiane na niemal dowolnym komputerze oraz na niektórych konsolach. Także entuzjaści konsoli Sony Playstation 3, która przecież dopiero co pojawiła się na rynku, już próbują uruchamiać gry XNA na swoich zabawkach korzystając z Mono.XNA pracującego w systemie Linux. Wprawdzie cały projekt jest jeszcze we wstępnej fazie realizacji, w szczególności grafika 3D realizowana jest jeszcze programowo, a nie sprzętowo, ale to z pewnością tylko kwestia czasu, aby i na Playstation 3 można było bawić się grami dla platformy XNA. Nowe perspektywy dla programistów gier Natomiast programiści powinni być zainteresowani perspektywą wydajnego tworzenia kodu gier w języku C# dla platformy zarządzanej, jaką jest platforma XNA. Przypomnijmy sobie zalety platformy.net: zwiększone bezpieczeństwo, konsekwentna obiektowość, zmniejszenie rozmiaru plików wykonywalnych dzięki umieszczeniu zestawu klas i komponentów w bibliotekach samej platformy oraz przenośność kodu pośredniego. Te wszystkie zalety przejmuje także platforma XNA. Ponadto XNA daje dostęp do bibliotek zarządzanych klas pozwalających na tworzenie grafiki trójwymiarowej. XNA ma być w tym względzie spadkobiercą bardzo udanego interfejsu Managed DirectX (MDX)1. W tej chwili biblioteki XNA komunikują się z kartą graficzną za pośrednictwem DirectX, a w szczególności jego modułu Direct3D. Wraz z platformą XNA udostępnione zostają narzędzia programistyczne pozwalające na tworzenie gier dla nowej platformy. Microsoft opublikował dodatek do darmowego środowiska programistycznego Visual C# 2005 Express Edition o nazwie XNA Game Studio Express (XNA GSE). Można go nieodpłatnie pobrać ze strony http://msdn.microsoft.com/ xna/. Wersja darmowa ma ograniczone możliwości i zgodnie z deklaracjami producenta przeznaczona jest głównie dla amatorów chałupniczego programowania gier i studentów. Jednak już w tym roku ma zostać wydana profesjonalna edycja XNA GSE integrująca się z pełną wersją Visual Studio 2005, która umożliwiać będzie tworzenie komercyjnych gier zarówno dla systemów Windows, jak i dla konsol Xbox 360. Nie można oczywiście oczekiwać, aby ta wersja była darmowa, ale jej cena nie została jeszcze ogłoszona. Celem XNA GSE jest zmiana podejścia do tworzenia gier. Do tej pory z programowaniem gier wiązało się tak wiele trudnych kwestii technicznych, 48 www.sdjournal.org Software Developer s Journal 12/2007

XNA zarządzana platforma dla gier Czym jest XNA? XNA to nowa platforma uruchomieniowa bazująca na dobrze znanej nam wszystkim platformie.net. Pozwala na uruchamianie nie byle jakich aplikacji, bo korzystających z trójwymiarowej grafiki gier komputerowych. Nieco upraszczając można powiedzieć, że z punktu widzenia użytkownika komputera XNA jest zoptymalizowaną pod gry równoległą odmianą platformy.net. Samej platformie, którą można bezpłatnie pobrać ze strony http://msdn.microsoft.com/xna/ towarzyszą także bezpłatne narzędzia do tworzenia gier. Taki zestaw jest stymulatorem do natychmiastowego powstania i dynamicznego rozwoju społeczności programistów zainteresowanych nową platformą. I dlatego prawie natychmiast powstały strony udostępniające poradniki, oferujące przykładowe kody i gotowe gry. Można zatem powiedzieć, że XNA to już nie tylko nowa technologia, to także związana z nią społeczność zapaleńców programowania gier, a w szczególności gier korzystających z grafiki 3D. Rysunek 1. Prezentacja finalnej wersji XNA że nierzadko programiści gubiąc się w ich gąszczu tracili z oczu pierwotny pomysł gry i te trudne do zdefiniowania elementy, które wpływają na jej grywalność. Przez to publikowanych jest wiele gier z nowoczesną, ładnie wyglądającą grafiką, ale nieciekawych. XNA ma to zmienić w zasadniczy sposób. Dołączone do XNA klasy implementujące interfejsy do bibliotek generujących grafikę oraz dźwięk mają znakomicie ułatwić programowanie tej technicznej sfery gier, a to pozwoli na skupienie się na tym, co najważniejsze, a więc na projektowaniu świata i logiki gry. Korzystanie z udogodnień środowiska Visual C#, choćby podpowiadanie i uzupełnianie kodu oraz dołączona pełna dokumentacja wraz z przykładami, i same zalety języka C# dają gwarancje, że te obietnice Microsoft mogą mieć pokrycie w rzeczywistości. Wykorzystanie zarządzanej platformy i nowoczesnego języka C# niewątpliwie będą miały również wpływ na stabilność gry. Teraz gry pisane są zwykle w C++, który ma opinię wydajnego (szybkiego, potężnego), ale czasami niebezpiecznego, nawet w doświadczonych rękach. Potwierdza to ilość błędów w grach, nawet tych komercyjnych. W tej sytuacji wykorzystanie zabezpieczeń wpisanych w zarządzaną platformę i język C# jest przynajmniej godna rozważenia. Ponadto XNA GSE będzie wyposażona w dodatkowe narzędzia, które mają wspomóc publikowanie gier. Najczęściej wspomnianym jest mechanizm weryfikowania wykorzystywanych przez gry plików, który ma usuwać z gotowego pakietu gry te pliki, które nie są przez nią wykorzystywane. A tych podobno jest zwykle całkiem sporo (Microsoft podaje jako przykład swoją własną grę, która po weryfikacji znacznie schudła ). Architektura XNA Platforma XNA podzielona jest na moduły. Może lepszym terminem jest warstwy. Najbliżej sprzętu, na którym uruchamiana jest gra jest warstwa aplikacji. Odpowiada za inicjalizację urządzeń oddanych we władanie XNA oraz za obsługę jej biblioteki komponentów na danej platformie sprzętowej. Wyżej leży warstwa grafiki. W tej chwili opiera się na wspomaganym sprzętowo interfejsie Direct3D w wersji z DirectX 9.0c. W przeciwieństwie do zarządzanego DirectX (MDX 1.0), XNA bazuje na programowalnym potoku shaderów. To ozna- Listing 1. Pełen kod gry zawierający rozszerzenie klasy Game namespace XNA2D public class Game1 : Microsoft.Xna.Framework.Game Texture2D stexture; SpriteBatch sspritebatch; protected override void LoadGraphicsContent(bool loadallcontent) if (loadallcontent) sspritebatch = new SpriteBatch(this.graphics.Gr aphicsdevice); stexture = content.load<texture2d>("xna") as Texture2D; protected override void Draw(GameTime gametime) graphics.graphicsdevice.clear(color.cornflowerblue); sspritebatch.begin(spriteblendmode.alphablend); sspritebatch.draw(stexture, new Rectangle(0, 0, 100, 50), new Rectangle(0, 0, stexture.width, stexture.height), Color.White); sspritebatch.end(); base.draw(gametime); Software Developer s Journal 12/2007 www.sdjournal.org 49

Nowe technologie Co oznacza skrót XNA? Pewnie Czytelnik zastanawia się dlaczego dotąd nie podaliśmy rozwinięcia skrótu XNA. Po prostu dlatego, że go nie ma. W FAQ można znaleźć nawet żart jego twórców, którzy na pytanie o to co kryje się za XNA odpowiadają: XNA s Not Acronymed. cza, że do wygenerowania każdej, nawet najbardziej prostej sceny będziemy musieli przygotować program dla Vertex i Pixel Shaderów. Programy dla jednostek cieniowania tworzy się tak samo jak dotychczas, tzn. za pomocą języka HLSL (ang. High Level Shader Language). Jednak aby uprościć życie początkującym programistom Microsoft przygotowało zbiór gotowych programów zawarty w klasie BasicEffect, który oferuje podstawowy tryb renderowania sceny z wykorzystaniem tekstur oraz światła. Kolejna warstwa odpowiedzialna jest za dźwięk. Zadaniem programisty-dźwiękowca jest przygotowanie paczek efektów dźwiękowych, które platforma XNA potrafi obsługiwać. Może do tego wykorzystać aplikację Microsoft Cross-Platform Audio Creation Tool (w skrócie XACT). W owych paczkach zawarta jest informacja o poziomie głośności, parametrach miksowania kanałów i inne parametry audio. Rola programisty scalającego projekt polega w przypadku dźwięku jedynie na włączeniu takiej paczki do projektu aplikacji, wczytaniu jej w odpowiednim miejscu do pamięci i uruchomieniu dźwięku. Nie interesują już go szczegóły dotyczące dźwięku te informacje zawarte zostały już w paczkach dźwięków pochodzących z aplikacji XACT. Najbliżej gracza jest warstwa wyjścia, która jest wspólnym dla XNA w Windows i w Xbox 360 interfejsem obsługującym kontrolery wykorzystywane do kontroli aplikacji (klawiatura, mysz, gamepad). XNA dysponuje też warstwą pomocniczą, która zajmuje się przekształceniami matematycznymi, które intensywnie wykorzystywane są w grach i przy transformacjach trójwymiarowych scen. Dostępne są zatem typy implementujące wektory trójwymiarowe, macierze, płaszczyzny wraz z metodami odpowiedzialnymi za ich algebrę i przekształcenia. Ciekawie brzmi również zapowiedź dodania warstwy odpowiedzialnej za realistyczną symulację zjawisk fizycznych (np. wpływ grawitacji na zachowanie przedmiotów na scenie), która, jeżeli wiązałaby się ze wsparciem sprzętowym, mogłaby doprowadzić do poważnego przełomu w realizmie gier komputerowych. Przyszłość XNA Microsoft deklaruje, że bezpłatna wersja XNA przeznaczona jest przede wszystkim dla hobbystów i eksperymentujących z programowaniem studentów. Nie trudno się jednak domyślić, że prawdziwym przeznaczeniem, podobnie jak w przypadku darmowej wersji środowiska Visual C#, jest promocja profesjonalnej edycji planowanej na lato tego roku. Nie zmienia to jednak faktu, że XNA i XNA GSE są niezwykle ciekawym pomysłem, który warty jest uważnej obserwacji. Jest to technologia, która nadal jest w początkowej fazie rozwoju, ale możemy się spodziewać, że dzięki wsparciu Microsoft wkrótce zaczną powstawać przeznaczone na nią profesjonalnie przygotowane gry. Nawet obecna darmowa wersja XNA GSE umożliwia tworzenie gier, które robią bardzo dobre wrażenie. A przy tym są przenaszalne - można je uruchomić na Windows i Xbox 360 (a dzięki Mono.XNA także na innych systemach i konsolach). W przypadku Xbox kryje się tu jednak pewien haczyk. Po pierwsze każdy kto zechce uruchomić przygotowany w XNA GSE kod na tej konsoli musi należeć do XNA Creators Club, a członkostwo w klubie kosztuje 99 dolarów rocznie i jest dostępne tylko dla osób, które maja wykupiony dostęp do Xbox Live. Po dru- Listing 2. Kod wyświetlający model z pliku namespace XNA3D public class Game1 : Microsoft.Xna.Framework.Game Model mymodel; Vector3 cameraposition = new Vector3(0.0f, 50.0f, 5000.0f); float aspectratio = 640.0f / 480.0f; Vector3 modelposition = Vector3.Zero; protected override void LoadGraphicsContent(bool loadallcontent) if (loadallcontent) mymodel = content.load<model>("content\\models\ \statek"); protected override void Draw(GameTime gametime) graphics.graphicsdevice.clear(color.cornflowerblue); foreach (ModelMesh mesh in mymodel.meshes) foreach (BasicEffect effect in mesh.effects) effect.enabledefaultlighting(); effect.world = Matrix.CreateTranslation(mod elposition); effect.view = Matrix.CreateLookAt(cameraPos ition, Vector3.Zero, Vector3.Up); effect.projection = Matrix.CreatePerspectiv efieldofview( MathHelper.ToRadians(45.0f),aspectRatio, 1.0f, 30000.0f); mesh.draw(); 50 www.sdjournal.org Software Developer s Journal 12/2007

XNA zarządzana platforma dla gier Rysunek 2. Pocket- Jongg na platformie XNA gie gra może być wgrana do konsoli tylko za pośrednictwem komputera wyposażonego w Windows XP SP2. Użytkownicy konsoli liczą, że z czasem Microsoft udostępni jakąś witrynę pozwalająca na swobodną wymianę napisanych przez hobbystów gier XNA, ale na razie nie ma żadnego sygnału z Redmond, aby te nadzieje miały jakieś realne podstawy. Rysunek 3. Dokumentacja XNA Game Studio Express Pierwszy kontakt z XNA Czas na spojrzenie na XNA od bardziej praktycznej strony. Spróbujmy przygotować prostą aplikację, która ograniczać będzie się w prawdzie do wyświetlania prostych obiektów, ale do tego skorzystamy z większości typowych mechanizmów, na które napotykamy we wszystkich projektach XNA. Jak już wcześniej wspomnieliśmy, do tworzenia własnych aplikacji uruchamianych w platformie XNA potrzebujemy Microsoft Visual C# 2005 Express Edition oraz XNA Game Studio Express. Po ich instalacji możemy uruchomić Visual C#, w którym tworzymy nowy projekt typu Windows Game. W ten sposób powstanie szkielet nowej aplikacji. Przy projektowaniu gier dla XNA korzystamy z wszystkich zalet środowiska programistycznego Microsoft. Oznacza to, że dysponujemy możliwością uzupełniania kodu, która jest szczególnie użyteczna w przypadku nowopoznawanych bibliotek, informacją o argumentach metod i dokumentacją. Ponadto projekt, który stworzyliśmy zawiera już wszystkie standardowe metody niezbędne przy tworzeniu gry korzystającej z grafiki w XNA. Są one opatrzone wyczerpującymi komentarzami. W najprostszym przypadku zadaniem programisty jest zatem jedynie wypełnienie tych metod kodem, który określi działanie gry. Metoda, która wykonywana jest jako pierwsza to Initialize. Odpowiada za inicjalizację stanu wykorzystywanych obiektów oraz za wykonanie czynności wstępnych np. wczytanie paczek z dźwiękami. Następnie, w celu dostarczenia obiektów graficznych zostanie wykonana metoda LoadGraphicsContent, która odpowiada za wczytanie obiektów 2D (np. tekstur) i 3D do pamięci. Oczywiście jest również metoda odpowiedzialna za usunięcie tych obiektów z UnloadGraphicsContent. Przy prostych aplikacjach nie jest wykorzystywana przez programistę, ponieważ platforma XNA, podobnie, jak platforma.net jest zarządzana, a więc za usuwanie obiektów odpowiedzialny jest wbudowany w platformę garbage collector. Metoda ta może być jednak użyta w projektach w znacznym stopniu wykorzystujących pamięć komputera, w których warto usuwać niepotrzebne dane z pamięci, aby przygotować miejsce dla nowych danych potrzebnych do wygenerowania kolejnej sceny. Nasza aplikacja, jak każda gra, musi oczywiście reagować na bodźce z zewnątrz. Ich obróbką zajmuje się metoda Update. Jej zadaniem jest uaktualnianie stanu obiektów i przetwarzanie poleceń z zewnątrz. Tym samym to w tej metodzie zawarta będzie logika gry odpowiedzialną za przetwarzanie danych wejściowych (klawiatura, myszka, gamepad) w dane wyjściowe, a więc w wyświetlany obraz, a tym samym odpowiada za komunikacje z graczem. Polecenia rysowania obiektów na scenie nie są jednak umieszcza- Verba docent, exempla trahunt Słowa uczą, przykłady pociągają. Zgodnie z tą ideą Microsoft udostępnił zbiór tak zwanych Starter Kits, a więc projektów gier XNA, których uważna analiza może być bardziej pouczająca niż studiowanie książek o nowej platformie. Jeden z takich projektów jest nawet dołączony do XNA Game Studio Express. Jest to Spacewar Starter Kit projekt dwuwymiarowej gry dla dwóch graczy. Inny ciekawy projekt o nazwie The Racing Game Starter Kit dostępny jest na stronie creators.xna.com. Jest to bardzo rozbudowana trójwymiarowa gra wyścigowa. Po spędzeniu kilku chwil na graniu, warto zajrzeć pod jej maskę, a może nawet pokusić się o jej rozbudowę lub modyfikację. Rysunek 4. Demo techniczne prezentujące możliwości XNA wykorzystujące silnik Torque X Software Developer s Journal 12/2007 www.sdjournal.org 51

Nowe technologie ne w metodzie Update obraz powinien być tworzony w odrębnej metodzie Draw, która na podstawie uaktualnionego stanu obiektów przygotowuję scenę. Metoda ta może być bardzo rozbudowana. Nawet pusty szkielet kodu utworzony przez kreator można skompilować. Spróbujmy. Wciśnijmy w tym celu magiczny przycisk F5. Po chwili powinniśmy zobaczyć niebieską planszę okno naszej pierwszej gry. Nie jest to oczywiście nic szczególnego, obraz jest w zasadzie pusty, ale już na starcie wyposażony w trójwymiarową przestrzeń. Zresztą już za chwilę umieścimy w tej przestrzeni pierwsze obiekty. Grafika 2D Pomimo, że dzisiejszych czasach już prawie wszyscy zapomnieli o grach z grafiką 2D, naszym zdaniem programista który wchodzi w obszar programowania gier, powinien choćby liznąć generowanie płaskich obiektów, szczególnie, że ich tworzenie jest łatwiejsze niż obsługa magnetowidu. Tego typu obiekty od dawien dawna (tj. od epoki Commodore C64) nazywane są sprite ami, co zwykle tłumaczy się jako duszki. Proces tworzenia dwuwymiarowego obiektu rozpoczynamy od wczytania tekstury jaką zostanie on pokryty. Służy do tego metoda Load obiektu typu ContentManager. Pozwala ona przypisać plik z teksturą do obiektu typu Texture- 2D. Dzięki temu możemy swobodnie manipulować i wyświetlać zawartość tekstury (Listing 1). Jeżeli dysponujemy tymi obiektami, możemy bez przeszkód wyświetlić obiekt wywołując metodę Draw na rzecz instancji klasy SpriteBatch. Jej parametrami są: instancja klasy Texture2D z przypisaną teksturą, prostokąt, na którym ma być wyświetlony obiekt, prostokąt wyznaczający fragment tekstury, który ma być użyty oraz tzw. kolor modulacji. W przypadku, gdy za kolor modulacji użyta jest biel, kolory tekstury wyświetlane są bez modyfikacji. Na płycie dołączonej do czasopisma znajduje się opisana powyżej aplikacja w rozszerzonej wersji, która nadaje się do samodzielnej analizy. Wydaje nam się, że prześledzenie jej działania więcej nauczy Czytelnika o tworzeniu gier 2D niż kilka stron tekstu. Nawet teraz widać jednak, że tworzenie grafiki dwuwymiarowej w XNA jest łatwe i szybkie. Dzięki temu możemy skupić się na pracy nad logiką gry. Rysunek 5. Wyświetlanie dwuwymiarowego obiektu z teksturą Rysunek 6. Obiekt trójwymiarowy Grafika 3D Uznajmy, że grafikę 2D mamy już oswojoną. Możemy zatem wkroczyć w wirtualny świat trzech wymiarów. Siłą rzeczy w tym artykule, którego jedynym celem jest tylko zaprezentowanie nowej technologii, ograniczymy się do bardzo skromnego wstępu. Temat tworzenia gier 3D w XNA jest bowiem niemal nie do wyczerpania. Jednak, o czym zdążyliśmy się już przekonać, praca z XNA jest bardzo efektywna, ciekawe efekty możemy uzyskać już za pomocą kilku linii kodu. Taki będzie nasz przykład gry 3D. Sama filozofia tworzenia i wyświetlania obiektów 3D nie różni się bardzo od tworzenia sprite ów. Musimy jednak dysponować plikiem modelu, tj. plikiem zawierającym opis trójwymiarowego obiektu łącznie z teksturami, który chcemy pokazać na scenie. Plik ten dodajemy do projektu (okno Solution Explorer) jako Content Pipeline. Aby wczytać ów obiekt do pamięci po uruchomieniu gry, należy użyć instancji klasy ContentManager, a dokładnie jej metody Load. Po tym możemy go po prostu wyświetlić metodą Draw. Cały proces wygenerowania modelu na scenie zawarty jest w kodzie widocznym na Listingu 2. Jeśli pracujemy z plikami standardowo obsługiwanymi przez Content Pipeline, cała odpowiedzialność za wczytanie i obsługę tekstur modelu spoczywa na środowisku XNA. Takimi formatami plików są na przykład.fbx,.x lub.png. Mniej przyjemnie jest, jeżeli dysponujemy plikiem, który nie jest obsługiwany przez XNA. Wówczas to na programistę spada obowiązek przygotowania kodu wczytującego i interpretującego jego zawartość. Jednak zanim rozpoczniemy pisanie odpowiedniego kodu, warto sprawdzić, czy nie został on już przygotowany przez członków bardzo prężnej społeczności miłośników XNA. Już teraz są dostępne w Internecie, oczywiście gratis, komponenty do XNA, w tym komponenty rozszerzające obsługę formatów graficznych przez Content Pipeline. Wyświetlenie obiektu (w naszym przypadku statku kosmicznego Rysunek 6), to jedno, a jego ruch to zupełnie osobna sprawa. Listing 2. zawiera wyłącznie kod wyświetlający model z pliku. Jeżeli Czytelnik chce dowiedzieć się, w jaki sposób nim poruszać, może przyjrzeć się projektowi umieszczonemu na CD dołączonym do czasopisma, w którym projekt trójwymiarowej gry został rozszerzony o możliwość kierowania statkiem kosmicznym i efekty dźwiękowe. Możemy jednak zapewnić, że nie jest to bardziej skomplikowane niż 52 www.sdjournal.org Software Developer s Journal 12/2007

W Sieci http://msdn.microsoft.com/xna/ oficjalna strona XNA w witrynie Microsoft http://www.xna.pl/ polska strona poświęcona platformie XNA http://www.xnatutorial.com/, http://learnxna.com/ strony z poradnikami uczącymi XNA http://www.openxna.net/ witryna projektu Mono.XNA http://creators.xna.com/ witryna dla projektantów gier XNA http://www.ziggyware.com/ wiadomości i nowinki ze świata XNA to, czym zajmowaliśmy się do tej pory. Dwa opisane powyżej proste projekty aplikacji XNA miały Czytelnika przekonać, że programowanie gier w nowej platformie Microsoft jest łatwiejsze niż korzystając z Win32 i DirectX. Mam nadzieję, że nam to się udało i że polskie środowisko programistów doceni nową możliwość i amatorskie gry dla XNA zaczną powstawać także w naszym kraju. Podsumowanie XNA cały czas ewoluuje powiększając jednocześnie grono swoich zwolenników. Niedawno Microsoft ogłosił, że do nadchodzącego wydania XNA 2.0 doda obsługę komunikacji sieciowej (zarówno w wersji na blaszaka, jak i Xbox 360). Wszystkie społeczności internetowe skupione wokół XNA wyczekują na szczegóły odnośnie implementacji nowej usługi na konsoli bo do tej pory w ogóle nie było na tej platformie żadnego mechanizmu udostępniającego taką funkcjonalność. Kolejną niespodzianką jest rezygnacja z opłat za narzędzia developerskie pozwalające na rozwijanie kodu dla XNA w Visual Studio (także w pełnej wersji Professional). Wydaje się jasne, że łączy się to z zapowiadaną promocją XNA także jako narzędzia do profesjonalnego tworzenia gier komercyjnych. Byłoby to doskonałym remedium na stale rosnący koszt gier i być może przełożyłoby się także na cenę końcowego produktu, ale to ostatnie zostanie pewnie tylko naszym niespełnionym marzeniem. Mimo wszystko mam nadzieję, że za parę lat będzie powstawać dużo ciekawych gier komputerowych bazujących właśnie na XNA Framework, co przełoży sie nie tylko na ich jakość, ale także stabilność - spory problem dzisiejszych gier działających na platformie Win32 i DirectX. Chociaż XNA nie jest jeszcze rozwiązaniem idealnym, to udostępnia szybką i bezpieczną bazę dla tworzenia gier komputerowych. Wieloplatformowość i bezpłatne udostępnianie środowiska oraz aplikacji dodatkowych, w tym developerskich, powoduje, że XNA zdobywa coraz większą popularność. Dzięki swojej prostocie i dostępności jest to idealne rozwiązanie dla studentów, uczelni i małych firm programistycznych. Nie ponosząc żadnych nakładów finansowych dostajemy zaawansowane środowisko oraz rozbudowaną i uniwersalna bazę dla naszych gier komputerowych i innych aplikacji korzystających z grafiki 3D. Ponadto za pośrednictwem wielu stron internetowych możemy nieodpłatnie pobrać gotowe komponenty, które rozszerzają możliwości XNA i dodatkowo skracają czas poświęcany na przygotowanie kodu aplikacji lub gry. Cała funkcjonalność XNA przekłada się na oszczędność czasu oraz pieniędzy. Software Developer s Journal 12/2007