6
 48 Nowe technologie www. sdj ournal.org Sof tware Developers Journal 12/2007 XNA – zarządzana platforma dla gier W indows Vista i DirectX 10 to największe nowości tego roku. Razem z nimi udo- stępniona została nowa wersja platfor- my . NET  o numerze 3.0, która ma być w zamierze- niu Microsoft nowym oficjalnym interfejsem progra- mistycznym 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 po- wyższymi technologiami, a mianowicie o XNA. XNA – Nowe podejście do programowania gier Pojawienie się XNA jest ciekawą informacją zarów- no dla graczy, jak i dla programistów. Gracza po- winien zainteresować potencjał jaki tkwi w prze- naszalności XNA. Samo Microsoft przygotowu-  je platfo rmę XNA dla systemu Windows z zainst a- lowanym . NET  Framework  (komputery PC) oraz dla konsoli gier Xbox 360 wyposażonych w . NET Com-  pact 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 przena- szalność 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 przypusz- czać, że zarządzane gry przygotowywane dla plat- formy XNA będą mogły być uruchamiane na nie- mal dowolnym komputerze oraz na niektórych kon- solach. Także entuzjaści konsoli Sony Playstation 3, która przecież dopiero co pojawiła się na ryn- ku, już próbują uruchamiać gry XNA na swoich „za- bawkach” 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 grafi- ka 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 plat- forma XNA. Przypomnijmy sobie zalety platformy .NET: zwiększone bezpieczeństwo, konsekwent- na obiektowość, zmniejszenie rozmiaru plików wy- konywalnych dzięki umieszczeniu zestawu klas i komponentów w bibliotekach samej platformy oraz przenośność kodu pośredniego. Te wszystkie zale- ty przejmuje także platforma XNA. Ponadto XNA da-  je dostęp do bibliotek zarzą dzanych klas pozwala -  jących na two rzenie gr afiki t rójw ymiarow ej. XNA ma być w tym względzie spadkobiercą bardzo udane- go interfejsu Managed DirectX (MDX)1 . W tej chwi- li 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ą na- rzędzia programistyczne pozwalające na tworzenie gier dla nowej platformy. Microsoft opublikował do- datek do darmowego środowiska programistyczne- go Visual C# 2005 Express Edition o nazwie XNA Game Studio Express (XNA GSE) . Można go nieod- płatnie pobrać ze strony http://msdn.microsoft.com/  xna/ . Wersja darmowa ma ograniczone możliwości i zgodnie z deklaracjami producenta przeznaczona  jest główn ie d la amatorów „chał upnicze go” pro gra- mowania 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 kon- sol 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 two- rzenia gier. Do tej pory z programowaniem gier wią - zało się tak wiele trudnych kwestii technicznych, Marcin Duszyński Jacek Matulewski Marcin Duszyński – student fizyki technicznej, specjali- zacji informatyka stosowana na Wydziale Fizyki, Astro- nomii i Informatyki Stosowanej Uniwersytetu Mikołaja Kopernika w Toruniu. Interesuje się platformą .NET i te- matyką gier komputerowych. Programowaniem interesu-  je się od szkoł y pods tawowej, od kiedy do stał pier wszy komputer Commodore C64. Niedawno uzyskał tytuł inży- niera. Tytułem pracy było: „Modelowanie funkcji trójwy- miarowych z wykorzys taniem platformy XNA”. Kontakt z autorem: [email protected] Jacek Matulewski - Fizyk zajmujący się na co dzień opty- ką kwantową i układami nieuporządkowanymi na Wy- dziale Fizyki, Astronomii i Informatyki Stosowanej Uni- wersytetu 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ól- ności w środowisku Borland C++Builder. Ostatnio zainte- resowany platformą .NET i językiem C#. Wierny użytkow- nik kupionego w połowie lat osiemdziesiątych "kompute- ra osobistego" ZX Spectrum 48k. Kontakt z autorem: [email protected] 

XNA - zarządzana platforma dla gier

Embed Size (px)

Citation preview

Page 1: XNA - zarządzana platforma dla gier

5/17/2018 XNA - zarządzana platforma dla gier - slidepdf.com

http://slidepdf.com/reader/full/xna-zarzadzana-platforma-dla-gier 1/6

 

