Dokładnie tydzień temu, w malowniczym miasteczku Redmond, miejsce miała niewielka rewolucja. Po latach powolnego odsuwania się ze stanowiska szefa a później twarzy korporacji, na emeryturkę odszedł Wujo Bill. Jego miejsce przy sterze na dobre zajął Steve Ballmer i choć ciężko sobie wyobrazić by w najbliższym czasie przestano mówić „Firma Billa G” to jednak wydarzenie to wystarczyło by zmusić mnie do napisania felietonu związanego z molochem ze stanu Waszyngton.

Przez lata swojego istnienia Microsoft miał wiele różnych pomysłów. Większość z nich okazywała się niewypałami, jak choćby TabletPC czy Zune (a może ten się jeszcze rozkręci za sprawą gier?). Inne, te które odniosły sukces, często były najzwyczajniej od kogoś ściągnięte. Niemniej jednego Microsoftowi odmówić ciężko – mimo ewidentnego regresu jakościowego jakim jest Vista (jakoś nie mogę przestać łączyć tego faktu z przejęciem stanowiska CEO przez Steve’a „Człowieka-Małpę” Ballmera…) z pewnością wielokrotnie udowadniali, że potrafią uczyć się na błędach. Widać to jak na dłoni choćby gdy porównamy sytuację pierwszego Xboksa, który majaczył gdzieś w oddali rankingów, daleko za pędzącą PS2 z Xboksem 360, czyli maszynką… może nie do zarabiania pieniędzy, ale na pewno do zdobywania kontroli nad rynkiem – i to mimo nie najlepszych skojarzeń z kolorem czerwonym. Swego czasu John Carmack, wielki przeciwnik DirectX, stwierdził, że implementacja DX9 dla Xboksa jest naprawdę niezła, co dowodzi, że „Microsoft najpierw wypuszcza kiepski produkt po czym dopracowuje go sugerując się radami z zewnątrz i podpatrując konkurencję”. Ale, co ciekawe, ostatnio udało im się stworzyć rzecz, którą nawet ja, zatwardziały linuksowiec i absolutny wróg rozwiązań spod szyldu Małomiękkich jestem zafascynowany i uważam, za udaną. Mowa o XNA, czymś, co jest teraz na ustach wielu developerów, i to bynajmniej nie dlatego, że jego nazwa jest najgłupszym akronimem rekursywnym jaki da się wymyślić. Pytanie brzmi – co to jest?

Odpowiedź na to pytanie nie jest taka prosta. Otóż zacznijmy może od tego, że XNA nie jest pod żadnym względem silnikiem renderującym, silnikiem gier, middleware’em ani niczym w tym guście. Umożliwia nam natomiast dość proste (a nawet jeszcze prostsze do czego za moment dojdę) stworzenie takowego ułatwiając to zadanie tak bardzo jak to możliwe, a na dodatek, dając możliwość bezproblemowego (w teorii) wypuszczenia gry na Xboksa 360 a niedługo również Zune oraz, uwaga uwaga, Linuksa (więcej o tym później).

XNA działa w oparciu o kolejny hit Microsoftu, platformę .Net (pod Linuksem zwaną Mono) w tandemie z językiem C#. Wyewoluował zaś z czegoś, co nazywało się Managed DirectX (MDX), czyli najzwyczajniej w świecie DirectX działający właśnie na .Necie (Managed oznacza program działający w wirtualnym środowisku, w tym wypadku – .Net Framework). Co to wszystko oznacza? Ano tyle, że XNA można określić jako DirectX wyższego poziomu, taką warstwę pośrednią pomiędzy faktycznym DX a tym co tworzy programista gry.

Jeśli uznać, że pisanie gier startując od czystego DirectX (lub OpenGL z dodatkami jak kto woli) jest pisaniem od zera, zaś używanie gotowego silnika, takiego jak CrystalSpace, UE3 czy Source to pisanie od 3 to używanie XNA jest pisaniem od 1, a czasem od 1.5. Myślę, że to dość obrazowe porównanie dość dobrze oddaje całą sytuację. No tak, ale o co cały razie ten hałas?

