Making game in five or so hours

Yesterday I accomplished something I wanted to do in long time – made (almost) full game in short time.

The game is endless runner, where player controls team of soldiers charging towards enemy.

It’s on GitHub , here.

Game was made in GameMaker.

Now, the question that propably is in your head – Why?

That’s the game design strategy of one of my favourite game designers – Jonatan Söderström (aka. guy who was co-creator of Hotline Miami (Hotline Miami is one of my favorite games FYI)) .

And it kinda works. Putting myself on strict time limit made me focus more on game mechanics. I had only few hours to make something that is engaging. Of course, it’s still a prototype, but prototype that shows basics of a game.

I will work more on that in future.

Reklamy
Making game in five or so hours

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…

Game Maker & Chill #16 – jeszcze trochę

skren

Gra jest gotowa w 95%. W sobotę nastąpi „Wielka Premiera” 🙂

Oprócz dodania kilku sprite’ów i jednej nowej muzyczki prawdopodobnie usunąłem pewnego buga, który powodował, że mina mogła pojawić się na pozycji startowej gracza. Nie było to zbyt przyjemne. Dokonałem następującej modyfikacji Creation Code’a:

mX=0
mY=0
count=round(random_range(5,15))
//count=60

for(i=0;i<count;i++){
    mX=round(random(room_width))
    mY=round(random(room_height))
    if(!(mX==obj_Player.x+64||mY==obj_Player.y+64||mX==obj_Player.x-64||mY==obj_Player.y-64))instance_create(mX,mY,obj_Mine);
}
obj_Player.disarmers_left=obj_Mine.instance_count+round(random(3))

Jak pewnie się domyślacie jeszcze bardziej zwiększyłem losowość gry. Chciałem przez to
wzmocnić uczucie niepewności jakie powinno być obecne przy wchodzeniu na pole minowe.
Dodatkowo saper po śmierci traci wszystkie rozbrajacze i następny musi je podnieść.
Dodałem też efekt „shaky cam” przy eksplozji. Eksplozje zresztą mają teraz odpowiedni
efekt dźwiękowy.
To tyle na dziś!
 

Game Maker & Chill #16 – jeszcze trochę