Zenedith's dev blog

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

Nikita – Tajemnica skarbu piratów

Nazwa projektu: Gra komputerowa (PC) pt. „Nikita – Tajemnica skarbu piratów”,
Czas realizacji: 12.2006 – 03.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,
  • Baza danych: –
  • Technologie: Chromed (Techland), UML,
  • Metodologia: Design Patterns, OOD, OOP, Scrum, Prototyping,
  • Użyte oprogramowanie: Eclipse, SVN, CVS, AlienBrain, MS Office, Open Office, Mantis.

Nikita to gra platformowa w środowisku 3D, z dużą ilością elementów przygodowych. Gra miała się wyróżniać na tle innych tego typu gier (seria Kangurek Kao, Chicken Little, Rayman, Croc) przede wszystkim bardzo dużym, rozbudowanym światem, który gracz może zwiedzać oraz dużą interakcją z otoczeniem, dostarczającym elementów przygodowych. Praca programistów polegała na implementacji całej mechaniki i logiki gry w języku Java, który był wykorzystywany jako język skryptowy dla silnika graficznego Chromed przez technologię JNI.

Moim pierwszym zadaniem jako głównego programisty, było zebranie wymagań wobec gry od firmy Techland. Następnie wstępnie zaplanowałem jak system mógłby wyglądać, wzorując się na uzyskanym od firmy Techland kodzie źródłowym gry komputerowej „Xpand Rally”. Kolejnym krokiem było wykonanie wstępnej listy zadań z otrzymanej listy wymagań i podzielenie jej na kamienie milowe z przydziałem do konkretnej osoby (ja i młodszy programista), wraz z wstępnym oszacowaniem czasu realizacji zadań.

W procesie powstawania gry odpowiedzialny byłem za przestrzeganie terminów, określania priorytetów i wykonywania najważniejszych, przeważnie trudnych, zadań z zakresu implementacji, do których należało m.in. opracowanie i zaimplementowanie mechaniki poruszania się głównej postaci, jej umiejętności (ataki mieczem, rzucanie oszczepami i kulami) oraz synchronizacji wszystkich jej animacji, pracy kamery (kolizje, różne tryby zachowania), interakcji z otoczeniem (przełączniki, waga, opuszczane mosty, przewalane drzewa, itp.), zachowanie AI (parę typów przeciwników, boss’owie), większość przeszkód, które napotyka gracz (bujane kłody, wyjeżdżające ze ścian kolce, zgniatacze, miny wodne, obrotowe platformy z kolcami, eksplodujące beczki, dopracowanie palących traw, dopracowanie bomb wulkanicznych, itp.) oraz praktycznie wszystkie mini gierki(bossowie, lot na smoku, tor saneczkowy, toczenie się kulą śnieżną, pływanie dwoma rodzajami łódki, zagadka z lawą, strzelanie z armaty, pojedynek na armaty, dopracowanie jazdy na bambusie, itp.), jak również system power up’ów.

Do moich obowiązków należała też optymalizacja aktywowania/dezaktywowania obiektów (wraz z odległością, zdarzeniami w grze), restartowanie obiektów, system sensorów akcji i wyzwalaczy, system podpinania dźwięków i animacji dla różnego rodzaju obiektów, system interfejsu gry (zliczanie monet, żyć, wykonanie efektów migania i wygasania (blending’u) elementów HUD’a) a także oprogramowania i oskryptowania całego menu gry.
W połowie projektu młodszy programista zaczął wspomagać proces tworzenia grafiki przez pracę z materiałami (shadery) oraz tworząc potrzebne efekty fx/particle, wspomagając również proces testowania gry.

Projekt ten nauczył mnie przede wszystkim pracy w grupie oraz zarządzaniem dużym projektem. Przekonałem się, jakie mogą się pojawić problemy, jak je rozwiązywać a przede wszystkim eliminować ich przyczynę. Nabyłem praktycznego doświadczenia w procesie analizy i planowania projektu, którego solidne podstawy poznałem na studiach. Z powodzeniem wykorzystywałem elementy różnych metodologi wytwarzania oprogramowania, przede wszystkim metodologi lekkich (Agile, Scrum) – iteracje, częste konsultacje wewnątrz firmy oraz z Techlandem. Bardzo dobrze poznałem wszystkie aspekty programowania obiektowego z wykorzystaniem języka Java, środowisko Eclipse rozszerzone o współpracę z repozytorium kodu.

WERSJA POLSKA

WERSJA ANGIELSKA

%d blogerów lubi to: