Zenedith's dev blog

Dałem się namówić.., szatanowi chyba..

Nikita: Piracki wyścig

Nazwa projektu: Gra komputerowa (PC) pt. „Nikita – Piracki wyścig”,
Czas realizacji: 07.2008 – 11.2008,
Rodzaj projektu: komercyjny – dla firmy Techland,
Rola w projekcie: Główny programista,

Wykorzystane umiejętności:

  • System operacyjny: Windows XP, Windows Vista,
  • Wykorzystane języki programowania: Java SE,
  • Technologie: Chromed (Techland), UML, fizyka ODE,
  • Metodologia: Design Patterns, OOD, OOP, Prototyping,
  • Użyte oprogramowanie: Eclipse, SVN, CVS, AlienBrain, MS Office, Open Office, Mantis.

Piracki wyścig jest grą wyścigową osadzoną w kolorowym, baśniowym świecie Nikity, znanym z poprzedniej gry pt. „Nikita – Tajemnica skarbu piratów„. W grze pojawiają się znane z Nikity lądy, które zostały zaadaptowane pod szalony, piracki wyścig, w którym udział biorą znane nam z Nikity postacie przeciwników. Gra daje użytkownikowi 3 tryby rozgrywki:

  1. turnieje składające się z 4 wyścigów,
  2. przejazd na czas z „duchem” symbolizującym najlepszy czas przejazdu,
  3. 2 rodzaje misji do wykonania w określonym czasie (zbieranie monet oraz przejazd przez bramki).

W tym projekcie byłem jedynym programistą,którego zadaniem było stworzyć grę wyścigową
z elementami zwiększającymi grywalność, na podstawie kodu gry „GTI Racing” oraz silnika graficznego Chromed firmy Techland.

Najważniejszym zadaniem była zmiana modelu jazdy samochodów, którymi poruszamy się w grze – należało zmodyfikować parametry fizyczne samochodu takie jak tarcie wzdłużne i poprzeczne, bryły kolizyjne ODE, właściwości silników, krzywe opisujące zachowanie samochodu i sterowania (klawiatura, joypad) oraz dodanie efektu ślizgu samochodów na zakrętach.

Kolejnym istotnym elementem który należało zaimplementować był system „powerup’ów” oraz przeszkód które mogą się pojawić na drodze. Samochód mógł zatem zostawić plamę oleju, zwalniające pinezki, wystrzelić owocową serię z karabinu gatlinga wysuwającego się z samochodu, wyrzucić arbuz symbolizujący minę, stać się niepodatnym na działanie przeszkód czy przyspieszyć ponad prędkość maksymalną na specjalnych polach rozmieszczonych na mapie lub po zebraniu określonej ilości monet. Przeszkody rozmieszczone na mapie, które utrudniają przejazd graczowi i jego przeciwnikom to m.in. bujane kłody (ODE), obrotowe drzwi (ODE), wysuwające się bloki (jako skały, wrota, sople – ODE) oraz zoptymalizowane wersje tych przeszkód bez fizyki ODE, które stanowią uzupełnienie krajobrazu dla wyścigu.

Równie ważnym czynnikiem wpływającym na „gameplay” czyli przyjemność z rozgrywki, było zachowanie AI oraz ich ilość (zwiększona z 3 do 7 na jeden wyścig w porównaniu z GTI Racing) co pociągało za sobą problem optymalizacji AI. Poza optymalizacją AI należało wprowadzić zmiany w systemie równoważenia właściwości AI (przyspieszenie AI gdy zostawał w tyle, zwolnienie w p.p) oraz umożliwienie logicznego posługiwania się zebranymi „powerup’ami”.

Na odbiór gry znaczny wpływ miał system animacji dla samochodów (animowane części samochodu zależne od prędkości) oraz dla postaci, które reagowały dynamicznie na sytuację na drodze a czego uzupełnieniem był system dźwiękowy dla postaci oraz otoczenia wyścigu.

Stworzyłem logikę gry, na którą składało się zdobywanie nowych samochodów, odblokowanie kolejnych turniejów, map dla trybu „na czas” oraz misji z zadaniem do wykonania, system rankingowy w turnieju, między-profilowy system najlepszych czasów w trybie jazdy na czas, parametryzacji gry z poziomu plików sterujących oraz wiele innych elementów logiki wyścigu.

Stworzyłem oraz zmodyfikowałem istniejące podsystemy interfejsu użytkownika, aby gra była przejrzysta i intuicyjna dla młodszego odbiorcy.

Jest to drugi projekt gry komputerowej na komputery PC w którym brałem udział na stanowisku głównego programisty. Ponieważ wszelkie prace programistyczne należały w tym projekcie do mnie, musiałem bardzo dobrze kontrolować to co się dzieje w projekcie oraz sprawić, by tworzony kod nie zawierał kodu trudnego w utrzymaniu. Dzięki temu kod stał się jeszcze bardziej czytelny i pełen komentarzy przy bardziej skomplikowanych algorytmach. Rozwiązywałem zagadnienia związane z planowaniem przebiegu projektu pod kątem czasochłonności, tworzenia prototypów.

Perfekcyjnie opanowałem wszystkie aspekty programowania obiektowego z wykorzystaniem języka Java, środowisko Eclipse rozszerzone o współpracę z repozytorium kodu.

Reklamy
%d blogerów lubi to: