Oprogramować potwora
- Przemysław Gamdzyk,
- 29.04.2002
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.
Adrian Chmielarz, Game Designer, People Can Fly
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.
Janysz Grzyb, głowny programista Reality Pump Game Development Studios
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.
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.