Project Spark - kurs tworzenia gier część 2, projektowanie lokacji w grze
17.01.2014 | aktual.: 20.03.2014 09:33
W pierwszej części kursu poznaliśmy podstawy programowania logiki w grach. W tej części naszym zadaniem będzie wymodelowanie jakiegoś prostego świata. W kolejnych lekcjach chciałbym zachować ten rytm. Jedna lekcja o programowaniu, jedna lekcja o modelowaniu. Tak by całość pozwalała na sprawną naukę. Bo tak jak wcześniej napisałem Project Spark to wehikuł czasu który cofa nas do lat 90‑tych gdy gry pisane były przez jedną lub dwie osoby. Musimy wiec nie tylko potrafić programować logikę gry ale także stworzyć własne poziomy. Jedno bez drugiego nie może istnieć. Naszym dzisiejszym zadaniem będzie zbudowanie domu Bag End należącego do Bilbo Bagginsa.
Project Spark posiada bardzo zaawansowany edytor do modelowania przestrzeni z pełnym zestawem narzędzi wymaganych do stworzenia dowolnego poziomu. Mamy narzędzia do dodawania/usuwania bloków terenu, do łagodnego rozszerzania/drążenia, wygładzania/wyostrzania a nawet specjalny filtr który przekształci nasz poziom na podobieństwo Minecraft. W ramach poziomu możemy dodawać setki obiektów gdzie przy każdym możemy definiować nie tylko jego kolory ale także zasady fizyki a nawet skrypty sterujące. Zapomnijmy o krzesłach, stolikach których bohater nie mógł przewrócić, jedna zmiana parametru i na element będą działały prawa fizyki które dodatkowo możemy modyfikować. Poza możliwością modelowania terenu i używania obiektów możemy także w pełni kontrolować oświetlenie. Od prostych spraw takich jak wybór pory dnia, pozycji słońca po pojedyncze źródła światła. Gdzie każde źródło światła poza podstawowymi parametrami może mieć własny skrypt sterujący jego zachowaniem. Ostatnim elementem jest obsługa kamery co także jest częścią modelowania świata ponieważ w poszczególnych miejscach możemy ustawiać konkretne ujęcia. Kto pamięta Alone in the Dark ten wie jak ważna jest odpowiednia praca kamery by budować klimat lub kierować gracza w odpowiednie miejsca. Możliwości są więc nieograniczone i bardzo trudno będzie je wszystkie opisać. Ale postaram się pokazać przynajmniej podstawy
Modelowanie terenu
Tworzymy nowy projekt i wybieramy pędzel ADD który służy do dodawania lub odejmowania pełnych fragmentów terenu. To najprostszy pędzel który w przeciwieństwie do pozostałych nie posiada parametru intensywności. Teren jest dodawany lub odejmowany a więc pędzel idealnie nadaje się by wymodelować wzgórze. Następnie wybieramy pędzel EXPAND odpowiedzialny za rozszerzanie by zapełnić braki terenu i całość wyglądała porządnie. Gdy nasza górka jest gotowa wracamy do pędzla odejmowania by wydrążyć w niej naszą willę Bag End. Najlepiej zrobić to pędzlem w kształcie walca ponieważ najłatwiej się go kontroluje. Możemy także użyć wygładzania co jest przydatne jeżeli zrobiły nam się schodki przy modelowaniu ścieżek które zmieniają wysokość
Ważna uwaga praktyczna. Project Spark obsługuje każdy rodzaj kontrolera. Możemy modelować za pomocą myszki czy gamepada ale ja osobiście polecam tą drugą metodę. Modelowanie przestrzeni 3D jest dużo wygodniejsze jeżeli możemy się naszym pędzlem poruszać wygodnie w trzech wymiarach co jest niemożliwe w przypadku myszki. W przypadku kontrolera mamy dwa analogi które pozwalają nam wygodnie poruszać się w poziomie, rozglądać, przybliżać. Wszystko kilka razy szybciej bo bez konieczności przełączania trybów obsługi myszy. Oczywiście w dalszym ciągu warto mieć pod ręką klawiaturę by nadawać nazwy zmiennym ale sam gamepad jest dużo wygodniejszym narzędziem do modelowania 3D niż myszka. Pełny układ kontrolera jest następujący:
- X/Y - przesuwanie pędzla w pionie (niezależnie od kierunku obrotu kamery)
- Lewy analog - poruszanie pędzla w poziomie (niezależnie od obrotu kamery)
- RB + Lewy analog - przybliżanie oddalanie kamery
- Prawy analog - rozglądanie się kamerą
- LB + Prawy analog - zwiększa lub zmniejsza pędzel
- LB + Krzyżak na boki lub lewy analog - wybieranie skalowania lub rotacji obiektów
- Prawy trigger - selekcja obiektów oraz wybieranie
- Lewy trigger - przyciągnięcie obiektu do terenu
- Krzyżak lewy i prawy - wybieranie obiektów z menu
- Krzyżak w górę - otwiera galerię obiektów i tekstur
- Krzyżak w dół przez 1 sekundę - aktywowanie grida
- Select - wycofywania poleceń
- Start - menu aplikacji
- RB + A - centruje kamerę na graczu
- RB + B - szybki wybór kilku widoków na zaznaczony obiekt
- LB + Y - edytor skryptów czyli Brain
- LB + B - edytor bohatera
- LB + X - usunięcie obiektu
- LB + A - edytor właściwości obiektów
Teksturowanie terenu
Teksturowanie w przypadku Project Spark jest banalnie proste. Mamy kilkanaście slotów do których przypisujemy wybrane tekstury. Co jest dosyć nietypowe to takie tekstury to nie tylko płaski kolor jak w klasycznych narzędziach ale także animowane obiekty 3D. Dodatkowo taka trójwymiarowa tekstura dostosowuje się do powierzchni. Tak wiec wybierając jedną z nich możemy malować trawę na powierzchniach poziomych podczas gdy ta sama tekstura użyta na powierzchni pionowej rysuje animowane trójwymiarowe pnącza. Bardzo przyspiesza to modelowanie poziomów. Pędzel teksturowania posiada współczynnik intensywności więc możemy łatwo mieszać nasze tekstury. Przykładowo rysując łąkę a następnie z mniejszą intensywnością porozrzucać kamienie lub inne obiekty powiązane z teksturami. Kolorujemy więc nasz teren zgodnie z naszym gustem. Warto pamiętać że zmiana zawartości slotu zmienia nam wszystkie jego użycia w ramach poziomu co ułatwia testowanie. Można przykładowo zmienić trawę w śnieg itp.
Korzystanie z obiektów
Gdy mamy już zarys naszego wzgórza to zaczyna się najważniejsza faza modelowania terenu czyli umieszczanie obiektów. Od prostych obiektów typu kamienie i drzewa bo skomplikowane złożenia które sklejamy w całość. W Project Spark nie możemy tworzyć własnych obiektów więc musimy składać interesujące nas przedmioty z innych. Tak jak w przypadku kloców LEGO. Przykładowo na naszym poziomie potrzebowałem okrągłych drzwi które są charakterystycznym elementem Hobbitonu. Jednak wszystkie dostępne drzwi są prostokątne. Robimy więc złożenie kamiennego okręgu z klasycznymi drzwiami. Puste przestrzenie po bokach uzupełniamy obiektami desek. Gotowy obiekt sklejamy w nasz własny Assembly i zapisujemy go w naszej galerii. Od tej chwili możemy w każdym domu hobbita dodawać okrągłe drzwi.
Drugą ważną opcją jest edycja właściwości. Project Spark pozwala nam nie tylko na zmianę takich prostych właściwości jak kolekcja kolorów. Mamy pełną możliwość edytowania zachowania takiego obiektu. Możemy modyfikować jak działa na dany obiekt fizyka przykładowo wysadzając na kawałki drzwi które przed chwilą skonstruowaliśmy. Ewentualnie definiować pełne skrypty modyfikując mózg danego elementu. Obiekt jabłko domyślnie posiada skrypt pozwalający na jego zjedzenie który uzupełni nam żywotność. Jest to gotowy skrypt który oczywiście możemy dowolnie zmieniać. W naszym poziomie głownie zmieniamy kolory poszczególnych obiektów oraz ich wielkość. Dodajemy obiekty tak by wynik był zbliżony do naszej wizji domu hobbita
Ustawianie parametrów świata
Ostatnim elementem którym będziemy się zajmowali w trakcie dzisiejszej lekcji jest światło. Nasz dom posiada latarnię ale jest to tylko obiekt trójwymiarowy który nie jest źródłem światła. By latarnia świeciła musimy umieścić osobny niewidoczny obiekt symbolizujący źródło światła. Taki obiekt posiada sporo właściwości dzięki któremu możemy zmieniać jego kolor itp. Jak każdy obiekt w Project Spark posiada on także własny skrypt mózgu więc źródło światła możemy ręcznie oprogramować tak jak tylko sobie to wyobrazimy. Gotowe światło możemy połączyć z obiektem latarni i zapisać w jak nasz Assembly. Jest to szczególnie przydatne jeżeli zdecydowaliśmy się dodać jakąś bardziej zaawansowaną logikę. Ułatwi nam to dodawanie wielu obiektów tego samego typu oraz ich szybką modyfikację
I to byłoby na tyle. Wymodelowanie domu naszego hobbita zabrało mi dwie godziny od pomysłu do działającej gry. Zrobienie całego miasteczka z gotowych prefabrykatów które stworzyliśmy zabrałoby jeden weekend. A później wystarczyłoby wymyślić jakieś ciekawe zadania, dialogi i po tygodniu mielibyśmy naszą własną grę przygodową. Gra posiada także masę gotowych skryptów wzorcowych które pozwalają nam na szybką naukę programowania ale tym zainteresujemy się w kolejnej lekcji.
W następnym odcinku...
Plan na kolejny odcinek kursu to ścieżki ruchu które możemy wykorzystać do kontrolowania działań postaci NPC, poruszania mechanizmów typu windy lub ruchu kamery. Dodatkowo omówiłem także działanie systemu przekazywania energii który jest odpowiedzialny za aktywowanie się skryptów. Trzecia część kursu znajduje się pod tym linkiem. Zapraszam także do przeczytania poprzedniego wpisu o programowaniu logiki
Od dziś Project Spark jest dostępny dla każdego za darmo
Od 18 marca 2014 nie są wymagane klucze beta. Każdy może ściągnąć aplikację i tworzyć własne gry bez potrzeby wcześniejszej rejestracji. Zlikwidowano także abonament Spark Time który wcześniej ograniczał możliwość grania w gry używające DLC. Teraz każdy może grać we wszystko za darmo nawet jeżeli nie odblokował samemu zawartości DLC.
Project Spark - Sklep Windows 8.1
Na potrzeby tego kursu założyłem dodatkowe konto w grze gdzie będę publikował kod dla poszczególnych lekcji. Aktualnie są tam tylko najnowsze lekcje. Zapraszam. SatiricalCrab94.