48

Nowe

technologie

www.sdjournal.org Software Developer’s Journal 12/2007

XNA – zarządzana

platforma dla gierW

indows Vista i DirectX 10 to największe

nowości tego roku. Razem z nimi udo-

stępniona została nowa wersja platfor-

my .NET  o numerze 3.0, która ma być w zamierze-

niu Microsoft nowym oficjalnym interfejsem progra-

mistycznym 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 po-

wyższymi technologiami, a mianowicie o XNA.

XNA – Nowe podejściedo programowania gierPojawienie się XNA jest ciekawą informacją zarów-

no dla graczy, jak i dla programistów. Gracza po-

winien zainteresować potencjał jaki tkwi w prze-

naszalności XNA. Samo Microsoft przygotowu-

 je platformę XNA dla systemu Windows z zainsta-

lowanym .NET  Framework (komputery PC) oraz dla

konsoli gier Xbox 360 wyposażonych w .NET Com- 

 pact 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 przena-szalność 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 przypusz-

czać, że zarządzane gry przygotowywane dla plat-

formy XNA będą mogły być uruchamiane na nie-

mal dowolnym komputerze oraz na niektórych kon-

solach. Także entuzjaści konsoli Sony Playstation

3, która przecież dopiero co pojawiła się na ryn-

ku, już próbują uruchamiać gry XNA na swoich „za-

bawkach” 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 grafi-

ka 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 perspektywydla programistów gierNatomiast programiści powinni być zainteresowani

perspektywą wydajnego tworzenia kodu gier w ję-

zyku C# dla platformy zarządzanej, jaką jest plat-

forma XNA. Przypomnijmy sobie zalety platformy

.NET: zwiększone bezpieczeństwo, konsekwent-

na obiektowość, zmniejszenie rozmiaru plików wy-

konywalnych dzięki umieszczeniu zestawu klas i

komponentów w bibliotekach samej platformy oraz

przenośność kodu pośredniego. Te wszystkie zale-ty przejmuje także platforma XNA. Ponadto XNA da-

 je dostęp do bibliotek zarządzanych klas pozwala-

 jących na tworzenie grafiki trójwymiarowej. XNA ma

być w tym względzie spadkobiercą bardzo udane-

go interfejsu Managed DirectX (MDX)1. W tej chwi-

li 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ą na-

rzędzia programistyczne pozwalające na tworzenie

gier dla nowej platformy. Microsoft opublikował do-

datek do darmowego środowiska programistyczne-

go Visual C# 2005 Express Edition o nazwie XNA

Game Studio Express (XNA GSE). Można go nieod-

pł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” progra-

mowania 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 kon-

sol 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 two-

rzenia gier. Do tej pory z programowaniem gier wią-

zało się tak wiele trudnych kwestii technicznych,

Marcin Duszyński

Jacek Matulewski

Marcin Duszyński – student fizyki technicznej, specjali-

zacji informatyka stosowana na Wydziale Fizyki, Astro-

nomii i Informatyki Stosowanej Uniwersytetu Mikołaja

Kopernika w Toruniu. Interesuje się platformą .NET i te-

matyką gier komputerowych. Programowaniem interesu-

 je się od szkoły podstawowej, od kiedy dostał pierwszy

komputer Commodore C64. Niedawno uzyskał tytuł inży-

niera. Tytułem pracy było: „Modelowanie funkcji trójwy-

miarowych z wykorzystaniem platformy XNA”.

Kontakt z autorem: [email protected] 

Jacek Matulewski - Fizyk zajmujący się na co dzień opty-

ką kwantową i układami nieuporządkowanymi na Wy-

dziale Fizyki, Astronomii i Informatyki Stosowanej Uni-

wersytetu 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ól-

ności w środowisku Borland C++Builder. Ostatnio zainte-

resowany platformą .NET i językiem C#. Wierny użytkow-

nik kupionego w połowie lat osiemdziesiątych "kompute-

ra osobistego" ZX Spectrum 48k.

Kontakt z autorem: [email protected] 

Page 2: XNA - zarządzana platforma dla gier

5/17/2018 XNA - zarządzana platforma dla gier - slidepdf.com

http://slidepdf.com/reader/full/xna-zarzadzana-platforma-dla-gier 2/6

 

