(WIP) Wiedźma – gra co miesiąc: styczeń – Kompletna gra

Udało się! Oddaje w wasze ręce kompletną grę przed końcem miesiąca. W tym poście opiszę jak wyglądał cały proces tworzenia gry, czego nauczyłem się przez ten miesiąc, oraz jakie wyciągnąłem po wszystkim wnioski.

Zmian w logice gry jest nie wiele. Większość nowości, to usprawnienia estetyczne 🙂 Zawistni ludzie twierdzili, że nie potrafię rysować. Mam nadzieję, że nowym materiałem udowodniłem, że jest inaczej 🙂

javascript noob gra co miesiąc styczeń kompletna gra

W grę zagrać można klikając w obrazek. Jak zwykle jest też paczka z kodem.

Tym razem nie będę w ogóle pokazywał nowego kodu. Opowiem tylko mniej więcej co się zmieniło. Pierwszą rzeczą, która na pewno rzuci się w oczy jest to, że teraz stany pomiędzy głównym stanem gry zostały ozdobione obrazkami mojego autorstwa 🙂 Do tego pojawiają się na nich uzupełnione instrukcje oraz informacje dla gracza.

W samym stanie gry, doszedł mały panel, który pokazuje ile punktów życia posiada aktualnie czarownica. Jednak zamiast wyświetlania tej informacji w formie liczby, użyłem paska życia. Za każdym razem, kiedy czarownica otrzymuje obrażenia, pasek ten robi się krótszy.

Do tego na panelu znajdują się obrazki reprezentujące potrzebne do ukończenia gry zioła. Jeżeli gracz zebrał dane zioło, przedstawiająca je grafika robi się kolorowa. W przeciwnym razie, jest ona czarno-biała.

Te zmiany to zmiany estetyczne. Nie wpływają na to w jaki sposób zachowuje się gra. Nowością w logice programu są za to punkty. Teraz gracz za zestrzelenie potworka, otrzymuje 10 punktów. Do tego po zakończeniu gry dostaje dodatkowe punkty za każdy punkt życia, który udało mu się nie stracić. Stan gameWon pokazuje jaki wynik udało się uzyskać.

Kod można obejrzeć zaglądając do paczki, którą podlinkowałem wcześniej. Jeżeli chcesz abym objaśnił którąś jego część, może coś z poprzednich aktualizacji, daj znać. Na każde pytanie na pewno odpowiem.

Proces Tworzenia gry

Cóż, niestety ale nie było tu żadnego specjalnego procesu. Tak naprawdę pracowałem nad grą kiedy tylko miałem wolną chwilę. Niestety inne obowiązki ograniczały te chwile do minimum. Nawet kiedy miałem już czas żeby pracować nad blogiem, nie zawsze był to temat gry.

Na początku miałem tylko ogólny obraz gry w głowie. Tak naprawdę nie wiedziałem jak będzie wyglądać na końcu. W miarę dodawania kolejnych elementów, nachodziły mnie pomysły na dodatkowe zmiany i usprawnienia.

Pracę nad nową funkcją najczęściej zaczynałem od tworzenia grafiki. Zanim zacząłem dodawać logikę obsługującą potwory, najpierw narysowałem je sobie w GIMPie. Dopiero gdy grafiki były gotowe, zabierałem się za pisanie kodu. Mógłbym oczywiście najpierw utworzyć cały kod i zamiast grafik używać palceholderów, ale rozpoczęcie prac od narysowania obrazu, pomagało mi wejść w ten kreatywny stan, który bardzo sprzyja tworzeniu 🙂

Czego się nauczyłem

Na pewno nauczyłem się tego, że rysowanie w GIMPie sprawia mi frajdę 🙂

A tak na serio, dwie najważniejsze techniki, które w tym projekcie wykorzystałem pierwszy raz, to kolizja blokująca ruch obiektu, oraz wykorzystania trygonometrii. Może nie było widać tego wyraźnie w tej grze, ale są to bardzo przydatne rzeczy. Specjalnie nie opisywałem dokładnie tych aspektów gry a jedynie wskazywałem, w którym miejscu zostały wykorzystane.

Obu tym technikom poświęcę osobny post. Te posty pojawią się w pierwszym tygodniu lutego, więc już niedługo 🙂

Wnioski

Na pewno nie będę zwlekał z rozpoczęciem prac nad kolejnymi grami. Pracę nad tą grą zacząłem mniej więcej w połowie miesiąca. Miałem tak naprawdę jedynie około dwóch tygodni aby stworzyć grę. Przez to, pewne rzeczy nie zostały dopracowane tak jakbym tego chciał.

Na pewno jakość kodu powinna być lepsza. Mimo moich wielkich starań sporo kodu się powtarza. Mógłbym na pewno okroić jego objętość. Na przykład schemat licznika, który co określoną ilość narysowanych klatek wywołuje jakąś akcję, powtarzał się bardzo często. Myślę, że mógłbym stworzyć jedną klasę, której instancje obsługiwałby takie zdarzenie.

Myślę, że powinienem wrócić do tego aby kod aktualizujący i rysujący obiekt, był częścią tego obiektu. Rozmiary funkcji update oraz draw są przesadnie duże. Tym bardziej, że większość znajdującego się w nich kodu, była podobna (szczególnie w draw).

Muszę też pomyśleć nad bardziej uniwersalną klasą obiektu przedstawiającego byt w grze.

Mimo to uważam, że warto czasem poświęcić trochę jakości po to aby spróbować czegoś nowego i poeksperymentować. Szczególnie jeśli dopiero zaczyna się naukę.

Oczywiście nie ma co też nabierać złych nawyków. Dlatego postaram się nie popełniać tych samych błędów… zbyt wiele razy 🙂

I to tyle jeśli chodzi o grę z wiedźmą. Czas zacząć pracę nad grą na luty. Mam już parę pomysłów, ale nie będę ich zdradzał. Pierwszy post opisujący grę z lutego pojawi się najpóźniej na początku drugiego tygodnia miesiąca. Jeśli nie chcesz przegapić nowości zachęcam do polubienia mojej strony na facebooku. Na bieżąco zamieszczam tam informację o nowych postach.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *