O projektowaniu gier

Witam! Nazywam się Kacper i obecnie zaczynam 3 klasę technikum informatycznego. Programowaniem i tworzeniem gier interesuję się od 1 klasy gimnazjum. Od tego czasu zrobiłem duży postęp i chciałbym się z wami podzielić chociaż szablonową wiedzą teoretyczną. W artykule będę się posługiwał profesjonalnymi terminami, które nie zawsze da się tak na szybko wyjaśnić. Dlatego zachęcam zainteresowanych do poszukiwania w sieci niezrozumiałych fraz.

Dziś pragnę wam opowiedzieć o projektowaniu gier w dużych firmach programistycznych. Piszę to na podstawie wiedzy z książek, wywiadu z Grzegorzem Rdzanym (jednym z programistów “Wiedźmina 2” i “Wiedźmina 3”) oraz własnych doświadczeń.

Etap pierwszy to pisanie scenariusza. Jest to najdłuższa i najbardziej niestabilna część, gdyż podczas wielotygodniowej, a czasem nawet wielomiesięcznej pracy programiści wprowadzają kilkaset korekt i modyfikacji. Ten etap jest nadzwyczaj trudny, gdyż dopiero tworzymy świat, w którym ma się toczyć akcja gry. W tej fazie scenarzyści planują umiejscowienie kamery i całą scenografię cut-scenek (czyli filmów przerywających daną akcję lub wprowadzających nowy akt rozgrywki). Często pracuje nad tym nawet kilkadziesiąt osób.

Kolejnym istotnym krokiem jest stworzenie algorytmów, które mają działać w grze. Mianowicie przepisów i zadań, jakie mają posiadać dane obiekty w kodzie. Dla przykładu podam kilka prostych algorytmów ze znanej gry Mario. Tu posłużę się avatarem, którym sterujemy w grze. Jeżeli naciśniemy klawisz D, to obiekt będzie się przesuwał na osi x jednocześnie pokazując zapętloną animację chodu w prawo. Programiści projektują własne silniki fizyczne, które sprawiają, że teren po jakim się porusza postać w grze jest rzeczywistym ograniczeniem, barierą przez którą postać nie przeniknie (symulacja świata realnego). Na przykład, jeżeli podskoczymy, to spadamy, a nie odlatujemy, bo nasza gra posiada zaprojektowaną grawitację. Jeden obiekt może mieć od kilkunastu do kilkuset takich właściwości.

Gry to najbardziej wymagający typ programów komputerowych. Po dwóch najistotniejszych i nienależących do najciekawszych etapach, przyszedł czas na wybór, który będzie się za nami ciągnął do końca produkcji, a może i jeszcze dalej – wybór technologii. Za technologię przyjmujemy języki programowania, których jest kilkakrotnie więcej niż ludzkich dialektów. Najpopularniejszymi z używanych przez game developerów są C++, C# i Python. Najczęstszą platformą jest .net, a środowiskiem używanym do kodowania jest Visual Studio firmy Microsoft. Zaś najlepszy silnik (nie licząc tych zrobionych własnoręcznie) to Unreal Engine 4 w przypadku gier pod desktopy lub Unity 3D na urządzenia mobilne. Jednak tu nasze wybory się nie kończą, bo pozostała jeszcze kwestia silników graficznych. Najczęściej używane to Direct X/Direct3D, który działa tylko pod systemami z rodziny Microsoft i OpenGL, jest wieloplatformowy, pod niektórymi względami przewyższający wyżej wymienioną bibliotekę skryptów. Mniej znane silniki graficzne to Ogre3D, SFML2 i Allegro5.

Gdy już mamy gotowy scenariusz, algorytmy i wybraną technologię, którą będziemy się posługiwać – następuje podział ról. Konkretniej mówiąc, gry tworzone są w zespołach, złożonych z co najmniej 2 osób, a każdy pracownik przyjmuje jakąś rolę. Na przykład jedna osoba jest odpowiedzialna za fizykę i animacje flory, wszystkie jej funkcje i wartości w zmiennych. Każda osoba dopracowuje konkretne detale, dzięki czemu świat w grach jest niemal idealny. Następna, istotna rzecz na tym etapie produkcyjnym to techniczne podejście do programowania -im większy program, tym bardziej musimy kontrolować skrypty. Przykładowo w projekcie ,,Wiedźmina 3” zrezygnowano z komend klasy wirtualnej i jej metod. Taki zabieg był konieczny, żeby gra działała na komputerach obecnej generacji i nie trzeba było czekać kilku lat, żeby odpalić ją na najniższych ustawieniach, które obciążałyby moduły naszych PC-tów do granic możliwości.

Na tym etapie wiele pomysłów, rozszerzeń, misji fabularnych lub elementów gameplaya zostaje usuniętych z racji braku możliwości wykonania, ograniczeń sprzętowych, braku czasu.

Ostatni z etapów to reklama i tworzenie kopii, które w ostateczności trafią na sklepowe półki. Istnieje wiele zakończeń produkcji. Ja opisałem najczęściej używany przez wielkie firmy tworzące programy, przeznaczone głównie dla graczy.

Dziękuję za uwagę! Mam nadzieję, że mój artykuł natchnie Was do poszerzenia wiedzy o grach.

Autor: Kacper Gmurczyk

Źródła i wyjaśnienia pojęć:

Nauka języków programowania od podstaw

Klasy wirtualne i ich metody

Algorytmy + “Symfonia C++ standard: programowanie w języku C++ orientowane obiektowo” autorstwa Jerzego Gębosza

Unity 3d

Unreal Engine 4

DirectX/Direct3D

OpenGL

.NET