Base.RTS -czyli pomóżmy ludziom robić RTS-y!

Wymyśliłem sobie nowy projekt. Posłuchajcie tylko.

Za każdym razem kiedy zabieram się za robienie gry w Unity czy innym Game Makerze staję przed podobnym problemem –  baza kodu. Pomimo faktu, że darmowe silniki gier komputerowych to świetne narzędzia umożliwiające w miarę szybkie zabranie się za faktyczne tworzenie gier, wciąż nie jest to niemożliwe bez umiejętności programistycznych.

Trzeba stworzyć system. To właśnie powoduje, że wielu potencjalnych twórców gier rozbija się o ścianę kodu przez którą trzeba się przebić aby rozpocząć budowanie mechanik i tak dalej. I tu pojawia się moje najnowsze dziecko – Base.RTS. Dlaczego taka nazwa? A no dlatego, że projekt będzie taką właśnie bazą – umożliwi szybkie tworzenie własnej strategii czasu rzeczywistego przy minimalnej konieczności ingerencji w kod. System będzie zawierał formę na tworzenie jednostek naziemnych, budynków, generator drzewek technologicznych i prostą sztuczną inteligencję dla gracza komputerowego.

Jeżeli uda mi się to wszystko zaimplementować, rozszerzę jego funkcjonalność o jednostki pływające i latające, prosty interfejs użytkownika i kod sieciowy.

Zdecydowałem się projekt ten zrealizować w Unity. Game Maker jest świetnym narzędziem do tworzenia dwuwymiarowych gier, ale jego język skryptowy wydał mi się trochę  zbyt chaotyczny (może to tylko moje odczucie). Poza tym Unity jest popularniejsze wśród początkujących.

Mam nadzieję, że wytłumaczyłem czym będzie ten projekt. W następnym poście pokażę fragment kodu (podam link do githuba, projekt będzie opensource’owy).

Reklamy
Base.RTS -czyli pomóżmy ludziom robić RTS-y!

Game Maker & Chill – The Road Goes On Forever… Czyli podsumowanie „Daj się poznać”

No… Udało się!

Koniecznie włącz piosenkę! Na pewno uczyni czytanie milszym.

Przez 2 miesiące pracowałem nad projektem i prowadziłem bloga. Efekty prowadzenia bloga właśnie widzisz. Klikając w ten link możesz zapoznać się ze wszystkimi dwudziestoma dwoma postami, które napisałem w ramach konkursu. Warto wspomnieć że jest to większość postów tego bloga 🙂

Co zaliczam na plus? No cóż – fakt, że pisanie tych dwóch postów tygodniowo tak wszedł mi w krew, że raczej nie odpuszczę. Blog będzie prowadzony dalej. Wkręciłem się tak mocno, że postanowiłem zakupić domenę. To dodatkowo motywuje do prowadzenia 🙂

Najważniejszą motywacją jest jednak fakt, że ktoś tego bloga czyta. Właśnie Ty drogi czytelniku uświadamiałeś mi, że kogoś interesuje to co robię. Mam nadzieję że moje posty jeżeli nawet Cię nie zainspirowały, to może pomogły ominąć błędy które popełniam.

Nie obyło się też bez potknięć. Niektóre posty pisane były na siłę. Lwia ich część to po prostu grafomiania. No ale tylko ktoś, kto nic nie robi nie popełnia błędów, co nie?

 

No ale teraz to co tygrysy lubią najbardziej, czyli projekt!

Wchodząc w ten link trafisz na mój GitHub, na stronę w dwiema wersjami gry. Wersja 1.0 zawiera jedynie tryb z losowym rozmieszczeniem min,  2.0 natomiast posiada też typowy ciąg misji, gdzie miny znajdują się na ustalonych pozycjach.

