Państwowa Wyższa Szkoła Zawodowa w Tarnowie Instytut Politechniczny Informatyka Stosowana III r. D O K U M E N T A C J A Snake 3D Piotr Gębiś Paweł Gładysz Dokumentacja do projektu Snake 3D. W dokumencie zawarty jest opis projektu, instrukcja obsługi oraz funkcje projektu. Copyright Piotr Gębiś & Paweł Gładysz Strona 1
1) Opis problemu cel projektu Celem projektu było napisanie programu przy użyciu OpenGl/DirectX, który będzie prezentował przestrzeń 3D. Celem tego projektu było zapoznanie się z bibliotekami graficznymi dostępnymi wraz z oprogramowaniem Softwerowym. Głównym problem było wybranie koncepcji realizowanego projektu i od tego zaczęliśmy. Założyliśmy, że program będzie prosta grywaną grą, w którą będzie można zagrać. Nasz projekt to gra Snake 3D umożliwiająca poruszaniem się wężem, zbieraniem punktów oraz przechodzenie kolejnych poziomów trudności. 2) Analiza problemu i teoretyczna propozycja jego rozwiązania Program ma być prosta grą i napisaną przy użyciu narzędzi programowania takich jak Microsoft Visual Studio. Języki programowania, które wybraliśmy w celu osiągnięcia naszego zadania to język C++. Silnik gry wspiera biblioteka OpenGL. Całość gry dedykowana jest platformie Microsoft Windows. Analiza wymagań użytkownika Z punktu widzenia użytkownika gra powinna: posiadać łatwy gameplay oraz intuicyjny system obsługi udostępniać przynajmniej jeden poziom gry możliwość zbierania owoców i przechodzenia leveli. Z punktu widzenia programisty gra powinna: Gameplay zawierać podział projektu na moduły w prosty sposób dopisywania kolejnych poziomów trudności gry (plansz). Nasz program oferował będzie bardzo prosty gameplay, wspierany przez pełni trójwymiarową grafikę komputerową. Gracz będzie miał za zadanie poruszanie się wężem po planszy oraz zbieranie czerwonych owoców (sześcianów). Gracz przy poruszaniu się po planszy musi uważać na ściany z którymi występuje kolizja. Po zderzeniu ze ścianą następuje koniec gry i oczywiście przegrana. W naszym projekcie nie ma żyć. Jest tylko jedna próba pobicia rekordu. Po uruchomieniu projektu pokazują się 2 okna. Jedno okno to okno z grą. W tym oknie użytkownik porusza się po planszy i przechodzi kolejne poziomy trudności. W drugim oknie wyświetlane są statystyki dotyczące gry. W projekcie napisaliśmy 3 poziomy trudności. Każdy poziom różni się od siebie szybkością poruszania się węża, ilością ścian z którymi występuje kolizja oraz ilością potrzebnych owoców (czerwonych kostek) które trzeba zebrać by ukończyć dany level. Oczywiście im wyższy poziom tym owoc jest za więcej punktów. ( I poziom 2pkt, II poziom 4 pkt, III poziom 6 pkt). Ściany na poszczególnych poziomach są zawsze w tych samych punktach na planszy, natomiast położenie owoca generowane jest automatycznie i losowo. Copyright Piotr Gębiś & Paweł Gładysz Strona 2
I. poziom: W I poziomie plansza jest bardzo prosta. Jest tylko 4 sześciany z którymi występuje kolizja. Wąż porusza się wolno i potrzeba zebrać tylko 9 owoców aby go ukończyć. W tym poziomie owoc punktowany jest za 2 pkt. II. Poziom W II poziomie plansza jest już troszkę trudniejsza do przejścia. Jak widać na załączonym zrzucie ściany z którymi występuje kolizja jest więcej. Wąż porusza się szybciej i aby ukończyć ten level trzeba zebrać 15 owoców. Każdy owoc punktowany jest za 4 pkt. Copyright Piotr Gębiś & Paweł Gładysz Strona 3
III. poziom Poziom III jest ostatnim poziomem jaki napisaliśmy w projekcie. Na tym poziomie wąż porusza się szybko i każdy owoc jest za 6 pkt. Po uruchomieniu gry pojawia się także drugie okno w którym wyświetlane są komunikaty oraz statystyki związane z grą. ilość potrzebnych owoców do przejścia poziomu Imię (nick) oraz rekord punktów które udało się zebrać do skucia suma punktów które uzbierał gracz ilość owoców których zostało, aby ukończyć poziom ilość punktów za jeden zebrany owoc na poszczególnym poziomie ilość owoców które zostały zebrane na poszczególnym poziomie Copyright Piotr Gębiś & Paweł Gładysz Strona 4
Jeżeli nastąpi kolizja a gracz pobił rekord w oknie komunikatów i statystyk pojawi się napis by podać swoje imię. Imię oraz ilość punktów uzyskanych przez gracza zapisywane są w pliku i po każdym uruchomieniu gry są z niego wczytywane, dzięki czemu nie tracimy informacji o rekordzie po zamknięciu gry. Jeżeli gracz nie uzyskał wystarczającej ilości punktów by pobić rekord wyświetlany jest komunikat o przegranej i zdobytej ilości punktów. 3) Implementacja Program został podzielony na funkcje i klasy które usprawniają działanie całości. Podzielono kod i wstawiono go do plików. Pliki noszą odpowiednią nazwę co do zawartości. Najciekawsze fragmenty kodu: Ta część dokumentacji została usunięta 4) Testowanie Program był testowany wielokrotnie pod względem grywalności, poprawności oraz możliwości osiąganych w grze. Z uruchomieniem nie ma problemu na platformie sprzętowej gdzie jest zainstalowany Microsoft Windows XP/Vista gdyż właśnie na niej był pisany program. 5) Możliwości dalszej rozbudowy Projekt stanowi podstawę gry. Oczywiście program można bez przeszkód rozbudować. Podstawową i bardzo przydatną funkcją było by menu gry. Mogło by ono zawierać takie funkcje jak: pausa gry, zapisanie aktualnego stanu gry, odczyt zapisanej gry. możliwość szybkiego wyjścia z gry. Dodatkowo grę można ubogacić o efekty wizualne takie jak: wąż mógł by być bardziej realistyczny, Copyright Piotr Gębiś & Paweł Gładysz Strona 5
urozmaicenie tekstury planszy (podłogi). Mogła by ona przypominać naturalne środowisko jakiegoś gatunku węża, owoce na planszy (w naszym przypadku czerwone sześciany) powinny być w kształcie realnych kształtów owoców np.: jabłek, gruszek, wiśni itd, efekty świetlne np. ściemnianie i rozjaśnianie tła dookoła planszy oraz zmiana jego koloru w zależności o stopnia trudności. Dodatkowo w projekcie można było by dopisać: więcej poziomów trudności (plansz), ekstra owoce które pojawiały by się na planszy tylko przez pewien okres czasu i były by np. podwójnie punktowane, multiplayer`a po planszy poruszały by się dwa węże jednocześnie i wygrywała by ta osoba która zbierze więcej owoców i nie zderzy się ze ścianą ani z drugim wężem, funkcje wizualizującą która mogła by obracać planszą w dowolnym kierunku oraz zmniejszać i zwiększać plansze, efekty dźwiękowe np. przy zebraniu owoca, przejściu do następnego levelu lub kolizji ze ścianą, kod pod platformę Linux`ową. Copyright Piotr Gębiś & Paweł Gładysz Strona 6