XNA

Bevezetés

Általában

A Microsoft ezzel az új megoldásával a hobbi programozókat, tanulókat és a kisebb garázsfejlesztő/független játékfejlesztő csapatokat célozta meg, lehetőséget teremtve arra, hogy gyorsabban, egyszerűbben tudjunk játékokat fejleszteni a Microsoft Windows és Xbox360 platformjára. Az XNA Frameworkon alapuló Game Studio Express (továbbiakban GSE) egy segédeszközöket tartalmazó kiegészítés/csomag Visual C# 2008 Expresshez.
Az XNA későbbi verziói támogatták a Windows Phone 7 környezetre való fejlesztést valamint nem csak a C# nyelvben, de Visual Basicben is lehetett használni a keretrendszert.
2013 január 31.én támogatottsága megszűnt, így nem lehetséges a WP8 valamint WinRT felületekre való fejlesztés.
Az XNA-nak mégsem alkonyult le teljesen, vannak különböző projektek, melyek szellemiségét továbbvitték. Az egyik ilyen a mostanában egyre nagyobb teret hódító Mono Games kiegészítő Mono XNA. A másik az ANX névre hallgató projekt, mely azonban több, mint egy éve (2013 március óta) nem került frissitésre. Ha a projekt megélte volna felnőttkorát, eléggé hasznos eszköz válhatott volna belőle, a fejlesztők ígéretei szerint támogatta volna a DirectX 11 illetve későbbi verzióit. Elért eredményeik között szerepel, hogy egy az ANX-ben fejlesztett Windows Phone 8-as alkalmazást elfogadtak a Store-on.

Mire van szükségünk?

A fejlesztéshez szükségünk van egy Windows XP vagy fejlettebb operációs rendszerre., a Microsoft Visual C# 2008 Express Edition-re, az XNA GSE-re, ami tartalmazza a különböző segédprogramokat is (pl. XACT), a legfrissebb DirectX környezetre, programozási és matematikai tudásunkra... Ha tesztelni is szeretnénk elkészült játékunkat, akkor egy minimum Shader Model 1.1(ajánlott Shader Model 2.0) képességekkel felvértezett videókártyára is szükségünk lesz. Ha sikeres volt a telepítés, akkor a VC#->New Projectnél megtaláljuk az GSE-hez tartozó templateket.
XNA-t bármely Visual Studio segítségével használhatunk, azonban egyedül csak a 2010-es verzió tartalmazza alapértelmezettként. A fenti követelmények telepítését követően azonban a későbbi fejlesztőeszközökben (2012, 2013) is használhatjuk, bár nem feltétlenül jelenik meg a Microsoft.XNA.Framework dll, de ezt akár külső referálással is behelyezhetjük a projektünkbe.
Fejlesztés Xbox 360-ra: ha megfelelően írjuk meg a kódot, akkor csak át kell állítani, hogy Xbox 360 legyen a kimenet, és kész. Mellékesen ez az egyik fő céljuk a fejlesztőknek. Mert hogy ez a Game Studio Express / XNA ilyet is tud ;) Ja és a fejlesztők a Pocket PC-k irányába is érdeklődnek, így még az is lehet, hogy hamarosan vetélytársra lel az OpenGL ES. Bár ez valószínűleg nem mostanában lesz...

New project

A sebességről: Sokan azt hozzák fel a .Net, és az összes Managed dolog ellen, hogy sokkal lassabb mint a natív változat. Na most, ezt már az XNA FAQ is tisztázza: az IL „just-in-time (JIT)” átfordítja a kódot natív kóddá. Na de ez még nem minden! Ezen felül még optimalizálja is a kódot a géphez (PC vagy Xbox 360).

Miben segít az XNA?

De hogy mégis miben segít nekünk ez az XNA? Az alap Windows-os XNA project az XNA Framework namespace-ében található Game class-t használja. Kb. ez hivatott reprezentálni azt, amit a Microsoft is hírdet: game development to the mass, azaz játékfejlesztés a tömegeknek. A project létrehozásakor minden fontosabb eseményt beköt a Game class-hoz: Inicializál, létrehoz egy függvényt, ahol betölthetjük a kívánt adatainkat (textúra, modellek, stb.), ennek felszabadítását kezelő függvényt, valamint magát a játékot képző rajzoló (Draw) és frissítő (Update) függvényeket. Ezek után a tömegeknek már „csak” azt kell beállítaniuk a rajzoló függvényben, hogy mit is rajzoljon ki, és már van is egy szép háromszögünk. Ha pedig forgatni is szeretnénk, akkor az adatait az Update függvényben frissítjük. Igazából ezt megtehetnénk a Draw függvényben is, de optimalizáció és jobb átláthatóság miatt érdemesebb így, plusz ez már alapból rendelkezésünkre is áll, minek csinálnánk másik frissítő függvényt. XNA másik nagy előnye, hogy akár csak a DirectX, ez sem csak és kizárólag a 3D-re koncentrál. C#-nak nagyon jó hálózati moduljai vannak (.Net), így ez nem képezi külön részét az XNA-nak, de ezen kívül van 3D, 2D (sprite osztállyal), inputkezelés (managed XINPUT), hangkezelés (XACT), média file-ok (képek, modellek) betöltése, valamint ezt saját betöltőkkel is bővíthetjük (Content Pipeline). Viszont sajnos még nem támogatja az Xbox Live technológiát, de a fejlesztők már ezen is dolgoznak! Ezen felül még számos segítő osztályt tartalmaz az XNA.

Könnyű, de tudni kell

Fontos még azt is tisztázni, hogy bár a Microsoft bőszen hirdette, hogy ez direkt a tömegeknek készül, hogy minél többen gyártsanak saját játékot, azért ez még így sem olyan egyszerű. Alap, hogy C# nyelvvel azért jóban kell lenni, nem árt foglalkozni vele 1-2 (de inkább több) hónapot mielőtt komolyabb projectbe kezdünk XNA-val (persze ez az 1-2 hónap is lehet XNA gyakorlás). Valamint rövid időn belül a HLSL nyelvet is érdemes elsajátítani hogy saját shader-eket tudjunk írni. E nélkül is használható az XNA, de a beépített BasicEffect elég szegényes testreszabást nyújt HLSL-es Effect-hez képest. Alapok elsajátításához viszont bőven elég BasicEffect is.

Előnyök

Felhasználói minimum követelmények:

XNA framework redist és DirectX redist (csökkentett, nem fejlesztéshez való, hanem felhasználóknak szánt) telepítő megtalálható az XNA Game Studio Express telepítése után itt: telepítés helye (pl. C:Program FilesMicrosoft XNA) + XNA Game Studio Express + v1.0 + Redist

Fejlesztéshez minimum igények: