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]
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.
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.
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
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ą
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