XNA – zarządzana platforma dla gier

49www.sdjournal.orgSoftware Developer’s Journal 12/2007

Listing 1. Pełen kod gry zawierający rozszerzenie klasy Game

że nierzadko programiści gubiąc się w ich gąszczu traci-

li z oczu pierwotny pomysł gry i te trudne do zdefiniowania

elementy, które wpływają na jej grywalność. Przez to publi-

kowanych jest wiele gier z nowoczesną, ładnie wyglądają-

cą grafiką, ale nieciekawych. XNA ma to zmienić w zasad-

niczy sposób. Dołączone do XNA klasy implementujące in-

terfejsy do bibliotek generujących grafikę oraz dźwięk ma-

 ją znakomicie ułatwić programowan ie tej technicznej sfe -

ry gier, a to pozwoli na skupienie się na tym, co najważniej-

sze, a więc na projektowaniu świata i logiki gry. Korzysta-

nie z udogodnień środowiska Visual C#, choćby podpowia-

danie i uzupełnianie kodu oraz dołączona pełna dokumen-tacja wraz z przykładami, i same zalety języka C# dają gwa-

rancje, że te obietnice Microsoft mogą mieć pokrycie w rze-

czywistości. Wykorzystanie zarządzanej platformy i nowo-

czesnego 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 czasa-

mi niebezpiecznego, nawet w doświadczonych rękach. Po-

twierdza to ilość błędów w grach, nawet tych komercyjnych.

W tej sytuacji wykorzystanie zabezpieczeń wpisanych w za-

rządzaną platformę i język C# jest przynajmniej godna roz-ważenia. Ponadto XNA GSE będzie wyposażona w dodatko-

we narzędzia, które mają wspomóc publikowanie gier. Naj-

częściej wspomnianym jest mechanizm weryfikowania wy-

korzystywanych przez gry plików, który ma usuwać z goto-

wego pakietu gry te pliki, które nie są przez nią w ykorzysty-

wane. A tych podobno jest zwykle całkiem sporo (Microsoft

podaje jako przykład swoją własną grę, która po wer yfikacji

znacznie „schudła”).

Architektura XNAPlatforma XNA podzielona jest na moduły. Może lepszym ter-

minem jest „warstwy”. Najbliżej sprzętu, na którym urucha-miana jest gra jest warstwa aplikacji. Odpowiada za inicjali-

zację 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 wspo-

maganym 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-

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 

Rysunek 1. Prezentacja finalnej wersji XNA

Texture2D;

  }

  }

...

   protected  override  void  Draw(GameTime gameTime)

  {

  graphics.GraphicsDevice.Clear(Color.CornowerBlue);

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

  }

 }

}

Czym jest XNA?

XNA to nowa platforma uruchomieniowa bazująca na dobrze znanej

nam wszystkim platformie .NET. Pozwala na uruchamianie nie byle ja-

kich aplikacji, bo korzystających z trójwymiarowej grafiki gier kompu-

terowych. Nieco upraszczając można powiedzieć, że z punktu widze-

nia użytkownika komputera XNA jest zoptymalizowaną pod gry rów-

noległą odmianą platformy .NET. Samej platformie, którą można bez-

płatnie pobrać ze strony http://msdn.microsoft.com/xna/ towarzyszą

także bezpłatne narzędzia do tworzenia gier. Taki zestaw jest sty-

mulatorem do natychmiastowego powstania i dynamicznego rozwo-

 ju społeczności programistów zainteresowanych nową platformą. I

dlatego prawie natychmiast powstały strony udostępniające porad-

niki, oferujące przykładowe kody i gotowe gry. Można zatem powie-

dzieć, ż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.

Page 3: XNA - zarządzana platforma dla gier

5/17/2018 XNA - zarządzana platforma dla gier - slidepdf.com

http://slidepdf.com/reader/full/xna-zarzadzana-platforma-dla-gier 3/6

 

50

Nowe

technologie

www.sdjournal.org Software Developer’s Journal 12/2007

Listing 2. Kod wyświetlający model z pliku

cza, że do wygenerowania każdej, nawet najbardziej prostej

sceny będziemy musieli przygotować program dla Vertex i Pi- 

 xel 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 po-

czątkującym programistom Microsoft przygotowało zbiór go-

