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

Project Spark - kurs tworzenia gier część 1, programowanie skryptów

@GameDevProject Spark - kurs tworzenia gier część 1, programowanie skryptów12.01.2014 15:19

Kilka dni temu razem z tysiącami innych graczy dostałem spóźniony prezent świąteczny. Klucz do beta testów jednej z najbardziej ciekawych gier jaka powstała. O ile można ją nazwać grą. Chodzi oczywiście o grę Project Spark. A może bardziej poprawnie trzeba byłoby napisać edytor do tworzenia gier. Bo granica miedzy grą a edytorem dla programistów i grafików jest tutaj zupełnie rozmyta. Każdy może próbować tworzyć własne gry, każdy może grać w cudze gry a nawet otworzyć ich kod by skorzystać z wybranych fragmentów lub zrobić własną kopię cudzej gry jako remix z kilkoma zmianami. Praktycznie pełna dowolność. Można powiedzieć że to odpowiednik klocków LEGO dla każdego kto chciałby nauczyć się programować gry. I taki będzie cel mojego drugiego wpisu na blogu. Prosty kurs tworzenia gier. Dla początkujących

Plan na pierwszą lekcję jest następujący. Chcemy stworzyć bohatera dla naszej przyszłej gry. To typowy wojownik znany z RPG więc wyposażymy go w miecz oraz kuszę. Tak by mógł zarówno walczyć wręcz jak i strzelać do odległych celów co może nam się przydać gdy będziemy projektowali późniejsze zadania. Zaprezentuję także jak stworzyć mapowanie gamepada na poszczególne akcje. Zdefiniujemy przycisk odpowiedzialny za atak, za zmianę aktywnej broni oraz za jej wyciągnięcie oraz ukrycie. Tak by nasz bohater nie musiał biegać cały czas z bronią w ręku co jest domyślnym zachowaniem w Project Spark. Specjalnie wybrałem taki zestaw akcji by móc pokazać kilka prostych operacji na zmiennych, widoczności obiektów itp.

Pierwszym krokiem po stworzeniu pustego projektu. Domyślne ustawienia to gra przygodowa z trzeciej osoby. Tak więc mamy całkowicie pusty świat oraz pojedynczy obiekt bohatera. Obiekt taki ma podstawowy wygląd który możemy modyfikować zmieniając mu kolory, ubrania, dodatki a nawet przypisać do niego inne elementy z czego skorzystamy w dalszej części tego kursu. Elementy te możemy edytować w edytorze obiektów w którym znajdziemy także bardziej zaawansowane opcje jak domyślne wartości elementów takich jak prędkość ruchu, stożek widzenia czy choćby ustalić jak działa fizyka na naszego bohatera. Drugim kluczowym elementem powiązanym z każdym obiektem w grze jest skrypt zachowania. Czyli tzw. mózg. To najważniejszy element każdego obiektu i większość kursu spędzimy tworząc kolejne zasady sterowania

Jak widać domyślna logika jest banalnie prosta. Na początku mamy regułę która przypisuje naszego bohatera do drużyny pierwszej. Ta reguła posiada warunek 'Once' co oznacza że wykona się tylko jeden raz niezależnie od tego ile razy będzie przetwarzany dany skrypt. Następne dwie linijki to zdefiniowanie domyślnej kamery która w tym przypadku podąża za graczem oraz modyfikacja interfejsu tak by wyświetlał pasek z ilością punktów życia naszego bohatera. Reszta skryptu to mapowanie przycisków kontrolera na domyślne akcje. Całość skryptu ma proste wartości ale jak w każdym edytorze programowania możemy je bardzo mocno zmodyfikować lub stworzyć coś zupełnie odmiennego. W Project Spark dostępnych są setki bloków z poszczególnymi akcjami a każdy z nich można łączyć z innymi np. modyfikatorami, tworzyć wiele stron skryptu lub przełączać całe skrypty. Możliwości są w zasadzie nieograniczone. Od prostych typu atak po obliczanie wektorów przecięcia pomiędzy obiektami w przestrzeni 3D. Domyślnie nasz bohater ma przypisaną walkę do przycisku X oraz strzelanie do przycisku Y. Czeka nas więc sporo modyfikacji.

