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", "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 przypuszczenia jakie miałbym na względzie gdybym ja się zabrał za taki 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ę zakładał, ż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.

Silnik gry "Unity"

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.

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, obsługa kanału alfa w obrazach PNG, 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 JavaScriptu, 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ć. Mam nadzieję, że kumacie o co chodzi.

Oprócz tych niezbędnych, dorzuciłbym jeszcze możliwość ręcznego programowania w jakimś języku, tak jak ma to miejsce np. w serii programów "RPG Maker", ale to już jako funkcjonalność opcjonalna. 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".


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ę. Nie pisałem o eliminacji bugów, bo to się rozumie samo przez się.

PODOBNE ARTYKUŁY