Jaki czas temu współtworzyłem z przyjaciółmi pewną grę. Byłem odpowiedzialny za m.in. edytor map, efekty, silnik, animacje, AI (wyszukiwanie drogi, zachowanie NPC itp.). Oprócz tego w teamie byli również ludzie zajmujący się programowaniem interfejsu, sieci, testowaniem, dokumentacją oraz tworzeniem grafiki.
Całość projektu składa się z silnika, gry, edytora map oraz kilku narzędzi wewnętrznych. Gra z pewnością nie robi graficznie szału jednak ze względu na fakt oparcia jej na własnym silniku było sporo zabawy (np. z partycjonowaniem wierzchołków). W skrócie silnik umożliwia m.in.:
– kolizje (na trójkątach oraz BB),
– drzewa ósemkowe (na podstawie wierzchołków oraz obiektów),
– efekty bloom, blur,
– normal mapping,
– animacja szkieletowa,
– efekty krwi, headshot,
– wyświetlanie śladów pocisków na ścianach,
– obsługa sieci (możliwy typ gry multiplayer),
– zmieniająca się muzyka w zależności od otoczenia i akcji,
– efekty cząsteczkowe, pogodowe.
W pewnym momencie AI oparliśmy na sztucznych sieciach neuronowych. Zachowania NPC były więc zależne od SSN oraz przygotowanych danych uczących. Niestety po testach stwierdziliśmy, że przygotowanie próbek uczących jest zbyt czasochłonne aby osiągnąć zamierzone efekty. W nowszych wersjach gry zdecydowaliśmy się na tradycyjny klasyfikator oparty na logice rozmytej.
Gra jest mieszanką RTS z shooterem. Kierujemy postacią tak jak w tradycyjnym TPS (za pleców). Możemy zbierać apteczki, bronie oraz samodzielnie walczyć z przeciwnikiem. Ponadto można zbudować własną bazę, wieżyczki, sklepy, silosy itp. Pieniądze zarabiamy niszcząc przeciwnika lub poprzez specjalne budynki (magazyny, gdzie można również przechowywać swój ekwipunek). Takim sposobem po zebraniu odpowiednich funduszy możemy sterować rakieta balistyczną lub czołgiem:)
Screeny (na których widać m.in. naszą uczelnie ;)):
Filmik (na którym widać kilka błędów np. związanych z plikiem językowym;) ):