Co myślę o swoim „dziele”? Na pewno ma oryginalny pomysł. Wykrywanie min przy pomocy słuchu tworzy dosyć ciekawą rozgrywkę. Większość celów, które postawiłem sobie na początku zostało spełnionych. Jednak nie mogę powiedzieć, że jestem zadowolony z ostatecznej wersji. Uświadomiłem sobie główny problem wynikający z mojego rytmu pracy – chaos. Trochę spontaniczności jest dobre podczas prototypowania, jednak powinien przyjść ten moment, gdy cele zostaną jasno określone. Ten moment jak dla mnie nigdy nie przyszedł, co negatywnie odbiło się na efekcie końcowym.

Trochę statystyk.

  • Czas pracy: 21 lutego – 14 maja
  • 59 commitów
  • 38 sprite’ów
  • 9 plików audio
  • 7 teł
  • 32 (ale piękna liczba) obiektów gry (takie jakby klasy)
  • 10 „pokojów”
  • 2 tryby gry
  • 5 etapów w jednym trybie i mapa z losowym rozmieszczeniem min w drugim
  • Bardzo dużo kawy

 

Oczywiście „Daj się poznać” to nie tylko ja. Ilość chętnych do wzięcia udziału w tym konkursie zaskoczyła samego organizatora a w moich najczęściej odwiedzanych stronach znalazło się kilka fajnych blogów programistycznych. Wtyczka ułatwiająca tworzenie ekwipunku do Unity3D autorstwa dotnetcodera, intrygująca platformówka jsNooba czy też arcade’owy shooter Piotra to tylko te związane z grami, a przecież było tego znacznie więcej! Takie cudeńka jak aplikacja do zarządzania finansami planner podróży
czy nawet porównywanie wydajności algorytmów spowodowały, że GitHub stał się teraz lepszym miejscem.  Poziom był tak wysoki, że czasem zastanawiałem się co ja tu robię 🙂

Z resztą o tym można przekonać się samemu wchodząc w ten link.

Nie pozostało mi nic innego jak uchylić czoła kolegom i koleżankom programistom. A tym którym się nie udało… No cóż, życzę powodzenia następnym razem.

DSP2016 logo RGB color-2

Game Maker & Chill – The Road Goes On Forever… Czyli podsumowanie „Daj się poznać”

Game Maker & Chill #20 – poprawki

Dziś całą pracę poświęciłem poprawianiu kodu, głównie jego czytelności. Udało mi się jednak całkiem przypadkiem odkryć i naprawić dosyć poważnego buga, z którego nie zdawałem sobie sprawy.

Otóż jak pewnie wiecie, aby nawigować po wirtualnym polu minowym potrzebny jest wykrywacz min. Wykrywacz ten działa w trzech trybach, będę je nazywać po angielsku:

  • normal*- kiedy pikanie jest wolne a gracz daleko od min
  • caution* – pikanie jest odrobinę szybsze a gracz znajdzie się w pobliżu miny, ale nie stanowią one zagrożenia
  • danger* – gracz znajduje się bardzo blisko miny i jeden krok w niewłaściwym kierunku kończy się śmiercią, co sygnalizuje bardzo szybkie pikanie

Odpowiednie sygnalizowanie stanu graczowi jest bardzo ważne aby wiedział co ma zrobić. I w tym miejscu pojawił się problem. Otóż kiedy wykrywacz zacznie działać w trybie „danger”, ale gracz oddali się od miny nie następował powrót do trybu „caution”.

Z jednej strony ktoś może zapytać: „a co to za problem? Przecież miny mają być rozbrojone!”. Tak to prawda, ale gracz nie zawsze będzie dysponował środkami do rozbrajania i może zechcieć ominąć miny, aby trafić na przykład do miejsca ostatniej śmierci gdzie te środki odzyska. Będzie mu bardzo trudno, wykrywacz zacznie pikać jak szalony, pomimo że nie ma w pobliżu żadnych min. Może to też się przyczynić do zużywania zestawów rozbrajających na miny które nie istnieją.

Na szczęście buga udało się naprawić. Jak wspomniałem wcześniej wprowadziłem trochę porządku w kodzie i jest teraz znacznie czytelniejszy.

Dlaczego tym się zajmuję? Otóż jutro mam zamiar dokończyć ten projekt. Zrobię jeszcze kilka poziomów i dopracuję system najlepszych czasów. Potem przyjdzie czas na podsumowanie mojego udziału w „Daj się poznać”. Tymczasem zapraszam na mojego GitHuba (który trochę się zmienił) gdzie można się zapoznać z aktualnym stanem gry.

 

