Programista gier komputerowych

programista tworzący gry komputerowe

Programista gier komputerowych – inżynier oprogramowania tworzący gry komputerowe lub podobne programy.

HistoriaEdytuj

W początkach gier komputerowych, programista gier był jednocześnie projektantem oraz artystą. Było to spowodowane małą ilością specjalistów z dziedziny tworzenia gier oraz prostą konstrukcją ówczesnych komputerów dzięki czemu gry od samego początku do końca mogły być tworzone przez pojedyncze osoby. Gry wtedy były dość proste, a artystyczne wizualizacje na komputerze były ograniczane przez niewielkie możliwości komputerów.

Później, gdy domowe komputery stawały się coraz lepsze, twórcy gier mogli puścić wodze wyobraźni i pozwolić sobie na bardziej szczegółową grafikę (gry 2D zaczęły przechodzić w świat 3D), bardziej skomplikowaną fabułę gier czy użycie nowych bardziej skomplikowanych elementów takich jak symulacji fizyki czy sztucznej inteligencji.

Wraz ze wzrostem złożoności gier i ilości wymaganej pracy, pojawiło się zapotrzebowanie na programistów którzy specjalizują się w wąskich dziedzinach. Stąd, produkcja gier stała się zespołowa. Teraz, tylko małe gry są tworzone przez jednego człowieka.

Specjalizacje programistówEdytuj

We współczesnej grze komputerowej można znaleźć wiele specjalizowanych zagadnień takich jak zaawansowana symulacja fizyki, sztuczna inteligencja, grafika trójwymiarowa, trójwymiarowy dźwięk, obsługa baz danych itp. Przy tworzeniu bardziej zaawansowanych gier, zatrudnianych jest od kilku do kilkunastu programistów zajmujących się każdą z tych dziedzin.

Programista fizykiEdytuj

Ten człowiek zajmuje się symulacją fizyki w szeroko pojętym znaczeniu. Od jego umiejętności zależy jak bardzo naturalnie obiekty zachowują się w grze. Symulacja fizyki odpowiada za to czy obiekty zderzają się ze sobą, odbijają się od siebie, rozpadają na mniejsze kawałki itd. Najwięcej przykładów zastosowań symulacji fizyki widać w grach wyścigowych, strzelaninach itp.

Niektórzy programiści fizyki współpracują także przy tworzeniu części fizycznej silnika gry. W innych przypadkach – gdy silnik gry nie ma modułu fizycznego – programista fizyki oblicza zależności fizyczne "ręcznie" lub załącza jeden z dostępnych modułów w internecie (np. Newton).

Kartą rozszerzeń do sprzętowego przyspieszania obliczeń fizycznych była Ageia PhysX, której możliwości zostały później zaimplementowane w kartach graficznych korzystających z silnika fizyki o tej samej nazwie.

Programista sztucznej inteligencjiEdytuj

Programista AI zajmuje się programowaniem wszystkich mechanizmów sztucznej inteligencji (o ile nie wyręcza go w tym silnik gry). W pojęciu mechanizmów sztucznej inteligencji w grze są wszelkie algorytmy wyszukujące drogi (np. gdy wskażemy w grze miejsce, do którego ma dotrzeć jednostka) oraz taktyki przeciwników w trybie gry jednoosobowej.

Głównym zajęciem programistów sztucznej inteligencji jest wyposażenie komputera w sztuczną inteligencję, a więc sprawienie pojawienia się złudzenia grania z przeciwnikiem z "krwi i kości". Często AI w grach jest oprogramowana za pomocą specjalnych skryptów, do których ma dostęp każdy gracz i które może zawsze zmieniać.

Światową sławę z powodu (także) programistów sztucznej inteligencji zdobyło studio Crytek, które zadziwiło wszystkich algorytmami AI w grze Far Cry. Również w serii Civilization po wielu latach programistom udało się stworzyć dobry skrypt AI komputera.

Programista grafikiEdytuj

Dawniej tak tytułował się człowiek specjalizujący się w algorytmach wyświetlania grafiki i ich optymalizacjach. Gdy komputery się rozwinęły, pojawiła się grafika 3D i większość programistów grafiki stało się właśnie programistami grafiki 3D obsługującymi różne renderery i inne tego typu rzeczy.

Programista grafiki 3D musi znać w zaawansowanym stopniu matematykę, a więc wektory, macierze, kwaterniony, wyrażenia algebraiczne potrzebne do grafiki, itp.

Programista dźwiękuEdytuj

Programiści dźwięku są obecni w zespołach deweloperskich już od czasów pierwszych gier np. Ponga. Prawie wszystkie gry posiadają muzykę i/lub dźwięki.

Niektóre gry używają zaawansowanej mechaniki (np. dźwięk 3D), lub inne, proste dźwięki Ciekawymi mechanizmami jest także włączanie muzyki grozy, gdy bohater będzie w niebezpieczeństwie, lub wesołej muzyczki, gdy będzie z kimś rozmawiał – lecz to wymaga już współpracy programistów gry oraz programistów dźwięku.

Programiści dźwięku mają szeroki wybór, bo wybierają między aż czterema bibliotekami: OpenAL, FMOD, BASS i DirectSound. Każda z nich ma inną strukturę, jedna lepiej się nadaje do pewnych zastosowań lecz do innych już nie. Po prostu wybór zależy od ogólnego charakteru gry.

Programista mechaniki gryEdytuj

Programista ten zajmuje się mechaniką gry odpowiadającą za przebieg rozgrywki.

Programista interfejsuEdytuj

Ten człowiek zajmuje się interfejsem użytkownika, czyli projektem menu, reakcjami na wciśnięte klawisze, ruch myszki w danym kierunku i inne. Najwięcej programistów interfejsów zajmuje się grafiką 2D. Dość często interfejs użytkownika jest oprogramowany właśnie za pomocą języka skryptowego.

Programista sieciEdytuj

Programista sieci coraz częściej gości w zespołach z powodu coraz większej liczby gier z trybem gry wieloosobowej. Taki programista pisze cały kod wysyłania i odbierania danych przez serwer za pomocą sieci LAN lub internetu. Jego zadaniem jest także zoptymalizowanie algorytmów, tak aby nie wystąpiły przerwania w połączeniach (lagi) czy zbytnie spowolnienie gry.

Programista narzędziEdytuj

Osoba tworzy programy, które używane są do takich zadań jak pisanie skryptów, import/konwersja zasobów graficznych, tworzenie efektów specjalnych czy budowanie całych poziomów. Niektóre narzędzia dodawane są do pełnej wersji gry, ale większość pozostaje jedynie w wewnętrznym użytku firmy. Od ich jakości zależy komfort pracy pozostałych członków zespołu.

Programista portowaniaEdytuj

Portowanie to inaczej przenoszenie gry na inną platformę, a więc tacy programiści zajmują się przenoszeniem gier, np. z konsoli na PC czy z Windowsa na Linuksa. Głównym jego zadaniem jest skonwertowanie i dostosowanie całego kodu dla nowego miejsca działania gry. Czasem, programiści portowania muszą napisać praktycznie od nowa grę – np. gdy gra portowana jest na komórkę.