Przede wszystkim właśnie o .Net, który, wyposażony w biblioteki XNA, umożliwia przenoszenie kodu bez jego zmieniania pomiędzy Windowsem, Xboksem oraz, w przyszłości, kolejnymi platformami. Dodatkowo XNA to coś więcej – jest to bowiem również rozwiązanie, które skraca konieczną do napisania ilość kodu dostarczając „prefabrykowane” mechanizmy robiące najbardziej podstawowe rzeczy. A to nie koniec, swoje XNA możemy dodatkowo „dopakować” tak zwanymi „komponentami”.

Komponenty to konkretne rozwiązania funkcjonalności takich jak animacja, detekcja kolizji, fizyka, a nawet AI. Wiele takich komponentów jest dostępnych na stronie codeplex.com, a wszystkie mają określone kryteria, które muszą spełniać, dzięki czemu nie powinniśmy się martwić o ich jakość (choć jak to jest z kryteriami Microsoftu to chyba wiemy wszyscy, vide Vista Capable).

Co ciekawe, na XNA powstają również kompletne, komercyjne (oraz darmowe w formie komponentów) silniki graficzne, więc możemy pisać od 3 nadal korzystając z zalet XNA. Z moim zdaniem ciekawszych wymienię choćby TorqueX firmy Garage Games oraz Blade3D od Digini. Ten pierwszy jest interesujący głównie dlatego, że stoją za nim sprawdzeni ludzie – wcześniej stworzyli jeden z najpopularniejszych tanich komercyjnych silników pod tytułem Torque. Wspominam o nim również dlatego, że jego wersję binarną (bez dostępu do kodu źródłowego silnika) można mieć… za darmo i to nawet do zastosowań komercyjnych. Bardzo przyjemna wiadomość moim zdaniem. Blade3D jest natomiast interesujący już sam w sobie, ponieważ jego twórcy utrzymują, iż jest to narzędzie w pełni WYSIWYG (what you see is what you get, w razie gdyby ktoś nie wiedział co znaczy skrót). Czyli wszystko robimy graficznie – mapy z klocków (które możemy sobie przygotować w 3DStudio czy Maya), mechanikę ustawiamy za pomocą graficznie przedstawionych węzłów itd. Niektórzy twierdzą, że silniki, w których faktycznie nie trzeba tykać programowania są jak Yeti, ale kto wie… Gdyby ktoś chciał się zainteresować tym rozwiązaniem to tu już niestety musi sięgnąć do portfela – jeśli znajdzie w nim co najmniej $14.95 miesięcznie (za jedno stanowisko pracy), może się zacząć zastanawiać.

Płacić trzeba zresztą nie tylko za niektóre, oparte na XNA silniki, ale również za możliwość publikacji swoich dzieł na Xbox Live. Konieczne jest posiadanie konta na XNA Creators Club, a abonament za taką przyjemność wynosi $99 rocznie. Czy to dużo? Moim zdaniem w sam raz, szczególnie, że na Windows publikujemy oczywiście za darmo.

Aha, miałem jeszcze wspomnieć o Linuksie. Otóż projekt Mono, odpowiedzialny za przeniesienie technologii .Net na pingwini grunt pracuje obecnie nad Mono.XNA (opartym oczywiście o OpenGL), czyli właśnie linuksową wersją tejże platformy. Co prawda prace posuwają się moim zdaniem zdecydowanie zbyt wolno (zresztą dokładnie tak samo jak w wypadku linuksowej wtyczki Silverlight) jednak kto wie, może uda się je zakończyć zanim XNA stanie się standardem w branży, hehe.

Podsumowując stwierdzam, ze XNA to naprawdę ciekawy pomysł ze strony MS. Danie społeczności szansy na tworzenie gier, w które później można grać na Xboksie jest naprawdę godne pochwały. Ostatecznie żyjemy w czasach, kiedy to właśnie społeczności są najważniejsze i to one tworzą i katalogują internet, piszą komentarze itd. Dodatkowo pomysł z komponentami, pozwalającymi na recycling kodu, może w niedługim czasie sprawić, że tworzenie gier na tej technologii będzie stawało się coraz prostsze i szybsze dając jednocześnie coraz większe możliwości. Przypuszczam, że może się ona okazać w niedalekiej przyszłości tym, czym obecnie jest DirectX – fakt, na dzień dzisiejszy jest kierowana głównie do hobbystów, jednak kto wie, czy nie zaczną z niej masowo korzystać również profesjonalne studia. Zawsze jest to jakaś oszczędność czasu, a jak wiadomo – czas to pieniądz.

[Głosów:0    Średnia:0/5]

4 KOMENTARZE

  1. Sam bawiłem się XNA tylko chwilę i bardzo mi się podobało, ale nie słyszałem jeszcze, żeby jakaś większa firma robiła grę w tym środowisku.

  2. Ja dla XNA widzę śwetną niszę w produkcjach bazujących na licencjach filmowych, gdzie bardzo liczy się szybkość wydania gry. Dwuletni w nalepszym wypadku cykl produkcyjny gier nie-casualowych utrudnia zgranie premiery filmu i gry na tej samej licencji. A takie XNA przyśpieszyłoby wydanie gry i dodatkowo załatwia nam wieloplatformowość.

  3. Przypuszczam że jeśli w ogóle XNA będzie popularne to wśród developerów zajmujących się małymi projektami. Duże firmy będą wolały pisać silniki od podstaw w normalnym C++. Taki silnik można lepiej zoptymalizować niż coś napisanego w .net i pochodnych. Zresztą tylko te naprawdę nowe studia piszą silniki od prawdziwych podstaw – większość ma solidne podstawy ze swoich wcześniejszych autorskich lub zakupionych silników. Skąd się wziął taki source ? – jego podstawą był silnik half-life a tego mocno modyfikowany quake 2 . Inna sprawą jest to że silniki takie jak UE mają swoje własne mechanizmy ułatwiające tworzenie gier – unreal script czy kismet (czy jak to się tam zwie :D). Choć trzeba przyznać że pomysł DirectX dla .net to coś ciekawego .

  4. XNA przypomina AMOS’a z Amigi czy też jego pierwowzór z AtariST pod nazwą STOS. Fantastyczna sprawa. Już nie trzeba 3 screenów kodu w C# aby włączyć antialiasing, wystarczą 2 linijki. Nie trzeba pisać importerów ze znanych nam formatów 3D, aby podczytać content, wystarczy wczytać pliki FBX lub Collada, tak samo jak zbudowane wcześniej shadery. Generalnie XNA jest imo super pomysłem. Nie jest to oczywiście żaden middleware, to raczej wielka biblioteka klas i metod bardzo wysokiego poziomu. Dzięki temu właśnie możemy się skupić na tym co tworzymy, a nie na tym w jaki sposób to tworzyć. Co do wydajności to należy zastanowić się wcześniej, czy te wszystkie hiendowe silniki dzisiejszych czasów są naprawdę takie ultra wydajne. Czy naprawdę ich koderzy wyciskają w procesie optymalizacji każdy takt zegara czy GPU? Nie jestem co do tego jakoś wielce przekonany. Także wydajność należy traktować z lekkim przymrużeniem oka. Generalnie XNA jest więc fantastycznym pomysłem i z całą pewnością przyczyni się do powstania wielu niezależnych produkcji, a co za tym idzie wielu ludzi nauczy się w oparciu o niego kodować i konstruować gry. Taki stan rzeczy może jedynie cieszyć.

ZOSTAW ODPOWIEDŹ

Please enter your comment!
Please enter your name here