Blog (8)
Komentarze (30)
Recenzje (0)

Project Spark - kurs tworzenia gier część 3, ścieżki ruchu, praca kamery oraz intro

@GameDevProject Spark - kurs tworzenia gier część 3, ścieżki ruchu, praca kamery oraz intro22.01.2014 17:56

W tej lekcji nauki programowania gier spróbuję pokazać jak zrobić przerywnik filmowy. W tym celu poznamy mechanizm definiowania ścieżek kontrolujących ruch elementów, interakcji oraz przekazywania energii. Dzięki temu będziemy mogli w naszych grach tworzyć różne ruchome mechanizmy typu platformy, windy oraz ustalać zasady poruszania się dla bohaterów NPC. Nasz świat gry przestanie być nieruchomy. Jeżeli ktoś trafił na ten artykuł nie czytając wcześniejszych części to zachęcam do przeczytania wszystkich po kolei

Zaczynamy od stworzenia pustego projektu. Tym razem by przyspieszyć sobie pracę skorzystamy z jednego z przygotowanych obiektów złożonych czyli tzw. assembly. Wchodzimy do menu selekcji obiektów i wybieramy opcje wyboru z galerii. Na ostatniej zakładce od góry wybieramy sekcję złożonych obiektów i odszukujemy tam interesujący nas element. Lista obiektów jest długa i warto sobie z poszczególnymi elementami poeksperymentować by poznać różnie ciekawe mechanizmy skryptów. Znajdziemy tam także nasze złożone obiekty które będziemy tworzyć na potrzeby pisanych przez nas gier. Wybieramy obiekt 'Elevator' czyli platformę pełniąca rolę windy. Umieszczamy ją w naszym świecie.

To złożenie składa się z trzech platform, dwóch przełączników oraz jednej ścieżki czyli obiektu 'Path'. Będzie ono centralnym elementem naszej lekcji. Na obu platformach górnej i dolnej znajdują się przełączniki. Gdy jeden z nich przełączamy to środkowa platforma windy porusza się w górę lub w dół. Przyjrzyjmy się więc jaki kod zdefiniowano w jednym z przełączników. Jak widać jest tu prosta zasada która w momencie gdy ktoś użyje dźwigni to przełącza stan energetyczny obiektu. Ponieważ obiekt początkowo nie miał energii więc użycie przełącznika dodaje energię. Nie ma tu jednak żadnej informacji o tym co się dzieje dalej.

Zauważamy jednak że gdy wybraliśmy obiekt dźwigni to edytor pokazał nam że obiekt ten ma połączenie z obiektem platformy. To jest tzw. połączenie energetyczne. Mówi nam ono że jeżeli obiekt nadrzędny czyli dźwignia posiada energię to przekazuje go do zdefiniowanych obiektów zależnych. Twórca gry może powiązać dowolne obiekty ze sobą za pomocą takiego powiązania energetycznego co znacznie ułatwia zarządzanie logiką sterowania w grach. Połączenia energetyczne wybieramy z tego samego menu w którym znajduje się selekcja, wielokrotna selekcja, połączenia energetyczne oraz połączenia obiektów ze sobą

Zobaczmy więc co się dzieje z przekazaną energią w obiekcie docelowym czyli platformie 'ElevatorPlatform'. Mamy tu następującą regułę działania. Gdy obiekt zostanie zasilony energią to platforma zaczyna poruszać się po ścieżce 'Elevator path' z prędkością 0.5 z parametrem latanie. Jeżeli popatrzymy na umieszczoną w naszym świecie windę to bez problemu odnajdziemy tam obiekt ścieżki o takiej nazwie który ma zdefiniowany tor ruchu w pionie. Warto przy tej okazji zaznaczyć że każdy taki obiekt ścieżki poza nazwą posiada szereg innych parametrów. Dwa parametry są szczególnie istotne: Mover mode oraz Orientation. Pierwszy to decyzja czy ścieżka ma się wykonywać w pętli czy tylko jednorazowo, drugi to sposób zachowania się obiektów poruszających się na ścieżce. Ten drugi parametr jest bardzo istotny jeżeli po ścieżce będzie poruszał się obiekt bohatera NPC ponieważ zamiast wartości 'fixed' musimy wybrać wartość '3D'. Wartość fixed oznacza że obiekt nie może się obracać i bohater poruszający się bez obracania w kierunku ruchu wyglądałby co najmniej dziwnie. Za to wartość fixed idealnie nadaje się do projektowania w grze różnych mechanizmów.

