edytor gier + silnik w jednym (tak, robię własny silnik).

Zmieniło się trochę.

Nie tylko robię edytor, ale i cały silnik do gier w JavaScript (nastawiam się na 2D).

Dlaczego? Cóż, zacząłem robić ten edytor na frameworku Phaser, co początkowo dało mi kopa. Phaser ma bardzo dobre wsparcie, dużo przykładów i świetne community. Na każdy problem mogłem znaleźć szybko odpowiedź w necie. Phaser posiada również dużo przydatnych ficzerów do obsługi sprajtów (częściowo wziętych z biblioteki Pixi).

Więc mogłem zrobić szybko mój prototyp edytora.

Problem jednak w tym, że Phaser to framework, więc tak jak każdy framework - ogranicza. Ciężko zrobić coś większego, dopasować to pod swoje potrzeby. Dlatego postanowiłem zrobić własny silnik, dopasowany do moich potrzeb.

Czy to nie jest porywanie się z motyką na słońce i niepotrzebne odkrywanie Ameryki?

Nie. Zrobienie pewnych rzeczy samemu jest często o wiele prostsze niż walka z frameworkiem-kobyłą.

Robiąc własny silnik mogę również wszystko kontrolować, wprowadzać tam taką architekturę oraz wzorce projektowe, które ja chcę a nie narzucone przez framework. Mogę używać takich struktur danych, jakich potrzebuję, a nie takie do jakich zmusza mnie framework.

Mój kod staje się mniejszy/prostszy bo nie muszę robić różnego rodzaju obejść czy wrapperów na struktury Phasera. Mogę pisać kod, który trafia prosto do celu, a nie krąży bezwładnie w czeluściach frameworka.

Mogę swobodnie eksperymentować i zrobić rzeczy, które w Phaserze trudno byłoby wykonać, a pracując "na swoim" i w zasadzie w czystym JS mogę zrealizować każdy pomysł, który mi przyjdzie do głowy. Nie muszę zaglądać co chwilę do dokumentacji i sprawdzać jak co się robi. Zamiast tego po prostu otwieram edytor i piszę kod.

Pozbywam się wreszcie konieczności dołączania pliku z Phaserem, więc zaoszczędzę ileś kilobajtów transferu. Jedynie korzystam z P2 czyli z gotowej biblioteki do obsługi fizyki (czyli z silnika fizyki innymi słowy, przy czym ja robię silnik gry, a gry to coś więcej niż tylko fizyka. Więc robiąc własny silnik korzystam z "podsilnika" do obsługi fizyki).

Czyli podsumowując. Robię silnik oraz edytor w jednym. Tzn. robię silnik, żeby móc zrobić edytor. Ale jak już zrobię edytor to z kolei w moim edytorze będzie można tworzyć gry, które będą odpalać się w moim silniku. Taka synergia.

Myślę też o możliwości eksportu do różnych formatów, np. do czystego CSS (eksperymentuję z animacjami. Wygląda to na razie w ten sposób, że definiuje się klatki kluczowe i samo się potem animuje. Jak dołożę do tego jakiś fajny graficzny interfejs to może z tego wyjść niezły graficzny edytor animacji CSS).

Przemyślałem również pewne rzeczy w interfejsie.

Jeśli widzieliście inne edytory gier 2D, to tutaj możecie być zaskoczeni, bo mój będzie nieco inny. Będzie mniej śmieci. Więcej rzeczy będzie się robić wizualnie zamiast edytować ręcznie właściwości liczbowe obiektów (czyli zmieniłem koncepcję w stosunku do poprzedniej).

Czyli chcesz przesunąć obiekt? to chwytasz go i przesuwasz, a nie edytujesz ręcznie współrzędne. Chcesz dodać jakieś zachowanie do obiektu? No to klikasz w ikonkę zachowania, następnie klikasz w obiekt i się dodaje. Just like that.

Komentarze

Popularne posty z tego bloga

Dlaczego nie da się nadgonić frontendu

Absurdy Rekrutacji 2023

Przygody juniora (1)