Nasza gra będzie posiadała odmienne sterowanie. Jako uniwersalny atak będziemy używali przycisku X tak by przycisk Y był wolny na jakieś przyszłe akcje. Dodatkowo zdefiniujemy przycisk LB jako wyciągnięcie aktywnej broni oraz RB jako jako zmianę aktywnej broni. Tak by gracz naciskając X domyślnie walczył wręcz ale tylko jedno naciśnięcie klawisza LB powodowało że bohater sięgnie po noszoną broń. Taki rodzaj sterowania będzie dużo bardziej ciekawy a przy okazji posłuży do zaprezentowania kilku kluczowych mechanizmów programowania takich jak zmienne.

Zacznijmy od zdefiniowania dwóch zmiennych. Pierwsza z nich o nazwie 'hero use weapon' o typie binarnym będzie określała czy nasz bohater w danej chwili trzyma w ręku broń. Druga zmienna binarna o nazwie 'hero weapon type' określi czy jest to broń ręczna czy dystansowa. Obie zmienne ustalamy z parametrem 'global' tak by móc korzystać z nich także w innych skryptach w odmiennych obiektach. Należy o tym pamiętać ponieważ domyślnie zmienne są lokalne dla pojedynczego obiektu a w jednym z kolejnych kroków będziemy się do niej próbowali odwołać z zewnątrz. Zmienne inicjujemy na początku reguły głównej z parametrem 'Once' tak by wykonały się tylko za pierwszym razem

Następnym krokiem będzie zmiana tych wartości, przypisana do poszczególnych przycisków. Wykonywane operacje to proste zaprzeczenie binarne przełączające wartość prawda na fałsz i odwrotnie. Mamy więc typową strukturę 'warunek' oraz 'akcja'. Dodatkowo kolejne reguły możemy przypisać do danego warunku stosując wcięcia. W naszym przypadku dodałem tam wywołanie drugiej strony skryptu o nazwie 'equipment' która za chwilę utworzymy. Warto zauważyć że skrytpy w Project Spark działają na zasadzie maszyny stanu więc poza wywołaniem 'call' które uruchamia daną stronę skryptu możemy także wywołać 'switch' która trwale przełączy aktywną stronę skryptu.

Kolejnym elementem będzie umieszczenie symbolu aktywnej broni na ekranie. Jest to w konieczne w naszej grze ponieważ gracz może przełączać aktywną broń przyciskiem 'RB' nawet wtedy gdy bohater nie trzyma jej w ręku. Gracz musi wiedzieć jaka broń zostanie użyta zanim zdecyduje się ją wyciągnąć przyciskiem 'LB'. Reguła jest bardzo prosta i przypomina wcześniejsza regułę domyślną która pokazywała pasek życia. By narysować symbol elementy zwyczajnie wybieramy go z galerii. Gra będzie wiedziała że reguła dotyczy grafiki 2D jako elementu interfejsy więc automatycznie zrobi dla nas odpowiednią grafikę. Całość skalujemy by odpowiednie wygladała na ekranie. Reguła powinna działać automatycznie i zmieniać obrazek broni zgodnie z wartościa zmieniającej się zmiennej 'hero weapon type'

Następnie tworzymy nową stronę w naszym skrypcie i nazywamy ją 'equipment' tak by pasowała do wcześniejszego wywołania. W zależności od ustawionych zmiennych nakazuje ona silnikowi gry wyposażyć danego bohatera w miecz lub kuszę. Obiekty te wybieramy z galerii przedmiotów. Warto zwrócić uwagę na polecenie zniszczenia poprzedniego ekwipunku. Jest to konieczne ponieważ w naszym skrypcie wybieramy obiekt z galerii jako funkcja 'create' a to oznacza każdorazowe stworzenie obiektu przy naciśnięciu przycisku zmiany broni. Jeżeli usuniemy polecenie zniszczenia aktywnie używanej broni to bohater ją wyrzuci na ziemię, tak samo stanie się jeżeli wybierzemy funkcję 'unequip'. A tym samym każdorazowa zmiana broni spamowałaby kolejne instancje przedmiotów leżących u stóp naszego bohatera.