Druga część reguły jest równie prosta. Jeżeli obiekt poruszający się na ścieżce przekroczy punkt kontrolny czyli w naszym przypadku koniec ścieżki to wyłączamy energię w przełącznikach. Dzięki temu platforma znajduje się w górnej pozycji traci energię i reguła ruchu się kończy. Gracz który aktywuje dźwignię ponownie zasili platformę i przemieści ją do pozycji dolnej. Warto też zauważyć że gracz może przełączyć dźwignię samodzielnie wcześniej w czasie ruchu platformy co ją zatrzyma ponieważ odbierze jej energię zasilającą. Całość jest bardzo prostym przykładem w jaki sposób możemy zarządzać w naszych grach aktywowaniem różnych elementów ruchomych. Oczywiście znacznik energii możemy wykorzystać na setki innych sposobów np. zmieniając aktywną stronę skryptu bohatera NPC by przełączyć go z trybu 'sen' na tryb 'patrolowanie' gdy w pobliżu aktywuje się np. syrena alarmowa itp.

Skoro wiemy już jak dodawać do naszej gry ścieżki ruchu oraz wiemy jak definiować obiektom zasady poruszania się po tych ścieżkach czas zrobić intro. W naszym filmie postać NPC zaczynająca na dolnej platformie pobiegnie do bohatera znajdującego się na górnej platformie. W tym celu będzie musiała ona wbiec na ruchomą platformę, przełączyć dzwignię, zaczekać aż winda wjedzie na górę a następnie podbiec do postaci gracza. W tym czasie gracz będzie miał zablokowane sterowanie poprzez zdefiniowanie zasady 'Disable Brain' na czas trwania naszego intra. Dodatkowo zamiast zwykłej kamery podążającej za graczem będziemy mieli naszą własną kamerę skierowaną na biegnąca postać NPC. Kamera ta będzie poruszała się po zdefiniowanej przez nas spirali. Całość z typowo filmową panoramą.

Pierwszą czynnością jaką robimy to umieszczamy naszego bohatera na górnej platformie oraz postać NPC na dolnej. To będzie nasz punkt odniesienia dla tworzonej animacji. Następnie dodajemy dwa obiekty ścieżki symbolizujące ruch naszej postaci NPC. Pierwsza ścieżka definiuje trasę ruchu wbiegania na platformę windy. Druga ścieżka zaczyna się w miejscu gdzie postać NPC będzie się znajdowała gdy wjedzie windą na górę i kończy się w pobliżu naszego gracza. Całość jest banalnie prosta. Następnie wchodzimy do parametrów każdej ze ścieżki i definiujemy wartość 3D dla parametru 'Orientation' oraz by ruch odbywał bez zapętlenia. Warto także nadać własne nazwy poszczególnym ścieżkom tak by się nam nie myliły. Nazwy nadajemy w trybie edycji właściwości naciskając na kontrolerze przycisk 'Y' co trudno zauważyć na pierwszy rzut oka

Następnie definiujemy zasady sterowania postacią NPC. Ponieważ mózg naszej postaci pracuje na zasadzie systemu reguł stanowych będziemy potrzebowali dwóch osobnych stron. Pierwsza ze stron będzie aktywna w czasie biegu po dolnej platformie a następnie po przełączeniu przełącznika przejdziemy na druga stroną skryptu która będzie się wykonywała w czasie biegu po górnej platformie. Dowolny obiekt w grze może posiadać dowolną ilość stron skryptu sterującego i dowolnie się pomiędzy nimi przełączać. Strony możemy traktować jako trwałe przełączenie strony poleceniem 'Switch Page' lub jako krótkie funkcje które wywołamy poleceniem 'Call Page'. Krótkie wywołanie po jednorazowym wykonaniu wrócą do miejsca wywołania. Warto pamiętać że aktywna reguła wykonuje się w pętli dzięki temu umieszczając polecenie biegania postać wykonuje kolejne kroki ale w dowolnym momencie jakieś inne zdarzenie może przerwać nasz stan biegu. Jest to bardzo przydatne ponieważ możemy zdefiniować przykładowo stan 'patrolowanie' gdzie nasza postać będzie chodziła po wyznaczonej ścieżce ale gdy tylko zauważy wroga to przejdzie do stanu 'atak'. Oczywiście stron skryptu może być znacznie więcej i przykładowo możemy zdefiniować stan 'unik', 'atak specjalny' itd. Można nawet zdefiniować kilka predefiniowanych mózgów i przełączać się pomiędzy nimi na zasadzie stosu co może być przydatne jeżeli mamy np. kilka typów przeciwników którzy współdzielą wspólne ogólne skrypty typu 'atak', 'patrolowanie' itd.

