0

SadBall – Tworzenie w gry Unity cz. 1

Każdy programista myślał kiedyś o napisaniu gry. Prawda?

Ja swoją przygodę zacząłem od silnika 2D Allegro napisanego w języku C++. Dzisiaj na szczęście istnieją już bardziej ludzkie silniki wspierające pisanie gier – nie ujmując nic Allegro, kiedyś na pewno zamieszczę napisaną tam grę. Takim silnikiem jest np. Unity.

Unity dla mnie ma tą zaletę, że można w nim pisać w moim rodzimym języku C#. W dodatku jest bezpłatny (na pewnych warunkach). Postanowiłem podzielić się z Tobą przebiegiem powstawania mojej pierwszej gry napisanej w Unity i opublikowanej na GooglePlay. Wpis ten otwiera cykl artykułów poświęconych tworzeniu właśnie tej gry. Grę nazwałem SadBall.

Wpis ten należy do strefy Unity oraz jest częścią cyklu SadBall, gdzie dzielę się z Tobą etapami powstawania gry SadBall. Gra ta została opublikowana za darmo na GooglePlay.  Została ona w całości napisana w języku C# w środowisku Unity. Jeżeli marzyłeś o stworzeniu swojej własnej gry, to ten cykl jest dla Ciebie!
Cały kod gry znajduje się również na GitHubie.
Zakładam, że przystępując do tego cyklu posiadasz skonfigurowane środowisko Unity. Nie jest to trudne (istnieje mnóstwo tutoriali pokazujących jak to zrobić). Jeżeli jednak masz jakieś pytania/problemy to pytaj śmiało w komentarzach.

Założenia gry SadBall

Przed przystąpieniem do pisania gry trzeba w ogóle wiedzieć co chcemy pisać. Wybór pierwszej gry jest oczywisty: MMO. Tak… Ja też się napaliłem, głupi byłem. To jest nierealne!

Na początek trzeba stworzyć coś prostego, aby zbierać wiedzę i nie zakopać się w jednym projekcie na pół życia.

Wracając do tematu, ja zdecydowałem, że będzie to gra logiczna z prostą grafiką 3D (moje zdolności plastyczne… nie istnieją). Dodatkowo określiłem kilka innych wymagań. Przedstawiam je w punktach:

  • Platforma – Android.
  • Środowisko – Unity.
  • Język programowania – C#.
  • Budżet – 0 zł, jedynie czas.
  • Kategoria – Gra logiczna.
  • Grafika – Prosta grafika 3D.
  • Muzyka – Przyjemna darmowa muzyczka.
  • Model biznesowy – Gra darmowa, w aplikacji reklamy Google.

Chciałem po prostu napisać pierwszą grę, nie liczyłem, że coś na niej zarobię. Robiłem to dla zabawy. W chwili pisania tego artykułu, zyski z reklam w grze wynoszą 31,25 zł :D. Nie zwrócił się nawet koszt konta developerskiego (nie pamiętam dokładnie, ale kosztowało coś koło 80 zł).  W Twoim wypadku też bym nie liczył, że stworzenie pierwszej gry przyniesie jakiekolwiek zyski. No chyba, że stworzysz coś super oraz będziesz umiał to rozreklamować. Mój budżet na to nie pozwalał.

Model rozgrywki

Po ustaleniu głównych założeń spróbowałem opisać to co siedziało mi w głowie i dotyczyło tego jak ta gra w ogóle będzie wyglądać.

Tutaj wspomnę co było inspiracją przy grze. Mianowicie, siedząc przy komputerze, miałem taką małą żółtą piłeczkę, która odbijałem od ściany. Czasami chciałem trafić do kosza albo w inne miejsce. Tak narodził się pomysł.

Gra miałaby polegać na doprowadzeniu piłeczki do celu. Prosta sprawa. Ale nie chciałem skupiać się na rzucaniu piłeczki, ale pokierowaniu jej tak aby osiągnęła cel. Piłeczka spadałaby bezwładnie, wykorzystując jedynie siłę grawitacji.

Jak nakierować piłeczkę? A jak to robiłem w pokoju? Wykorzystywałem otoczenie tj. meble, ściany, okna i drzwi. Tak też miało być w grze.

Jednak przemieszczanie całych mebli po scenie – które w dodatku musiałby trzymać jakąś skalę – daje bardzo mały zbiór możliwych kombinacji. Mi zależało, aby gra była wymagającą oraz każdy poziom był inny od poprzedniego. W dodatku przy komputerze również nie przemieszczałem biurka 😉.

