JÁTÉKPROGRAMOK FEJLESZTÉSE XNA GAME STUDIO jegyzet. Készítette: Pellek Krisztián krisztian.pellek@windowslive.com 2010.
Előszó Először is, köszönöm mindenkinek az építő jellegű kritikákat a tutorial első verziójához. Igyekeztem kibővíteni a jelenlegi verziót, figyelni azokra a hiányosságokra, amit a legtöbben megemlítettek, illetve a hibákat a teljesség hiánya nélkül javítani. A jegyzetkészítés legelején valahogy úgy képzeltem el ezt az egész dolgot, hogy fel kellene pörgetni a hazai hobbi játékfejlesztést. Azért, mert Magyarországon nincs Live, PS network, illetve igazából semmi komoly játékos hálózat, mivel a multik számára nem vagyunk piac, attól függetlenül úgy gondolom, hogy ők még lehetnek számunkra céltábla és kiaknázható lehetőség. Azaz egy újabb lehetőség arra, hogy megmutassuk, hogy a magyar programozók világszínvonalú programokat képesek alkotni, és (gyakran) technológiailag és tudásban fejlettebbek nyugati társaiknál. Személy szerint én is egyetemre járok még, tudom milyen az, amikor nincs valakinek a zsebében feleslegesen (több mint) 20.000 Ft-ja egy-két olyan könyvre, aminek csillogó-villogó dolgok vannak az előlapján, és a tartalma ekvivalens nagyjából egy tekercs WC-papírral, fényes lapokra bontva. Ezek a könyvek sokszor azt hangoztatják, hogy 24 óra alatt megtanulsz egy nyelvet Nem. Nem fogod megtanulni 24 óra alatt. Talán körülbelül egy év alatt átlagosan el tud jutni az ember arra a szintre, hogy rendesen tudjon valamit például egy adott programozási nyelvet használni, de semmiképpen sem lesz elegendő hozzá 24 óra. Nem fogom azt mondani, hogy könnyű dolog lesz, de azért lettél programozó, hogy jobb legyél másoknál. Jobban kódolj, jobb dolgokat találj ki. Itt a lehetőség. Kezdj el játékot fejleszteni, kezdj el foglalkozni az új technológiákkal. Legyél naprakész, és váltsd meg a világot. Egy olyan világot, amit te alkotsz. Valaki egyszer azt mondta: Programozó vagyok. Ez azt jelenti, hogy minden, amit leírok, megtörténik. Ezt ne felejtsd el. Persze ne végtelen ciklus legyen Pellek Krisztián
1. fejezet Játékot fejleszteni nagyon jó szórakozás, de nem egyszerű feladat. A kezdő lépéseket elég nehéz elkezdeni (ez a jellemzőbb), és használható leírásokból is elég kevés akad. Magyar nyelven ez hatványozottan igaz, ezért is született ez az irat. Megpróbálom ennek az jegyzetnek (könyvnek túlzás volna nevezni ) minden részében egy-egy probléma minél pontosabb leírását közölni, közérthetően. Az anyaghoz tartozik egy feladatmegoldó tutorial példaprogramokkal és egy önállóan feldolgozható feladatgyűjtemény is. Ezen anyagok heti rendszerességgel fognak megjelenni, összhangban az ELTE Játékprogramok készítése című speciálkollégiumával, amit személyesen tartok az egyetemen. Erre a speciálkollégiumra természetesen szívesen látok minden kedves érdeklődőt, ha esetlegesen valaki élőben is kíváncsi az előadásokra. Kezdjünk is bele! Rengeteg eszköz létezik manapság, amivel nagyszerű játékokat lehet készíteni, ellenben mi konkrétan az XNA Framework-kel fogunk foglalkozni. Ennek az oka, hogy a cél egy viszonylag egyszerűen kezelhető, de mégis sokoldalú fejlesztőeszköz keresése volt. Az XNA Game Studio, egy Cross-platform fejlesztőkörnyezet, aminek a segítségével olyan játékokat készíthetünk el otthon, amelyekre eddig nagyrészt csak a kisebb-nagyobb fejlesztőcégek voltak képesek. Biztosan mindenkinek eszébe jutott, aki programozott már, hogy milyen jó lenne összedobni például egy régi játéknak az új remake -jét, illetve biztosan sokan szerettek volna mindig is játékfejlesztők lenni, ám valamiért nem léptek erre az útra, mert esetleg túl sok időt, energiát vagy éppen túl nagy tudást igényelt. Lehet egyedül is játékot fejleszteni, viszont a fennakadások elkerülése végett jobb egy (laza) közösség, mert sok esetben jobb, ha van kihez fordulni a kérdéseiddel. Egy ilyen közösségre példa az
XNA Creators Club, aminek a magyar változataként tekinthetjük a DevPortal.hu szakmai közösségét. Négy nagyon fontos szempontot fogalmaztak meg a közösségi játékfejlesztéssel kapcsolatban: 1. bárki fejleszthet játékot, akinek van egy jó ötlete 2. a kész játékokat könnyen megoszthatjuk egymással 3. lehet őket értékelni 4. eladhatod, ha annyira jó Az XNA Framework a.net Framework része, nagyon egyszerűen használható és mégis nagyon hatékony fejlesztőeszköz. A recept egyszerű: Fejlesszünk játékot! Nem érdekel senkit, miért bonyolult konzolra fejleszteni. Legyen olyan, mint a.net, és lehetőleg problémamentes a hasonló megoldásokkal szemben. Ugyan az a kód fusson mindenhol. PONT. Ne kelljen mindenféle segédprogramot irkálnunk azért, hogy össze dobjunk egy Super Mariot, vagy egy gyors hálózati játékot. A managelt kód használatával sokkal könnyebb a fejlesztés. Támogatott platformok: PC Xbox 360 Zune (csak 2D támogatás) Zune HD (3D támogatás is van!) Megjegyzés: ahol csak simán maga a mint Zune szó szerepel, az első és a második generációt jelenti, a Zune HD pedig a harmadik generációt. Sajnos itthon egyik sem kapható
Rendszerkövetelmények: Software: Visual Studio 2008 Express Edition Visual Studio 2008 Standard Edition Visual Studio 2008 Professional Edition Visual Studio 2008 Team Edition Támogatott operációs rendszerek: Windows XP Professional / Tablet / Media Center [Edition] Windows Server 2003 R2 Windows Vista Windows 7 Ezek közül mindegyiken mehet a fejlesztés, ám hivatalosan a Windows Server 2003 nem támogatott operációs rendszer (de valójában működik rajta az XNA Framework). A Windows XP esetén minimum SP2, vagy újabb javítócsomag szükséges. A 64bites rendszerek esetében felejtsük el a Windows XP-t ebben az esetben, ha jót akarunk magunknak. Személy szerint én a Windows 7 használatát javaslom. Hardware: minimum: ajánlott: shader model 1.1 shader model 3.0 A legmagasabb shader model verzió, amit az XNA támogat, a 3.0. Ennek az oka, hogy az Xbox 360-ban található videokártya is ezt tudja, és a kompatibilitás miatt maradt meg ez a korlátozás.
A legtöbb funkció használatához szerintem a 2.0 is elég, de már szinte mindenki rendelkezik olyan videokártyával, ami támogatja ezt a shader model verziót. Ha mégsem, akkor csak egy nagyon minimális beruházást jelent. DirectX Runtime telepítése A telepítés lépéseit értelemszerűen végig tudja csinálni mindenki. http://www.microsoft.com/downloads/details.aspx?familyid=2da43d38- db71-4c1b-bc6a-9b6652cd92a3&displaylang=en A Visual Studio és az XNA Game Studio telepítése Keressük meg egyetemünk MSDNAA oldalát, és innen szedjük le azt a Visual Studio-t és XNA Framework verziót, amire szükségünk van. pl: http://msdn63.e-academy.com/ Minden olyan egyetemi hallgató számára elérhető az MSDNAA program, aki informatikát tanul. Ha nem tudsz belépni az egyetemed MSDNAA oldalára, keresd az egyetemeden található Microsoft Student Partnert. Abban az esetben, ha nem tudod ki az illető, írj nekem egy e-mailt és segítek kideríteni. Ha valaki nem ilyen szakra jár, akkor neki a legjobb választás a Visual Studio Express, ami mindenki számára ingyenesen elérhető. Ezzel a verzióval fejlesztett programok minden korlátozás nélkül értékesíthetők, tehát nem okoz problémát az sem, ha valaki kereskedelmi céllal szeretne játékot fejleszteni. Az akadémiai licence (MSDNAA) oktatási célú használatot tesz lehetővé. /* ha valaki nem rendelkezik msdnaa hozzáféréssel, innen tudja letölteni: XNA Game Studio 3.1 http://www.microsoft.com/downloads/details.aspx?familyid=7d70d6ed- 1EDD-4852-9883-9A33C0AD8FEE&displaylang=en
(a 3.1 abban tér el a 3.0-tól, hogy már videókat is tudunk importálni) */ Tipp: Ha nagyon gyenge a géped a fejlesztéshez, akkor jobb választás lehet egy Xbox 360 konzol, mivel lassan egy közepes videokártya áráért megkapható. A különböző verziójú konzolok csak a winchester méretében és a konzol színében térnek el egymástól. Ezt azért írom le, mert a legolcsóbb konzol is tökéletesen arra alkalmas mint a legdrágább. Különbség nincs. A tutorialban szereplő anyagok Visual Studio 2008 Professional Edition alatt készültek. Az itt szereplő képek ne tévesszenek meg senkit, teljesen mindegy, hogy a 3.0-s vagy a 3.1-es verziót telepítjük, a két verzió közti különbség csak a video támogatás meglétében van. Az összes beállítás egyébként pontosan ugyanúgy néz ki. Vágjunk bele! Ha Zune-ra vagy Xbox 360-ra szeretnénk fejleszteni, akkor ki kell engednünk a tűzfalon a Game Studio-t, amit alapesetben a telepítő elvégez helyettünk.
Azért, hogy elkerüld a későbbi kellemetlenségeket, az alább szerepelő listában megtalálod azokat a portokat, amelyeket ki kell kiengedned a tűzfalon ahhoz, hogy minden szépen működjön. Ellenőrizzük le még egyszer, hogy mindent feltelepítettünk-e, ami a fejlesztéshez szükséges. Visual Studio XNA Game Studio DirectX Runtime
A megfelelő videokártya driverek Az Xbox / Zune csatlakoztatva van a hálózatra ( ha van ) Fontos: ha valaki Intel grafikus lassítót használ, akkor ne csodálkozzon nagyon azon, ha textúrahibákkal, vagy bármilyen más váratlan hibajelenséggel találkozik. A probléma oka az, hogy az Intel programozói nem tudnak drivert fejleszteni, a mérnökei pedig nem tudnak videokártyát tervezni, ezért javasolt videokártya vásárlása. Xbox,illetve Zune párosítása Az Xbox konzolt a device centerben tudunk párosítani. Ha megnyitunk egy új Windows game projectet, alapból nem fog megjelenni a device center gombja, csak ha létrehozunk egy Xbox vagy Zune példányt a projectünkből. Akár több eszközt is hozzáadhatunk, ilyenkor mindig ki kell választani azt, amire fordítani szeretnénk. Fontos: Ha nem PC-re fejlesztünk, akkor mindenképp kell egy Live ID. Sajnos Magyarországon a Live jelenleg nem elérhető. Ezt a problémát úgy tudjuk áthidalni, hogy egy másik országba regisztráljuk be az azonosítónkat, mintha ott laknánk. Ennek a hátrányai közé tartozik, hogy az adott nyelvűre fog változni a menü, illetve az ott hivatalos pénznemben tudunk fizetni a szolgáltatások használatáért.
A konzol neve mindegy, azt írunk be lényegében, amit akarunk. Ez csak arra szolgál, hogy el tudjuk dönteni, melyik gépet adtuk hozzá.
A Connection Key-t az Xbox generálja, ezt onnan kell beírnunk a megfelelő szövegmezőbe, és készen is vagyunk! Ez a következőképpen néz ki. (Nehogy ezt a kódot írd be! )
Előnyök a konkurens megoldásokkal szemben: A legtöbb gyártó, mivel a különböző konzolokat veszteségesen állítja elő, ezért elég komoly összegekhez szokta kötni a fejlesztést is. Azaz aki be akar törni a piacra, annak bizony kemény összegeket kell letennie az asztalra, és általában elég kevés támogatást kap hozzá. A konkurens megoldásoknál gyakran egy külső hardware is szükséges a fejlesztéshez, ami feleslegesen bonyolítja és nehezíti a fejlesztést, aminek hiányában vagy nem kapunk teljes körű tesztelési lehetőségeket, vagy egyáltalán nem tudunk fejlesztést végezni. A PlayStation 3 Reference Tool esetében az ár 950,000 Japánban, $10,250 Észak-Amerikában, és 7,500 Európában. Ezeknek az eszközöknek a célközönsége a profi játék stúdiók. Az XNA célközönsége teljesen más, a hobbifejlesztőket és a játékosokat célozza meg. Pontosan ezért PC-re teljesen ingyenes! Az Xbox és Zune konzolokra oktatási céllal ingyenes (tehát mindenki kérhet MSDNAA programból egy prepaid kódot, amivel 1 éves trial előfizetést kap) egyébként évente 99$ az előfizetés. Az ingyenes kóddal persze eladni nem tudunk programokat, de tanulásra és tesztelésre kiváló. A 99$ persze nem csak arra jogosít fel minket, hogy használjuk a szolgáltatást, hanem lehetőséget biztosít a játékaink ingyenes publikálására és eladására, a Microsoft Xbox Live szolgáltatásán keresztül. Egészen pontosan a bevétel 70%-a jut a fejlesztő kezébe, amivel a cél a hobbifejlesztők és hallgatók ösztönzése. Egy nagyon fontos célkitűzés: Végre bárki fejleszthet játékot, aki érez magában kellő bátorságot, és a programozói tudása is adott ehhez. Ez azért fontos, mert a nagy csapatok megjelenésével eltűntek a kis hobbifejlesztők a köztudatból. Mióta megjelent az XNA, a Dream Build Play sikere is bizonyítja, hogy nem csak sokmilliós költségvetéssel rendelkező csapat készíthet jó játékot.
A másik helyszín, ahol lehet és ajánlott is versenyezni, mert rengeteg pénzt lehet nyerni egy jó játékkal, az az Imagine Cup. Ami a Microsoft technológiai versenye diákok számára. www.imaginecup.com Ha valakinek bővebb információra van szüksége valamivel kapcsolatban, nyugodtan írjon. Igyekszem minél hamarabb válaszolni. Mindenkinek jó fejlesztést kívánok! Pellek Krisztián krisztian.pellek@windowslive.com Fontos linkek: xbox.elte.hu devportal.hu