towych programów zawarty w klasie BasicEect , który ofe-

ruje podstawowy tryb renderowania sceny z wykorzystaniem

tekstur oraz światła. Kolejna warstwa odpowiedzialna jest za

dźwięk. Zadaniem programisty-dźwiękowca jest przygotowa-

nie „paczek” efektów dźwiękowych, które platforma XNA po-

trafi obsługiwać. Może do tego wykorzystać aplikację Micro- 

soft Cross-Plat form 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 au-

dio. Rola programisty scalającego projekt polega w przypad-

ku 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 do-tyczące dźwięku – te informacje zawarte zostały już w pacz-

kach 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, ga-

mepad). XNA dysponuje też warstwą pomocniczą, która zaj-

muje się przekształceniami matematycznymi, które intensyw-

nie wykorzystywane są w grach i przy transformacjach trój-

wymiarowych scen. Dostępne są zatem typy implementujące

wektory trójwymiarowe, macierze, płaszczyzny wraz z meto-

dami odpowiedzialnymi za ich algebrę i przekształcenia. Cie-

kawie brzmi również zapowiedź dodania warstwy odpowie-dzialnej 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, mo-

głaby doprowadzić do poważnego przełomu w realizmie gier

komputerowych.

Przyszłość XNAMicrosoft deklaruje, że bezpłatna wersja XNA przeznaczo-

na 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 pro-

mocja profesjonalnej edycji planowanej na lato tego roku.Nie zmienia to jednak faktu, że XNA i XNA GSE są niezwy-

kle ciekawym pomysłem, który warty jest uważnej obserwa-

cji. Jest to technologia, która nadal jest w początkowej fa-

zie 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ą bar-

dzo 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 kry-

 je się tu jednak pewien haczyk. Po pierwsze każdy kto ze -

chce uruchomić przygotowany w XNA GSE kod na tej kon-soli 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-

namespace XNA3D

{

  public class Game1 : Microsoft.Xna.Framework.Game

 {

...

Model myModel;

  Vector3 cameraPosition = new Vector3(0.0f, 50.0f,

5000.0f);

   oat 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.CornowerBlue);

  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();

  }

 }

}

Co oznacza skrót XNA?

Pewnie Czytelnik zastanawia się dlaczego dotąd nie podaliśmy roz-

winię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.

Page 4: XNA - zarządzana platforma dla gier

5/17/2018 XNA - zarządzana platforma dla gier - slidepdf.com

http://slidepdf.com/reader/full/xna-zarzadzana-platforma-dla-gier 4/6

 

XNA – zarządzana platforma dla gier

51www.sdjournal.orgSoftware Developer’s Journal 12/2007

gie gra może być wgrana do konsoli tylko za pośrednictwem

komputera wyposażonego w Windows XP SP2. Użytkowni-

cy konsoli liczą, że z czasem Microsoft udostępni jakąś wi-

trynę 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.

Pierwszy kontakt z XNACzas 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 mechani-

zmó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 pro-

 jek towaniu gier dla XNA korzystamy z wszystk ich zalet śro -

dowiska programistycznego Microsoft. Oznacza to, że dys-

ponujemy możliwością uzupełniania kodu, która jest szcze-

gólnie użyteczna w przypadku nowopoznawanych bibliotek,

informacją o argumentach metod i dokumentacją. Ponad-

to projekt, który stworzyliśmy zawiera już wszystkie stan-

dardowe metody niezbędne przy tworzeniu gry korzystają-

cej z grafiki w XNA. Są one opatrzone wyczerpującymi ko-

mentarzami. W najprostszym przypadku zadaniem programi-

sty jest zatem jedynie wypełnienie tych metod kodem, który

określi działanie gry.

Metoda, która wykonywana jest jako pierwsza to Initia- 

lize. Odpowiada za inicjalizację stanu wykorzystywanych

obiektów oraz za wykonanie czynności wstępnych np. wczy-

tanie paczek z dźwiękami. Następnie, w celu dostarczenia

obiektów graficznych zostanie wykonana metoda LoadGra-  phicsContent , która odpowiada za wczytanie obiektów 2D

(np. tekstur) i 3D do pamięci. Oczywiście jest również meto-

da odpowiedzialna za usunięcie tych obiektów z UnloadGra- 

 phicsContent .

Przy prostych aplikacjach nie jest wykorzystywana przez

programistę, ponieważ platforma XNA, podobnie, jak platfor-

ma .NET jest zarządzana, a więc za usuwanie obiektów od-

powiedzialny 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 przygoto-

wać miejsce dla nowych danych potrzebnych do wygenero-wania kolejnej sceny.

Nasza aplikacja, jak każda gra, musi oczywiście reago-

wać na bodźce z zewnątrz. Ich obróbką zajmuje się meto-

da Update. Jej zadaniem jest uaktualnianie stanu obiektów i

przetwarzanie poleceń z zewnątrz. Tym samym to w tej me-

todzie zawarta będzie „logika” gry odpowiedzialną za prze-

twarzanie danych wejściowych (klawiatura, myszka, ga- 

mepad ) w dane wyjściowe, a więc w wyświetlany obraz, a

tym samym odpowiada za komunikacje z graczem. Polece-

nia 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 udo-

stę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ż studio-

wanie książek o nowej platformie. Jeden z takich projektów jest na-

wet dołączony do XNA Game Studio Express. Jest to Spacewar  Star- 

ter  Kit – projekt dwuwymiarowej gry dla dwóch graczy. Inny ciekawy

projekt o nazwie The Racing Game Starter Kit dostępny jest na stro-

nie 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 

Rysunek 3. Dokumentacja XNA Game Studio Express

Rysunek 2. Pocket- Jongg na platformie XNA

Page 5: XNA - zarządzana platforma dla gier

5/17/2018 XNA - zarządzana platforma dla gier - slidepdf.com

http://slidepdf.com/reader/full/xna-zarzadzana-platforma-dla-gier 5/6

 

52

Nowe

technologie

www.sdjournal.org Software Developer’s Journal 12/2007

ne w metodzie Update – obraz powinien być tworzony w od-

rębnej metodzie Draw , która na podstawie uaktualnionego

stanu obiektów przygotowuję scenę. Metoda ta może być

bardzo rozbudowana. Nawet pusty szkielet kodu utworzo-

ny przez kreator można skompilować. Spróbujmy. Wciśnij-

my 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 zasa-

dzie pusty, ale już na starcie „wyposażony” w trójwymiarową

przestrzeń. Zresztą już za chwilę umieścimy w tej przestrze-

ni pierwsze obiekty.

Grafika 2DPomimo, że dzisiejszych czasach już prawie wszyscy za-

pomnieli o grach z grafiką 2D, naszym zdaniem programi-

sta który wchodzi w obszar programowania gier, powinien

choćby „liznąć” generowanie płaskich obiektów, szczegól-

nie, że ich tworzenie jest łatwiejsze niż obsługa magnetowi-

du. Tego typu obiekty od dawien dawna (tj. od epoki Com-modore C64) nazywane są sprite’ami , co zwykle tłumaczy

się jako „duszki”.

Proces tworzenia dwuwymiarowego obiektu rozpoczy-

namy od wczytania tekstury jaką zostanie on pokryty. Słu-

ży do tego metoda Load obiektu typu ContentManager . Po-

zwala ona przypisać plik z teksturą do obiektu typu Texture- 

2D. Dzięki temu możemy swobodnie manipulować i wyświe-

tlać 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ą tek-

sturą, prostokąt, na k tórym ma być w yświetlony obiekt, pro-stokąt wyznaczający fragment tekstury, który ma być użyty

oraz tzw. kolor modulacji. W przypadku, gdy za kolor modu-

lacji użyta jest biel, kolory tekstury wyświetlane są bez mo-

dyfikacji.

Na płycie do łączonej do czasopisma znajduje się opisa-

na 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 Czyteln ika o tworzeniu gier 2D

niż kilka stron tekstu. Nawet teraz widać jednak, że tworze-

nie grafiki dwuwymiarowej w XNA jest łatwe i szybkie. Dzięki

temu możemy skupić się na pracy nad logiką gry.

Grafika 3DUznajmy, ż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 zaprezento-

wanie nowej technologii, ograniczymy się do bardzo skrom-

nego 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 jes t bardzo efektywna, cieka-

we 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 tworze-

