Gra
Celem tego projektu jest stworzenie nowej wersji popularnej gry DOS-owej Stunts, która będzie działać w systemach UNIX/Linux."Stara gra"
Oryginalną DOS-ową grę (wydaną przez Broderbund i Mindscape) można ściągnąć z różnych stron z oprogramowaniem "abandonware", np. ze strony XTC.Stunts to gra wyścigowa z trójwymiarowym widokiem i prostą grafiką CGA/EGA/VGA bez tekstur i cieniowania. Jednak dzięki możliwości wykonywania widowiskowych wyczynów kaskaderskich (pętle, przeskakiwanie mostów itp.) gra potrafiła sprawić wiele frajdy. Do największych zalet gry należy wbudowany edytor tras. Ponieważ trasy konstruowane są z gotowych elementów, każdy gracz może zaprojektować własne trasy.
Podobieństwa / różnice
UltimateStunts będzie grą bardzo podobną do Stunts:- Jest to gra wyścigowa z trójwymiarowym widokiem
- Gra umożliwia budowanie (w dość prosty sposób) własnych tras
- Trasy składają się z dużych elementów
- Grę będzie można uruchomić na dość starych komputerach
- Obie gry umożliwiają wykonywanie BARDZO widowiskowych wyczynów kaskaderskich
- Istnieje swoboda jazdy po całym terenie (ale doliczany jest za to karny czas)
- Niezależność od platformy: UltimateStunts jest programem "open source" i korzysta - w miarę możliwości - z bibliotek niezależnych od platformy.
- Dźwięk 3D
- Lepsze trasy: Można zmieniać rozmiary tras (długość, szerokość, wysokość), a także umieszczać elementy jeden na drugim
- Lepsza grafika (oparta na openGL) - z teksturami, wygładzonym cieniowaniem, odbiciami światła itp.
- Tryb wieloosobowy: w oryginalnej grze mogła brać udział 1 osoba i najwyżej 1 gracz komputerowy. Ultimate Stunts będzie zaś grą sieciową opartą na protokole internetowym (IP), z serwerem oraz klientami, przy czym klientem może być zarówno gracz sterowany przez człowieka, jak i gracz komputerowy.
- Rozbudowany zestaw elementów i tras. Można nawet powiększać własne zbiory tras i ich elementów za pomocą pakietów.
Opis szczegółowy
Gra
Będzie to gra wyścigowa z trójwymiarową grafiką. Istotnymi elementami gry będą: konstruowanie własnych tras oraz wykonywanie wyczynów kaskaderskich. Symulacja zjawisk fizycznych nie będzie w pełni realistyczna: frajda z gry jest ważniejsza niż realizm. Celem gracza może być: wygranie wyścigu z rywalami, ustanowienie rekordu trasy, a także konstruowanie określonych tras, np. bardzo długich, umożliwiających szybką jazdę albo (prawie) niemożliwych do przejechania.Tryb wieloosobowy
Gracz będzie mógł jechać trasą sam (wyłącznie w celu uzyskania czasu dającego miejsce na liście rekordów), ścigać się z graczami komputerowymi, z kolegami (na podzielonym ekranie) albo grać w trybie wieloosobowym poprzez sieć lokalną (LAN) lub Internet. Możliwe będą też warianty łączone, np. rywalizacja z graczami komputerowymi przez Internet.Sieć
Rozpoczęcie gry poprzez sieć powoduje uruchomienie oddzielnego programu serwera na jednym z komputerów. Serwer będzie można uruchomić z menu w programie-kliencie, lecz będzie też istniała możliwość ręcznego uruchomienia na komputerze mającym pełnić rolę serwera. Wszystkie programy będące klientami, które biorą udział w danej sesji gry, muszą połączyć się z serwerem. Serwer nie tylko przesyła wszystkie dane, lecz pełni także rolę arbitra. Symulacja gry będzie działać na serwerze, a wszystkie symulatory lokalne muszą zsynchronizować się z serwerem. Serwer określa także trasę, na której toczy się gra, oraz typy samochodów, które mogą brać w niej udział. Wszystkie pliki powinny być dostępne na serwerze, natomiast jeśli nie posiada ich jeden z klientów, to będzie on mógł automatycznie ściągnąć brakujące pliki.Grafika
Gra Ultimate Stunts będzie w stanie wyświetlać trójwymiarową grafikę wysokiej jakości, ale będzie pod tym względem bardzo elastyczna. Aby zapewnić możliwość grania na komputerze bez akceleracji sprzętowej, stopień złożoności grafiki będzie można zredukować do minimum. Z drugiej strony, na nowoczesnym sprzęcie gra będzie wykorzystywać zaawansowane technologie.Trasy
Trasy będą się składać z kwadratowych elementów, dokładnie tak samo jak w Stunts. Różnice są następujące:- W Ultimate Stunts rozmiary tras nie są sztywno określone. Można zatem stworzyć trasy o ogromnych rozmiarach. Są one ograniczone tylko przez: rozmiar liczb całkowitych (dane będą transmitowane przez sieć w postaci 32-bitowych liczb całkowitych; współrzędne położenia są mnożone przez 1000, co pozwala uzyskać dokładność do 1 mm), dokładność liczb zmiennoprzecinkowych (niektóre obliczenia są prowadzone na współrzędnych bezwzględnych), a także zapotrzebowanie na pamięć. Jednak nawet duże trasy nie będą zajmować zbyt wiele pamięci, ponieważ każdy element trasy opisany jest zaledwie przez kilka liczb całkowitych, które określają jego model, kierunek umieszczenia i wysokość.
- W Stunts każde miejsce na mapie ma określony rodzaj terenu i rodzaj elementu. Z tego względu nie da się umieszczać elementów jeden na drugim, co więcej ogranicza to możliwe różnice wysokości. W Ultimate Stunts trasy będą trójwymiarowymi tablicami elementów. Na trasie mającej n warstw można będzie umieścić maksymalnie n elementów jeden na drugim. Dla każdej pozycji w tej trójwymiarowej siatce określone są trzy wartości: jedna określa typ elementu, druga - kierunek jego umieszczenia (0, 1, 2 lub 3), a trzecia - wysokość elementu (mierzoną jednostkami odpowiadającymi pojedynczemu elementowi). Ostatnia z wymienionych wartości umożliwia tworzenie bardzo dużych różnic wysokości za pomocą zaledwie kilku warstw.
- W Ultimate Stunts zestaw elementów, z których składają się trasy, nie będzie z góry ograniczony. Zamiast tego każdy element będzie zapisany w pliku/plikach, do których będą się odwoływać pliki tras.
Edytor tras
Edytor tras będzie przyjaznym dla użytkownika programem do edycji tras. Uruchomienie go będzie następowało po wybraniu odpowiedniego polecenia menu w głównym programie. Ponieważ w Ultimate Stunts trasy są w większym stopniu trójwymiarowe niż w przypadku Stunts, edytor tras będzie bardziej złożony. Inspiracją do niego jest edytor kolejki górskiej w grze Rollercoaster Tycoon. Zasadnicza koncepcja sprowadza się do umieszczenia na końcu drogi "kursora". Użytkownik decyduje o tym, czy droga ma skręcać w prawo lub w lewo, czy ma się wznosić lub opadać, czy na trasie ma być umieszczony obiekt kaskaderski itp. Oczywiście edytor tras powinien też sprawdzać poprawność trasy oraz uniemożliwiać wprowadzanie nieprawidłowych zmian. Edytor powinien też mieć możliwość importowania tras oryginalnej gry Stunts.Powtórki
Dokładnie tak samo jak w Stunts, w Ultimate Stunts będzie można zapisywać i oglądać powtórki (choć gra nie będzie w stanie odczytywać powtórek z oryginalnej gry Stunts). W powtórkach Ultimate Stunts każda klatka będzie zawierać informacje o położeniu i kierunku ustawienia każdego ruchomego obiektu na miejscu akcji. Używając odpowiednich narzędzi do konwersji dane te będzie można wykorzystać w programach do animacji (takich jak 3D Studio), na przykład w celu stworzenia filmowej czołówki do Ultimate Stunts. W Ultimate Stunts będzie też można wykorzystywać powtórki do wyświetlania tzw. ghost playera (wirtualnego gracza).Edytor stunts3dedit
W początkach istnienia tego projektu nie było planów stworzenia edytora 3D, jednak potrzeba korzystania ze skomplikowanych elementów tras (i związana z tym trudność ręcznego definiowania ich w plikach tekstowych) wymusiła jego napisanie. Edytor 3D pozostanie prostym narzędziem do niskopoziomowego manipulowania wielokątami, z pewnymi możliwościami modyfikowania na wyższym poziomie. Coraz ważniejsza staje się możliwość importowania plików w obcych formatach. Tok postępowania będzie następujący: stworzenie modelu w zewnętrznym edytorze, zaimportowanie go do stunts3dedit, naniesienie poprawek i zapisanie modelu w celu użycia go w Ultimate Stunts.Wymagania systemowe
Gra UltimateStunts jest bardzo elastyczna w kwestii wymagań systemowych: można w nią grać na komputerach bez akceleracji sprzętowej, ale na nowoczesnych komputerach jest w stanie w pełni wykorzystać możliwości technologii 3D.Do uruchomienia plików binarnych dla Windows wymagane są:
- Windows 95, NT lub nowsze (choć gra będzie prawdopodobnie działać także w Wine - emulatorze Windows dla Linuksa)
- zainstalowany openGL (albo Mesa) (standard w większości systemów)
- System X window
- openGL (albo Mesa)
- SDL (w poprzednich wersjach używany był glut)
- biblioteka sieciowa BSD (zawsze (?) dostępna w systemach BSD i Linux)
Aby uzyskać ładną i płynnie animowaną grafikę zalecany jest następujący sprzęt:
- Procesor Pentium 200 MHz lub szybszy (na platformach innych niż PC - procesor o porównywalnej wydajności)
- Karta graficzna z akceleracją sprzętową obsługiwaną przez openGL
- Dźwięk (poprzez FMOD albo openAL)
- Joysticki
Technologia
Głównymi platformami, na których tworzona jest gra, są Linux oraz Cygwin (w systemie Windows), lecz staram się zachować możliwość przenoszenia do innych środowisk zbliżonych do Uniksa, takich jak MacOS/X. Do obsługi grafiki i urządzeń wejściowych stosowana jest kombinacja openGL/SDL. Komunikacja sieciowa jest realizowana poprzez standardowe funkcje sieciowe systemu UNIX (BSD). Komunikacja związana z rozgrywką będzie korzystać z UDP/IP. Dźwięk jest zaimplementowany zarówno w FMOD, jak i openAL.Projekt będzie się składał z kilku różnych programów. Należą do nich:
- Główny program UltimateStunts, obsługujący grafikę, dźwięk itp. Zawiera też ładny interfejs użytkownika.
- Program serwera
- Klient sztucznej inteligencji (AI)
- Prosty edytor 3D - do modyfikacji elementów tras oraz samochodów, a także do importowania ich z plików w obcych formatach.
- Edytor tras
Sieć i symulacja
Funkcje poszczególnych programów biorących udział w danej sesji rozgrywki będą bardzo elastyczne, jako że optymalna konfiguracja będzie zależała od parametrów sieci, takich jak przepustowość. Poniższy tekst opisuje przyszłe wersje gry. NIE odnosi się natomiast do aktualnej wersji.W grze lokalnej, czyli tylko z jednym komputerem biorącym udział w sesji rozgrywki, wszystkie operacje (wyświetlanie grafiki, sterowanie graczami komputerowi, symulacja zjawisk fizycznych) są wykonywane przez jeden program. W grze sieciowej, w której więcej niż jeden gracz jest sterowany przez człowieka, dane będą rozsyłane przez program serwera. Zasadnicza symulacja zjawisk fizycznych będzie przeprowadzana przez program serwera, ale (w zależności od przepustowości połączenia) niektóre programy klientów będą również mogły wykonywać obliczenia fizyczne w celu poprawienia błędów wynikających z powolnej synchronizacji z serwerem.
Stworzenie graczy sterowanych przez komputer (AI) jest możliwe zarówno z serwera, jak i z klienta Ultimate Stunts. Można też użyć do tego celu oddzielnego programu klienta AI. W celu uzyskania optymalnego działania gry zaawansowani użytkownicy mogą wykorzystać program serwera do działania również w charakterze klienta. W ten sposób program serwera będzie mógł zalogować się do rozgrywki internetowej na powolnym łączu i pełnić rolę serwera dla różnych graczy w sieci lokalnej (LAN). Umożliwi to wykorzystanie pojedynczego połączenia klient-serwer przez kilku graczy.