Dzisiaj troszkę nietypowo. Do tej pory nie poruszałem na blogu tematyki związanej z GameDev-em. Nie jestem broń boże żadnym autorytetem w tym temacie, ale interesuję się nim od dziecka. Moje pierwsze zabawy polegały na pisaniu bardzo prostych gier tekstowych w Basic-u dla ZX Spectrum, a potem zabaw w QBasic i Pascal-u. Bardzo chciałem (jak pewnie wielu innych) zostać programistą po to, żeby tworzyć gry. Ostatni skończony projekt, który rzeczywiście był grą napisałem na studiach na zaliczenie zajęć z programowania – wykorzystując bibliotekę Allegro, jedyną tak naprawdę dostępną w tamtym czasie w formie open source. Kiedyś programowanie gier było bardzo trudne, stworzenie czegokolwiek wymagało dobrej znajomości assemblera, potem DirectX albo OpenGL-a i z moich ówczesnych obserwacji wynikało, że większość ludzi zajmuje się pisaniem własnych silników, zamiast tworzeniem gier jako takich. Zmiana przyszła wraz z pojawieniem się różnego rodzaju darmowych i komercyjnych silników. Dzisiaj większość silników ma albo dość niski próg wejścia finansowego, albo jest wprost darmowa. Sytuacja obróciła się o 180 stopni. Wybór jest tak duży, że nie wiadomo na co się zdecydować. Dzisiaj zamiast pisać własny silnik spora ilość ludzi (wliczając w to mnie) zajmuje się eksperymentowaniem z różnymi silnikami – jednocześnie nie pracując nad grą. Pobawiłem się wieloma z dostępnych silników (GameMaker, Unity, Godot, HaxeFlixel, Love2D, Phaser) tworząc różne prototypy i w pewnym momencie doszedłem do wniosku, że to nigdzie nie prowadzi. Przecież ja chcę wreszcie stworzyć grę !
Ostatecznie od kliku tygodni tworzę wreszcie coś, co mam nadzieję nie zostanie jedynie na etapie prostego prototypu, ale skończy się czymś co uda mi się opublikować. Projekt tworzę w dość nowym i póki co mało znanym silniku Panda 2 i jemu chcę poświęcić ten wpis.
CZYM JEST PANDA 2 ?
Panda 2 jest open source-owym silnikiem napisanym w Javascript, z płatnym edytorem i pluginami. Silnik stworzony został przez Eemeli Kelokorpi i jest rozwinięciem silnika Panda, stworzonego wcześniej przez tą samą osobę. To właśnie edytor, pluginy jak i support oferowany przez autora silnika są największymi zaletami tego rozwiązania z mojego punktu widzenia.
Panda 2 jest stosunkowo prostym silnikiem, ale o dość fajnej architekturze. Ja, jako programista, zdecydowanie wolę pisać kod i obserwować tego efekty niż zklikiwać projekt z tysiąca mniej lub bardziej zagłębionych opcji w różnych okienkach. Nie jest też ograniczona jedynie do gier 2D, jest całkiem fajny plugin pozwalający skorzystać wewnątrz silnika z biblioteki Three.js
Poniżej małe promo-video stworzone przez autora. Mam tę przyjemność, że wykorzystał w nim fragment maila, który napisałem do niego krótko po zakupie.
JAKIE WIDZĘ ZALETY PANDA 2 ?
- Zapłaciłem raz i za kwotę ok 100$ (wcześniej był inny model sprzedażowy niż obecnie) mam lifetime support jeżeli chodzi o kolejne wersje, pluginy i template-y.
- Świetny, wieloplatformowy a zarazem lekki edytor, który pozwala na bieżąco śledzić efekty pracy nad kodem. Dostępne mamy okno, w którym jest odpalona nasza gra. Gra jest automatycznie odświeżana po każdym zapisie zmodyfikowanego pliku – natychmiast widzimy efekt zmiany bez konieczności przełączania się do innego okna, kompilacji czy jakichkolwiek innych operacji.
- Zintegrowane w edytor możliwości publikowania projektu. W tej chwili, w zasadzie za pomocą jednego kliknięcia możemy publikować projekt dla web-a, Facebook Instantgames, a także dla mobilek, AndroidTV czy XboxOne
- Na każdą z platform mobilnych, a także XboxOne, istnieje aplikacja, która łączy się z edytorem i wtedy nasz projekt możemy testować wprost na urządzeniu. Co więcej – jeżeli dokonamy jakiejś zmiany i ją zapiszemy, to podobnie jak w edytorze nasz projekt zostanie automatycznie odświeżony w aplikacji testowej na urządzeniu.
- sama struktura silnika pozwala na bardzo dużą dowolność w realizacji pomysłów. Bardzo mi przypomina pod tym względem wspomniane wcześniej Allegro. Dużo bardziej pasuje mi takie rozwiązanie, niż narzucanie pewnej wizji autora silnika.
- bardzo fajnie rozwiązany system modułów i klas.
- fajne pluginy i template-y, pozwalające szybko zacząć pracę przy projekcie w kilku najbardziej popularnych gatunkach gier.
- niezwykle aktywny autor, który słucha rzeczywiście tego o czym mówią użytkownicy (wiele moich sugestii zostało wprost uwzględnionych w rozwoju silnika) i chętnie odpowiada na forum na pytania.
CZY CZEGOŚ MI BRAKUJE ?
- Dokumentacja jest jeszcze w dość wczesnym stadium, chociaż jest cały czas rozwijana
- Community jest bardzo małe, ale to być może z czasem się zmieni
- Nie ma, póki co, gier stworzonych z wykorzystaniem Panda 2, które osiągnęły by względnie jakiś sukces – a to zawsze dobra rekomendacja dla silnika
DLACZEGO NIE UNITY ? TERAZ WSZYSCY UŻYWAJĄ UNITY !
Bo w pojedynkę nie stworzę wielkiej, skomplikowanej gry – zresztą nie to mnie w tej chwili interesuje. Wolę się skupić na prostym projekcie (można by powiedzieć – casualowym), który po pierwsze da mi radość przy jego tworzeniu a po drugie pozwoli go ukończyć w rozsądnym czasie i nie stracić motywacji. Tak jak nie widzę sensu w koszeniu małego trawnika kombajnem ze snopowiązałką, tak samo nie widzę sensu instalowania i uczenia się kobyły jaką jest Unity do stworzenia prostych gier. Uznałem, że najlepiej będzie stworzyć na początek grę webową, bo daje to największe prawdopodobieństwo, że ktoś w ogóle w nią zagra – webowy eksport z Unity jeszcze póki co zostawia sporo do życzenia.
Gdybym tworzył projekt nakierowany na desktop i Steam – a albo tylko mobilki to pewnie skorzystał bym z Godot-a. Sporo się nim pobawiłem i dużo bardziej do mnie przemawiał niż Unity. Jego dużą zaletą jest też to, że jest projektem Open Source.
A DLACZEGO NIE PHASER ?
Bo nie ma tak fajnego edytora (tak, wiem, jest PhaserEditor – ale on bardziej przypomina próbę stworzenia czegoś na kształt GameMakera z wykorzystaniem Phasera, niż edytor z Panda 2. Jest też oparty na przyciężkawym Eclipse). Poza tym nie do końca mi się spodobał. Widać tam sporo naleciałości z Flixel-a a po zabawie z HaxeFlixel nie do końca byłem zadowolony z istniejących tam rozwiązań. Żeby nie było, Phaser jest fajny – bez dwóch zdań – ale Panda 2 bardziej mi pasuje.
Jeżeli jesteś, drogi czytelniku, na etapie poszukiwania silnika, w którym chcesz się pobawić w tworzenie gier polecam zapoznanie się z Panda 2. Ściągnij trial-a i pobaw się. Może przypadnie Ci do gustu, podobnie jak mnie.