Gdy całość jest gotowa wracamy do naszej pierwszej strony skryptu i dodajemy właściwy atak. Reguła jest oczywista. Całość powinna działać poprawnie. Gracz będzie mógł zmieniać aktywną broń zarówno gdy trzyma ją w ręku jak również gdy jest ona w ekwipunku. Gra automatycznie dostosuje dany atak do broni w jaką wyposażyliśmy bohatera. Oczywiście wszystko to możemy dalej modyfikować dodając kolejne klocki. Na poniższym przykładzie dodałem blok 'strzała z kuszy' za atakiem dystansowym który jest nadmiarowy ale pokazuje że możemy strzelić czymkolwiek.

Na tym etapie całość powinna już działać ale to nie koniec naszej pierwszej lekcji. Nie podoba mi się to że broń pojawia się w ręku bohatera znikąd a następnie znika. Nie wygląda to zbyt profesjonalnie. Zdecydowanie lepiej byłoby gdyby bohater miecz miał przypięty do pasa. By osiągać taki efekt koniecznie będzie wykonanie złożenia modelu naszego bohatera z modelem miecza. W tym celu otwieramy edytor postaci i przechodzimy do sekcji 'attachment'. W tym edytorze możemy wybrać dowolne obiekty 3D z galerii i przypiąć je do naszego bohatera. Wybieramy więc miecz i przypisujemy punkt połączenia do ciała naszego bohatera. Możemy wybrać różne miejsca ciała wiec wybieramy tułów. Następnie przesuwamy wybrane obiekty w interesujące nas miejsce, skalujemy, obracamy. Tak by miecz znalazł się przy pasie.

Gdy uruchomimy naszą grę to natychmiast zauważymy zabawny problem. Bohater ma za pasem miecz ale gdy naciskamy by użył broni to magicznie pojawia mu się w ręce nowa instancja. Tak wiec ma jeden miecz za pasem a drugi w ręce. Nie do końca to chcieliśmy osiągnąć. By rozwiązać ten problem konieczne będzie wykorzystanie unikalnej cechy gry Project Spark a mianowicie: każdy obiekt ma mózg. Tak samo jak mózg ze skyptem posiada nasz bohater tak samo identyczny mózg posiada miecz. Tym razem wiec zamiast zaznaczać obiekt bohatera zaznaczamy obiekt miecza. Gra pokazuje nam dokładnie takie same opcje jak w przypadku bohatera. Możemy zmieniać wygląd, cechy lub rozpocząć edycję mózgu naszej broni. Gdy otworzymy edytor skryptu zauważamy że domyślnie jest tam reguła pozwalająca na jej podnoszenie. Nie jest ona nam potrzebna więc możemy ją usunąć. Zamiast tego dodajemy prosta regułę ukrycia. Jeżeli nasz bohater używa miecza to ukrywam miecz przypięty do pasa. Dlatego właśnie na początku naszej lekcji ustaliliśmy że zmienne określające broń w użyciu ustalimy jako globalne. Dzięki temu są one widoczne pomiędzy obiektami

No i gotowe. Mamy postać do naszej gry. Całość będzie działała ale jeżeli chcemy by nasza gra była zrobiona porządnie to warto zająć się logiką ustalania aktywnego wroga, unikami, trybami obsługi kamery gdy mamy przeciwnika na celowniku itp. To kilka kolejnych w miarę prostych reguł. Wszystko jednak w swoim czasie. Oczywiście zależy to od zainteresowania tematem tworzenia gier w Project Spark. Jeżeli temat będzie dla czytelników DP ciekawy to spędzę czas na zrobienie kolejnych części kursu. Ale jak łatwo się domyślić jest to dosyć czasochłonne więc po ilości odsłon oraz komentarzy ocenię czy jest to temat wystarczająco interesujący. Jeżeli kogoś ten wpis zainteresował i chciałby dowiedzieć się czegoś więcej o tej aplikacji to polecam także kanał tematyczny na YouTube na którym autorzy gry pokazują poszczególne funkcje edytora

W następnym odcinku...

W następnym odcinku pokazałem jak modelować własny poziom. Modelujemy teren, używamy obiektów, ustalamy oświetlenie. Tak by finalnie stworzyć ładnie wyglądający dom hobbita. Wynik wygląda jak na poniższym obrazku. Jeżeli ktoś jest zainteresowany to zapraszam do przeczytania drugiej części artykułu

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.