Oprogramować potwora

Trudności w zaprojektowaniu gier wynikają także z ich szczególnej specyfiki. "Trudno na papierze przewidzieć, czy gra będzie dobra, to znaczy, czy będzie się w nią - jak mówią gracze - fajnie grało. Cały czas trwa proces kreatywny. Projekt jest tylko drogowskazem, wiele rzeczy natomiast jest dopracowywanych dopiero wspólnym wysiłkiem całego zespołu" - twierdzi Adrian Chmielarz, game designer (nie chce, by nazywano go kierownikiem czy szefem projektu) z warszawskiej firmy People Can Fly.

Oprogramować potwora

Adrian Chmielarz, Game Designer, People Can Fly

Dokumentacji kodu często w ogóle się nie sporządza, ograniczając się jedynie do jego komentowania. "Staramy się jednak nie dopuszczać do zaniku jakiejkolwiek formalizacji - służyć ma temu np. możliwie maksymalne rozdzielanie osób wykonujących różne zadania: programistów i grafików" - mówi Paweł Kalinowski. Wówczas z konieczności ich sformalizowana interakcja może być formą takiej dokumentacji.

Jak saperzy

Nabywca zawsze może zrezygnować z gry - jest to przecież sfera rozrywki - natomiast z aplikacji użytkowej, która jest narzędziem pracy, nie bardzo. "Proszę wybaczyć takie dosadne porównanie, ale różnica między zwyczajną aplikacją a grą komputerową jest mniej więcej taka, jak pomiędzy żoną i prostytutką. Ta pierwsza ma swoje ograniczenia i wady, których jeśli nawet nie da się polubić, to można zaakceptować. Jest to związek na lata, który wymaga tolerancji i zrozumienia. Natomiast zakup gry komputerowej jest epizodem. Grę w większości przypadków kupuje się na chwilę. Klient albo jest zadowolony, albo zły, że to, na co wydał pieniądze, nie spełniło jego oczekiwań" - mówi Paweł Kalinowski. Gry nie mogą mieć tylu błędów co zwykły program użytkowy. Dotyczy to zwłaszcza gier przeznaczonych na konsole, gdzie nie ma możliwości późniejszej aktualizacji oprogramowania. Znajduje to oczywiście wyraz w procesie tworzenia kodu gry. Wszystkie znalezione błędy są bezlitośnie wytykane programistom. "Chodzi o to, by programiści wstydzili się, popełniając błędy przy kodowaniu" - dodaje Paweł Kalinowski.

Twórcy gier oburzają się, gdy zestawiając ich działalność z tym, co robi większość firm IT, używa się przymiotnika "poważne zastosowania" do określenia sfery biznesowej. Wskazują, że dobra gra to co najmniej kilkadziesiąt tysięcy linii kodu czy megabajtowe pliki skryptowe. "Pod względem wielkości niejedną aplikację przeznaczoną dla zakładu pracy mógłbym zawrzeć w projekcie gry online, z której ma korzystać kilkaset tysięcy graczy" - wyjaśnia Marek Wylon.

Oprogramować potwora

Janysz Grzyb, głowny programista Reality Pump Game Development Studios

Wszyscy podkreślają również, że lubią to co robią - tworzenie gier. "Zanim zająłem się grami, parę lat pisałem zwykłe aplikacje. Ale po jakimś czasie zaczyna się popadać w rutynę. Natomiast w grach zawsze pojawia się coś nowego, można realizować najbardziej szalone pomysły, cały czas trzeba poruszać się w obszarze bardzo różnorodnych tematów - od baz danych, poprzez graficzną wizualizację postaci, aż do sztucznej inteligencji" - mówi Marek Wylon. Jednocześnie programiści w firmach wytwarzających gry pracują często w ogromnym stresie z uwagi na spiętrzenia czasowe: normą są znaczne opóźnienia w realizacji projektów i związane z tym okresy ogromnego obciążenia pracowników. Trzeba to lubić. "Czasami zwyczajnie nie chce się nam wychodzić z pracy. Mój kolega pracujący w firmie wytwarzającej aplikacje biznesowe narzeka, że codziennie robi to samo, że na dobrą sprawę każdy swój dzień mógłby opisać komendą SQL-a: SELECT - OGOLNIE NUDA. Tymczasem nasza praca polega na nieustannym odkrywaniu nowych możliwości i ciągłym zdobywaniu wiedzy" - podkreśla Janusz Grzyb. Twórcy gier akcentują to, że robią rzeczy, które użytkowników mają cieszyć, mogą cieszyć i cieszą. "Samo tworzenie gier umożliwia budowanie własnego komputerowego świata, z jego założeniami, regułami i ograniczeniami" - mówi Marek Wyszyński z Infinite Dreams.