nia sprite’ów . Musimy jednak dysponować plikiem modelu, tj.

plikiem zawierającym opis trójwymiarowego obiektu łączniez teksturami, który chcemy pokazać na scenie. Plik ten do-

dajemy do projektu (okno Solution Explorer ) jako Content Pi- 

 peline. Aby wczytać ów obiekt do pamięci po uruchomieniu

gry, należy użyć instancji klasy ContentManager , a dokład-

nie jej metody Load . Po tym możemy go po prostu wyświe-

tlić 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 Con- 

tent  Pipeline, cała odpowiedzialność za wczytanie i obsługę

tekstur modelu spoczywa na środowisku XNA. Takimi forma-

tami plików są na przykład .fbx, .x lub . png. Mniej przyjemnie

 jes t, jeżeli dysponujemy plikiem, który nie jes t 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 odpowied-

niego kodu, warto sprawdzić, czy nie został on już przygo-

towany 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 rozszerza-

 jące obsługę formatów graficznych przez Content Pipeline.

Wyświetlenie obiektu (w naszym przypadku statku kosmicz-

nego Rysunek 6), to jedno, a jego ruch to zupełnie osobna

sprawa. Listing 2. zawiera wyłącznie kod wyświetlający mo-

del z pliku. Jeżeli Czytelnik chce dowiedzieć się, w jaki spo -

sób nim poruszać, może przyjrzeć się projektowi umiesz-czonemu na CD dołączonym do czasopisma, w którym pro-

 jek t trójwymiarowej gry został rozszerzony o moż liwość kie -

rowania statkiem kosmicznym i efekty dźwiękowe. Możemy

 jednak zapewnić, że nie jes t to bardziej skomplikowane niż

Rysunek 6. Obiekt trójwymiarowy 

Rysunek 5. Wyświetlanie dwuwymiarowego obiektu z teksturą

Page 6: XNA - zarządzana platforma dla gier

5/17/2018 XNA - zarządzana platforma dla gier - slidepdf.com

http://slidepdf.com/reader/full/xna-zarzadzana-platforma-dla-gier 6/6

 

Software Developer’s Journal 12/2007

to, czym zajmowaliśmy się do tej pory. Dwa opisane powy-

żej proste projekty aplikacji XNA miały Czytelnika przeko-

nać, że programowanie gier w nowej platformie Microsoft

 jest łatwiejsze niż korzystając z Win32 i DirectX. Mam na-

dzieję, że nam to się udało i że polskie środowisko progra-

mistów doceni nową możliwość i amatorskie gry dla XNA za-

czną powstawać także w naszym kraju.

PodsumowanieXNA cały czas ewoluuje powiększając jednocześnie gro-

no swoich zwolenników. Niedawno Microsoft ogłosił, że do

nadchodzącego wydania XNA 2.0 doda obsługę komuni-

kacji 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 plat-

formie żadnego mechanizmu udostępniającego taką funk-

cjonalność. Kolejną niespodzianką jest rezygnacja z opłat

za narzędzia developerskie pozwalające na rozwijanie ko-du dla XNA w Visual Studio (także w pełnej wersji Professio-

nal). Wydaje się jasne, że łączy się to z zapowiadaną pro-

mocją XNA także jako narzędzia do profesjonalnego tworze-

nia 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 pew-

nie tylko naszym niespełnionym marzeniem. Mimo wszystko

mam nadzieję, że za parę lat będzie powstawać dużo cieka-

wych gier komputerowych bazujących właśnie na XNA Fra-

mework, 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ęp-

nianie środowiska oraz aplikacji dodatkowych, w tym deve-

loperskich, powoduje, że XNA zdobywa coraz większą po-

pularność. Dzięki swojej prostocie i dostępności jest to ide-

alne rozwiązanie dla studentów, uczelni i małych firm pro-

gramistycznych. Nie ponosząc żadnych nakładów finanso-

wych dostajemy zaawansowane środowisko oraz rozbudo-

waną 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łat-

nie pobrać gotowe komponenty, które rozszerzają możli-wości XNA i dodatkowo skracają czas poświęcany na przy-

gotowanie kodu aplikacji lub gry. Cała funkcjonalność XNA

przekłada się na oszczędność czasu oraz pieniędzy. n

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 po-radnikami 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