*nazwy trochę przypominają statusy zdrowia z Resident Evil, c’nie? 🙂

Game Maker & Chill #20 – poprawki

Game Maker & Chill #19 – ta nazwa zaczyna robić się głupia

Dziś dodawałem ekran, który wyświetla się po zakończeniu etapu. Na ekranie będzie informacja o tym, ile zajęło wykonanie misji, jaki jest rekord i ilość użytych disarmerów, a także ocena.

Z tym że oceny nie jestem jeszcze pewien. Niestety – ładna pogoda za oknem i fakt, że rok akademicki dobiega już do końca (a raczej natłok pracy z tym związany) powoduje, że coraz mniej mam czasu na dokańczanie projektu. Ale obietnica to obietnica i do końca maja pojawi się działająca i (w miarę) stabilna wersja 2.0.

Z racji że nie wiem co jeszcze napisać, wrzucam filmik w którym omawiany jest koncept grania słuchem… Czyli coś, czym Mega Minesweeper stoi 🙂

Game Maker & Chill #19 – ta nazwa zaczyna robić się głupia

Game Maker & Chill #18 – poziomy i tablica wyników

Przez ostatni czas zajmowałem się oprogramowywaniem mechanizmu przechodzenia z poziomu na poziom i tabelą wyników, która będzie przechowywała czasy ukończenia poszczególnych poziomów. Wyniki na razie przechowywane są w pliku .ini, co chyba nie jest najlepszym rozwiązaniem. Będę musiał poszukać innego sposobu. To chyba na tyle, macie jeszcze niezbyt imponujący screen, który przedstawia jak wygląda obecnie tabela wyników:

skrin13

Game Maker & Chill #18 – poziomy i tablica wyników

Game Maker & Chill #17 – jedyny słuszny early access…

Stało się! To żyje! Jest!

Nie do końca co prawda zgodnie z obietnicą (bo już jest niedziela), ale moja gra ma już swój pierwszy relase. Jest to jak tytuł posta mówi… Ten słynny, zły Early Access 🙂 Z tym że, tym razem za nic nie trzeba płacić. Gra na razie ma dostępny jeden tryb, czyli ten z randomowym umieszczeniem min na mapie. Zresztą zobaczcie sami.

Do końca #dajesiepoznac jeszcze miesiąc. Przemyślałem troszkę sprawę i „normalne” poziomy pojawią się jednak w grze. Z pewnością dodana zostanie lokalna tablica najlepszych wyników, gdyż na tych poziomach gra będzie liczyła czas rozbrojenia min (speedrunnerzy niech się szykują).

Zastanawia mnie tylko, czy gra na tym nie straci. Jeżeli będzie się pamiętać gdzie leżą miny, to uczucie wchodzenia w nieznane wyparuje.

Z drugiej strony gra w obecnej formie nie oferuje nic poza tym. Randowmowe wyzwania wciąż zostaną. Jeżeli ktoś będzie chciał masterować wyniki, to będzie mógł to robić. A jeśli ktoś zechce rzucić się w nieznane,to rzuci się w nieznane 🙂

Trochę zmieniłem strukturę plików na GitHubie, nie wiem czy słusznie… Powstał folder „development”, gdzie chowa się aktualny kod źródłowy. W folderze „buildv1.0” natomiast znajduje się binarka gry i kod źródłowy tejże binarki. Sens tego rozwiązania wydaje się jednak znikomy, gdyż GitHub udostępnia bardzo miłą i przyjemną opcję relases, gdzie można zrobić dokładnie to samo, bez robienia bajzlu w repozytorium.

Macie więc tu link do rzeczonego wydania i bawcie się dobrze, jakkolwiek trudne by to nie było 🙂

Na koniec – oto pierwszy screen który tu umieściłem. Tak troszkę nostalgia złapała 🙂

screen

Game Maker & Chill #17 – jedyny słuszny early access…