Rozrywka programistów

XBox Microsoftu jest najbardziej zaawansowaną technicznie konsolą do gier, a jednocześnie ciekawą platformą dla programistów.

XBox Microsoftu jest najbardziej zaawansowaną technicznie konsolą do gier, a jednocześnie ciekawą platformą dla programistów.

Rozrywka programistów

Platforma <b>XBOX</b>

Konsola jest zbudowana na bazie architektury PC. Zawiera specjalną edycję Pentium III 733 MHz ze 128 KB pamięci podręcznej. Za grafikę odpowiada procesor GPU NVidia (nForce). Różnicą między architekturą XBox a PC jest brak oddzielnej pamięci na "karcie" graficznej - procesor i układy graficzne w konsoli mają dostęp do tego samego bloku RAM DDR. Konsola jest wyposażona w układ, który realizuje przestrzenne efekty dźwiękowe (MCPX) i pozwala na wyprowadzenie dźwięku w postaci cyfrowej do dekodera Dolby Digital. Zawiera też kartę sieciową Ethernet.

XBox ma dysk twardy, ale pełni on inną rolę niż w PC. Gry nie są uruchamiane z dysku, a wczytywane z DVD do pamięci. Na potrzeby konsoli opracowano specjalny system plików FATX. W rzeczywistości jest to system FAT uwolniony od zaszłości historycznych. Dysk 8 GB jest podzielony na sześć obszarów. Pierwszy 5 MB zawiera informacje konfiguracyjne, kolejne trzy obszary po 750 MB to pamięć podręczna gier. Następne 500 MB jest przeznaczone na pliki systemowe (interfejs użytkownika, część bibliotek graficznych, menu itp.). Ostatnie ok. 4 GB to dane użytkownika, np. zapisane informacje o grach.

Czym i jak programować?

Na potrzeby XBox Microsoft opracował pakiet dla programistów (XDK). Składa się on z zestawu narzędzi, specjalnej wersji konsoli i dokumentacji. Inaczej niż dla Windows, dokumentacja konsoli nie jest dostępna za darmo.

Praca z XDK niewiele różni się od pisania aplikacji dla Windows. API XBox jest bardzo zbliżone do pełnego API Win32. Konsola działa pod kontrolą specjalnego systemu operacyjnego - okrojonej wersji kernela Windows 2000 z dodatkowymi bibliotekami multimedialnymi. DirectX 8 jest zgodna niemal w 100% z wersją na PC. Ponadto dostępne są moduły, które korzystają ze specyficznych cech XBoxa (ułatwiają obsługę interfejsów wejścia/ wyjścia, upraszczają programowanie grafiki). Programista nie musi troszczyć się o np. różnorodne tryby graficzne, możliwości konkretnej karty graficznej czy dźwiękowej - wszystko zostało ujednolicone. Na XBox cały kod działa w tzw. ringu 0 - jak sterowniki w systemach Windows NT/2000/XP. Dzięki temu może działać szybciej, ale nie jest dostępna np. ochrona pamięci.

Programista posługuje się IDE Visual C++ 6.0. Jedyną zmianą w stosunku do programowania dla Windows jest konieczność śledzenia programu, który działa na innej maszynie (konsoli). W specjalny sposób trzeba także przenosić program na XBox. Jednak w wielu przypadkach analogiczna technika jest wykorzystywana również w Windows.

Warto wspomnieć o jednej z ciekawszych technik związanych z programowaniem grafiki na XBox. Układ GPU może obliczać tzw. shaders. Są to małe programy, pisane w specjalnym języku graficznym (przypominającym asembler), związane albo z pikselem, albo z obiektem geometrycznym - vertexem, który określa m.in. orientację na scenie trójwymiarowej.

Tak zwane Pixel Shaders pozwalają zmieniać kolor każdego z pikseli renderowanych w scenie. W ten sposób można tworzyć efekty związane z konkretnym pikselem, np. efekt bump mapping (tekstura pseudowypukła). Vertex Shader umożliwia wykonywanie niemal dowolnej operacji geometrycznej związanej np. ze sposobem modelowania oświetlenia czy transformacją obiektu.

Oba typy shaders są przetwarzane przez procesor graficzny GPU. Tym samym główny procesor jest odciążony. Pozostaje co prawda problem synchronizacji, jednak język shaders jest tak prosty, że można dokładnie policzyć, ile będzie trwało dane przekształcenie i odpowiednio uwzględnić to w głównym programie. Na marginesie warto podkreślić, że analogiczne możliwości ma już obecnie większość nowych kart graficznych dla PC.

Uniwersalne biblioteki

Problemem autorów gier jest przenoszenie istniejącego oprogramowania na nową platformę. Większość gier powstaje przy użyciu wyspecjalizowanych bibliotek, które zajmują się realizacją całego świata wirtualnego. Obecnie niemal każdy z producentów tzw. middleware czy motorów graficznych dla gier oferuje swoje produkty w wersjach dla Windows, XBox, PlayStation 2 i Nintendo Cube.

Na przykład firma Net-Immerse opracowała pakiet przeznaczony do tworzenia gier 3D czasu rzeczywistego. Dostarcza tak skonstruowaną bibliotekę obiektową, że programiści mogą albo korzystać z warstwy wysokiego poziomu, albo bezpośrednio komunikować się z systemem bazowym. Właśnie w tym tkwi problem - tak naprawdę producent gry, który chce ją wydać w wersjach na wszystkie popularne platformy albo opiera się na uniwersalnych bibliotekach (dostosowanych do "najsłabszej" platformy), albo tworzy kod, którego nie można w prosty sposób przenosić między konsolami.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200