Projekt gry komputerowej FIZOL

Projekt będzie polegał na napisaniu gry komputerowej FIZOL. FIZOL to pojazd kosmiczny, którego zadaniem jest zbieranie zasobów w bezkresnych otchłaniach kosmosu. Zasoby są obdarzone masą i mogą mieć ładunek elektryczny. Pojazd FIZOL napotka na swej drodze planety, pola elektryczne, pola magnetyczne oraz obszary lepkie. Wszystkie te obiekty będą oddziaływały na pojazd w stopniu zależnym od aktualnego ładunku. Dla przykładu, przy pustej ładowni statek będzie miał tylko masę własną i będzie oddziaływał grawitacyjnie z planetami oraz będzie hamowany przez tarcie w obszarach lepkich. Jeśli jednak w ładowni będą zasoby obdarzone ładunkiem również pola elektryczne i magnetyczne będą zmieniać tor naszego FIZOLA. Zadaniem pilota statku FIZOL będzie zebranie jak największej liczby zasobów i dotarcie do punktu ewakuacji. W trakcie misji statek będzie chroniony polem siłowym. Energia pola jest skończona i kolizje z planetami będą ją redukować. Zderzenie z planetą po utracie pola siłowego oznacza smutny kres misji.

Do napisania projektu będzie potrzebnych kilka elementów:

  • znajomość C++
  • model fizyczny pojazdu i obiektów z którymi FIZOL będzie oddziaływał
  • metoda numeryczna pozwalająca w czasie rzeczywistym wyliczać zachowanie FIZOLA
  • biblioteka graficzna pozwalająca na wizualizację w czasie rzeczywistym poczynań FIZOLA

Od uczestników oczekujemy znajomości podstaw programowania w C++. Jeśli pojawi się konieczność wprowadzenia bardziej zaawansowanych elementów nieznanych uczestnikom będą one na bieżąco wyjaśniane.

Model fizyczny zostanie oparty na równaniach ruchu Newtona. FIZOL będzie oddziaływał z masywnymi obiektami w oparciu o prawo powszechnego ciążenia. Oddziaływanie z polem elektrycznym i magnetycznym będzie poprzez siłę Lorenza. Pole siłowe będzie modelowane przez oddziaływanie harmoniczne.

Do numerycznego rozwiązywania równań ruchu zostanie użyta metoda Rungego-Kutty czwartego rzędu.

Wizualizacja zostanie oparta o bibliotekę OpenGL. Jest to darmowa biblioteka graficzna pozwalająca na rysowanie przyśpieszanej sprzętowo grafiki trójwymiarowej. Jej zaletą jest przenośność. To znaczy, że za jej pomocą można pisać kod, który będzie działał na praktycznie każdej platformie sprzętowej i programistycznej, poczynając od urządzeń przenośnych jak telefony, poprzez komputery PC, a na superkomputerach i urządzeniach dla wojska kończąc.