Jason. Cała informatyka w jednym miejscu!

Dzisiejszy materiał będzie w całości dotyczył przedstawienia moich teorii co MUSI dzisiaj w sobie mieć nowo tworzony silnik gry, żeby mógł stanowić poważną konkurencję wśród potężnych produkcji takich jak "Unity", "Godot", "CRYENGINE" czy "Unreal Engine". Gdyby ktoś z Was chciał się zabrać za projektowanie własnego tak ogromnego oprogramowania jakim jest silnik gry, może będę w stanie coś cennego podyktować? Podkreślam, że nie mam za sobą żadnego skończonego projektu silnika, zatem to są tylko moje rady jakie miałbym na względzie, gdybym ja się zabrał za taki bardzo poważny projekt.

SILNIK GRY ZAJMIE ZDECYDOWANIE WIĘCEJ CZASU NIŻ SAMA GRA

Na samym początku chcę podkreślić jedną sprawę. Pisanie własnego silnika to musi być bardzo skrupulatnie przemyślana decyzja. Jeżeli się decydujecie na pisanie nie tyle własnej gry (co już sama w sobie zajmuje sporo czasu) tylko całego narzędzia do wytwarzania własnych gier, musicie być przygotowani na to, że to może potrwać nawet LATA. Ja nie straszę ani nie zniechęcam tylko pragnę zaznaczyć, że w dzisiejszych czasach możliwości procesora zostały już wykorzystane do oszałamiającego poziomu przez innych ludzi i nie wystarczy fakt, że umiecie tworzyć graficzny interfejs użytkownika, żeby dynamicznie zmieniał podgląd sceny gry. Dzisiaj już nikomu tym nie zaimponujecie :(.

O tym, co to w ogóle jest silnik gry, pisałem już w zeszłym tygodniu, dlatego też przez cały niniejszy wpis będę interpretował go w ten sposób, że chodzi o utworzenie własnej aplikacji z edytorem wizualnym, możliwością wygodnego eksportu itd. Wygodnie się w nim klika, ale dużo ciężej projektuje. Nie jest tajemnicą, że przy takim poważnym projekcie zwykle musi pracować co najmniej setka ludzi, żeby postępy przychodziły w miarę szybko.

Logo programu "Unity" (silnik gry)

Aby w dzisiejszych czasach nasz silnik gry stanowił konkurencję dla tytułów kategorii "Unity", MUSI spełniać kilka istotnych czynników mających wpływ na komfort, swobodę oraz możliwości.

Źródło: Wikimedia

CZYNNIKI STANOWIĄCE MINIMUM ABSOLUTNE

Oto w mojej ocenie podstawowe podpunkty, które w dzisiejszych czasach MUSI spełniać każdy własnoręcznie tworzony silnik gry, żeby miał szansę być szerzej wykorzystywany przez społeczność:

  1. bogata dokumentacja wszystkich funkcjonalności oferowanych przez program (jak się dostać do pewnej opcji, co ona daje, jakie ma ustawienia itp.)
  2. dążenie do jak najszybszego działania wszystkich okien wchodzących w skład silnika (możliwość szybkiego testu poziomu, jak najkrótszy czas uruchamiania programu)
  3. obsługa wygodnego i bezproblemowego importowania plików różnych formatów (np. obsługa MIDI, odczyt plików graficznych, import poprzez "drag and drop" - wygoda też jest BARDZO istotna)
  4. regularne aktualizacje poprzez dodawanie nowych funkcjonalności i usprawnienie już istniejących (silnik gry MUSI być cały czas odświeżany)
  5. pełne wsparcie platform przy eksporcie gry np. HTML5, PlayStation 5 lub Nintendo Switch (im więcej, tym lepiej)

W ostatnim punkcie podkreśliłem słowo "pełne" nie bez przyczyny. Chodzi mi o całkowicie bezproblemowe działanie gry pochodzącej z tego silnika w tym sensie, żeby jedna funkcja odpowiadająca na przykład za sterowanie, działała IDENTYCZNIE na każdej platformie. Czyli wykrywanie naciśnięcia przycisku nawigacji w lewą stronę na klawiaturze będzie "strzałką w lewo", na konsoli będzie przechyleniem gałki w joysticku w lewo, w smartfonie z Androidem będzie przechylenie w lewo wirtualnej gałki umieszczonej gdzieś na ekranie i najlepiej edytowalnej przez użytkownika (współrzędne, przezroczystość, grafika) i tak dalej.

Poza tym, trzeba uwzględnić inne czynniki mogące zaburzyć prawidłowe działanie gry na danej platformie z powodu jej samej struktury. Na przykład przeglądarka uruchamiająca naszą grę powinna na czas działania aplikacji ignorować odbieranie zdarzeń naciskania klawiszy ze strony języka JavaScript, bo inaczej strzałki w górę czy w dół będą przewijać stronę podczas grania! Pamiętam jak dziś jak podczas pisania przy użyciu "Phasera" miałem z tym duże problemy i trzeba było kombinować z funkcją "preventDefault" :). Mam nadzieję, że kumacie o co chodzi.

Oprócz tych najbardziej krytycznych, dorzuciłbym jeszcze możliwość ręcznego programowania w jakimś języku, tak jak ma to miejsce np. w serii programów "RPG Maker". Masa dodatkowej roboty, ale w razie gdyby ktokolwiek chciał zmienić coś, co wykracza poza wygodne klikanie (a jestem pewien, że tacy się znajdą ;)), otwieramy możliwość do "dopisania" sobie jakiejś funkcjonalności bez ograniczeń i człowiek jest jeszcze bardziej "happy" :D.


W wielkim skrócie, jeśli chcecie żeby Wasz silnik gry był rozchwytywany przez społeczność, musicie zrobić takie narzędzie żeby jak największą część tzw. "brudnej roboty" wykonywał za człowieka automatycznie i to nie tylko poprzez "WYSIWYG", ale również podczas procesu eksportowania do docelowej obsługiwanej platformy. Gdy dorzucicie jeszcze szybkie działanie, dokładne tłumaczenia w dokumentacji oraz zapewnienie, że silnik będzie przez Was co jakiś czas aktualizowany, wtedy będzie wysoka szansa na przyciągnięcie społeczności na swoją stronę. Warto się jednak zatrzymać i zastanowić się czy aby na pewno gra jest warta świeczki w dobie dzisiejszych silników? Czy nie lepiej tworzyć gier w oparciu o coś już od dawna gotowego i sprawdzonego zamiast "wynajdywać koło na nowo" :)?

PODOBNE ARTYKUŁY