Tak narodził się pomysł klocków. Klocki miały stanowić budulec, który po odpowiednim ustawieniu doprowadziłby piłeczkę do celu.

Mamy piłeczkę i budulec, więc pozostaje jeszcze obiekt, który musi być celem. Wybrałem pierwsze co przyszło mi do głowy tj. kosz.

Czyli wszystkie elementy są gotowe, brakowało mi tylko jednego. Swobodne opadanie piłeczki, może być… nudne. Może by tak umożliwić jakieś sterowanie? Albo jeszcze lepiej! Dać każdej piłeczce osobowość, każda posiadałaby unikalne moce, dzięki którym możliwe byłoby przejście kolejnych poziomów. To jest to! Oczywiście, na tym etapie nie planowałem jeszcze jakie to będą moce, ile ich będzie itp. Nie brałem pod uwagę również elementów otoczenia, ich kształtów i rodzajów. Podobnie sprawa miała się z klockami.

Miałem pomysł na mechanikę gry. Teraz musiałem ubrać rozgrywkę w jakieś konkretne etapy.

Etapy gry

Każda gra ma etapy, moja również musiała je posiadać. Naturalnymi etapami są kolejne poziomy do przejścia, jednak ja myślałem trochę inaczej. Chodziło mi o etapy potrzebne do ukończenia każdego z poziomów. Ustaliłem więc takie etapy:

  • Wybór poziomu (planszy) z UI.
  • Wybór piłeczki do gry na danym poziomie.
  • Etap dostosowania otoczenia. Użytkownik na tym etapie ustawia elementy otoczenia tak, aby piłeczka – wykorzystując jedynie siłę grawitacji – dotarła do celu.
  • Etap toczenia się piłeczki. Tutaj użytkownik może obserwuje jak jego piłeczka toczy się do celu. Może również użyć dodatkowej mocy piłeczki, ale tylko raz na rundę. Jeżeli piłeczka osiągnie cel, to poziom jest ukończony, jeżeli nie to użytkownik powraca do etapu budowania.

Ilość etapów była jak dla mnie odpowiednia. Główna pętla gry odbywała się w etapie 3-4, co też skutkowało stosunkowo łatwym w implementacji silniku.

Zdobywanie

Oczywiście potrzebowałem czegoś, co zachęci użytkownika do dalszej gry. Tutaj rozwiązanie nasunęło się same. Skoro będzie kilka piłeczek, to nie będę udostępniał wszystkich na raz.

Piłeczki będą odblokowywane w ramach ukończenia kolejnych poziomów trudności. W dodatku każdy poziom będzie posiadał czas, w jakim został ukończony. Zdobywając nowe piłeczki, będzie można poprawić czas, co da swojego rodzaju satysfakcję.

Jakie będą progi nagród? Czy wszystko będzie można odblokować jedynie po przejściu danych poziomów? Tego jeszcze nie wiedziałem.

CDN

Na założeniach chciałbym zakończyć dzisiejszy artykuł, gdyż stanowią one dobrą bazę wypadową do kolejnych wpisów. Postaram się opisać każdy Feature gry w osobnym wpisie, tak aby zebrany wszystkie do kupy było proste.

Jak dowiesz się z kolejnych wpisów, przyjęte założenia nie do końca były prawidłowe. W czasie implementowania danej funkcjonalności przychodziły to coraz nowsze pomysły. Wychodziły problemy, pojawiały się wątpliwości itp.

Sama implementacja mechaniki gry nie była wyzwaniem (wykluczając pewne sytuacje). Wyzwaniem okazało się utworzenie dużej ilości poziomów tj. wymyślenie zagadek logicznych tak, aby każda kolejna była trudniejsza od poprzedniej. To nad tym spędziłem prawie 2 miesiące. Ale na to przyjdzie pora…

Mam nadzieję, że dobrze się bawisz czytając ten cykl artykułów. Jeżeli tak jest oraz jeżeli sama gra Ci się podoba, będzie mi niezmiernie miło, jeżeli pobierzesz ją ze sklepu GooglePlay oraz wystawisz ocenę. Oczywiście jeżeli Ci się nie podoba, to negatywny feedback też jest ważny, daj mi proszę znać!

Na zachętę załączam zdjęcie wcześniej piłeczki oraz kilka zrzutów ekranów z finalnej wersji gry.

Pozdro!

Patryk Bogdański

Dodaj komentarz

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.