Istotny jest również jeszcze jeden czynnik. "Twórca dobrej gry zyskuje uznanie użytkowników. Dziedzina aplikacji biznesowych jest anonimowa, na ogół nazwiska poszczególnych osób czy pseudonimy grup programistów biorących udział w ich powstawaniu pozostają nieznane. W przypadku gier jest inaczej" - mówi Tomasz Pazdan z rzeszowskiej firmy LK Avalon. Do dobrego tonu należy bowiem dodanie do gry listy wszystkich zaangażowanych w jej powstanie osób - na wzór napisów końcowych w filmach.

"Jest to rynek naprawdę bardzo wymagający pod względem talentu. Najlepsi ludzie są rozrywani przez różne firmy, mogą dyktować warunki, a przede wszystkim decydować, nad jakimi grami chcą pracować" - mówi Adrian Chmielarz.

Standardy

Zdecydowanym faworytem wśród stosowanych narzędzi do kodowania gier jest środowisko Visual C++ (gry na PC) bądź GNU C++ (gry na konsole), wyposażone w bogate biblioteki pomocne w pisaniu gier. O tym powodzeniu zadecydowała przede wszystkim doskonała optymalizacja, jaka została wbudowana w Visual C++. Odchodzi się od samego asemblera, bowiem dobry kompilator wykona lepszą optymalizację niż najlepszy programista. Ma to oczywiście tę negatywną stronę, że baza programistów tworzących gry komputerowe przestała być ograniczona. Dawniej bardzo ceniono nielicznych specjalistów, potrafiących kodować w języku maszynowym.

Oczywiście, nikt nie koduje dzisiaj całej gry w C++, stosuje się specjalizowane narzędzia, wyposażone w interfejsy API. Dotyczy to na przykład tzw. strzelanek (gier akcji, typu Quake), gdzie na rynku dostępne są gotowe motory renderingu trójwymiarowego (tworzenie przestrzennej grafiki). Dany motor obudowuje się własną grafiką, osadza w scenariuszu tworzonej gry. Dostępne są także biblioteki zawierające modele obliczeniowe mechaniki (np. zawierające implementację matematycznych wzorów potrzebnych do realistycznej symulacji upadania przedmiotów czy realistycznej animacji poruszania się postaci - to w slangu "fizyka"). Wkrótce pojawią się pierwsze motory sztucznej inteligencji.

W niektórych grach, zwłaszcza tam, gdzie potrzebna jest rozbudowana logika przebiegu akcji (np. gry typu RPG), stosuje się specjalizowane języki skryptowe (jak LUA).

Na wyższym poziomie zarządzania do prowadzenia projektów poważnych gier (czy generalnie aplikacji multimedialnych) stosuje się specjalizowane oprogramowanie, sterujące przebiegiem całego projektu (narzędzia klasy DPM - Digital Production Management). Jest to najczęściej rozwiązanie alienbrain, niemieckiej firmy NXN Software AG (www.nxn-software.com), działające w architekturze klient/serwer. Integruje ono narzędzia administracyjne, zarządzanie wersjami, nadzorowanie pracy poszczególnych członków zespołu zarówno w obszarze grafiki, dźwięku, jak i kodu. Alienbrain nie jest jedynie narzędziem. Jest to również zestaw procedur organizacyjnych, które dość sztywno określają schemat prowadzenia projektu, np. kroki podejmowane przy bieżącej (codziennej) kontroli jakości. Oprogramowanie to jest drogie, dlatego w polskich firmach stosuje się najczęściej własne, prostsze rozwiązania.

Wiedzy o programowaniu gier należy szukać przede wszystkim w Internecie (serwisy: www.gamasutra.com, www.gamedev.net), jak również w pismach branżowych (GameDeveloper). Polscy twórcy gier komputerowych uczestniczą też w międzynarodowych konferencjach. Do takich należą przede wszystkim Game Developers Conference (GDC), organizowana co pół roku na przemian w Londynie i San Jose w Kalifornii, a także konferencja poświęcona grafice komputerowej - ACM/IEEE Siggraph.


TOP 200