Nasza pierwsza strona nakazuje postaci NPC poruszać się po ścieżce Path1. Jednocześnie jej druga część definiuje warunek który uruchamia się w momencie przekroczenia punktu końcowego ścieżki. Gdy postać NPC dojdzie do końca ścieżki to aktywuje ona obiekt przełącznika obok którego stoi. Reguła ta ma znacznik pojedynczego wykonania która została mi z testów by postać nie przełączała dźwigni z każdą klatką animacji. Oczywiście druga linia tej reguły przełączy strony więc warunek nie mógłby się wykonywać w pętli bo sterowanie będzie po jednokrotnym wykonaniu na drugiej stronie skryptu

Druga strona jest jeszcze prostsza. Nasza postać NPC najpierw czeka 2 sekundy a następnie zaczyna się poruszać po drugiej ścieżce. To początkowe czekanie to czas który potrzebuje winda na przewiezienie postaci na górną platformę. Oczywiście można byłoby to napisać lepiej i sprawdzać stan czy winda dojechała na właściwą pozycję ale byłoby to niepotrzebne komplikowanie naszego kursu.

Nasze intro powinno już działać. Po uruchomieniu gry postać NPC przybiegnie do naszego bohatera wjeżdżając pod drodze windą. Jednak my niewiele z tego zobaczymy ponieważ domyślna kamera będzie skierowana na plecy naszego bohatera. Musimy więc dodać druga kamerę na potrzeby naszego intra która będzie poruszała się po wyznaczonej przez nas trasie tak by pokazywać biegnącą postać NPC. W tym celu dodajemy kolejna ścieżkę którą nazwiemy 'Camera Path'. Jest ona złożona z wielu segmentów i ma kształt spirali kręcącej się na około naszej platformy jednocześnie unosząc się w górę tak by pokazać ruch windy. Ścieżka ma ustawiony parametr 'smooth' by ruch kamery był płynny.

Następnie musimy dodać kamerę. W Project Spark kamera jest regułą którą możemy dodać do dowolnego obiektu więc nie ma znaczenia jaki obiekt będzie się poruszał po ścieżce. Jednak by całość wyglądała ładnie w czasie edycji to wybieramy obiekt 'Camera Gizmo'. Następnie definiujemy mu reguły sterowania. Na początku aktywujemy panoramę, następnie ustawiamy kamerę z pierwszej osoby jak do gry FPS i kierujemy ją na naszą postać NPC. Następnie definiujemy regułą poruszania się po zdefiniowanej wcześniej ścieżce. Gdy tylko ta reguła będzie aktywna to kamera będzie się poruszała. W naszym przypadku będzie to od razu po rozpoczęciu działania gry tak by uprościć kurs. W realnych sytuacjach oczywiście trzeba dodać jakiś warunek np. 'gdy bohater zbliży się w jakieś miejsce' to obiekt kamery może dostać energię by rozpocząć działanie jak w przypadku wcześniej opisywanej platformy.

I gotowe. Nagrany film trochę przerywa ale to kwestia oprogramowania którego używam do nagrywania pulpitu. Muszę znaleźć jakieś lepsze oprogramowanie bez limitu na 30 sekund i z płynniejszym nagrywaniem. A jak ktoś chce zobaczyć bardziej złożony projekt w którym zarówno postać jak i kamera porusza się po zdefiniowanej ścieżce to dobrym przykładem będzie gra stworzona przez Linkin Park - Guilty All The Same

Oczywiście możemy intro dalej komplikować np. poprzez zdefiniowanie efektu 'depth of field' dla naszej kamery tak by w różnych momentach działania pokazywała odpowiednie plany. Możemy także kierować ją nie tylko na całą postać ale na jej fragmenty tak by śledziła ruch dłoni postaci lub zrobiła zbliżenie na twarz. Jest kilka rodzajów kamer, różne efekty, możliwość kontrolowania focusu, pozycji, głębokości, rozmycia, filtrów... Możliwości się nieograniczone. W jednym z następnych wpisów wrócę do tematu kamery np. przy próbie napisana gry platformowej 2D gdzie ustawienie głębokości obrazu będzie kluczowa. na koniec dorzucam też link do wideo o obsłudze ścieżek zrobione przez jednego z użytkowników Project Spark, warto jego tutoriale subskrybować bo są ciekawe.

W następnym odcinku...

Wiemy już jak definiować skrypty, modelować poziomy, tworzyć zasady ruchu dla NPC ale sporo jeszcze lekcji przed nami. W następnym odcinku wykorzystamy tą wiedzę by stworzyć działający trebusz (katapultę). Będziemy mogli miotać kamiennymi kulami oraz niszczyć otoczenie. Następny artykuł znajduje się pod tym adresem

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.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.