Większość przyzwoitych silników i struktur zapewnia funkcjonalność, której potrzebujesz, i nigdy nie przeszkadza.
Czy oni? To zależy raczej od tego, co robisz, mówiąc graficznie.
W przypadku wielu rodzajów gier istnieją standardowe odpowiedzi na pytania graficzne. Na przykład przeciętną grę 2D można poradzić sobie dobrze dzięki sprawności 2D, na przykład XNA / MonoGame. To tylko duszki, które mogą pojawiać się partiami w terenie, mogą być obracane i tak dalej.
Ale co, jeśli twoja gra była zwykłą grą 2D, to czytasz jakieś fajne techniki, takie jak użycie mapy wysokości do zbudowania impostera, który ma wygląd głębokości w stosunku do ekranu. I chcesz to zrobić.
Teraz stosujesz normalne mapowanie, a nawet mapowanie paralaksy. Wszystko w tym samym kontekście „renderowania duszków”, ale wymaga więcej niż wielu czystych silników 2D. W szczególności wymaga multiteksturowanego „sprite blitting”, co nie jest czymś, co może zrobić wiele silników 2D.
Co robisz, jeśli Twój silnik nie może się z Tobą dostosować? Oznacza to, że musisz wykonać wiele przejść, jeden dla koloru, a drugi dla oświetlenia za pomocą normalnej mapy. Ale to nie działa, ponieważ potrzebujesz normalnego pola wysokości mapy, aby zastosować odwzorowanie paralaksy do wyszukiwania kolorów. I co teraz? Potrzebujesz alfa do przezroczystości, więc nie możesz ukraść alfa. A silnik po prostu nie obsługuje wielu formatów.
Musisz więc wybrać jedną z następujących opcji:
- Porzuć ten pomysł. Oznacza to, że Twoja gra jest funkcjonalnie ograniczona przez silnik.
- Zhakuj silnik, aby uzyskać multiteksturę. Zakładając, że masz dostęp do kodu źródłowego, zabierasz się za to, by naśladować kod innej osoby. Oznacza to również, że musisz utrzymywać i nie łamać go, gdy się potykasz.
- Zrób wszystko, co możesz, w ramach ograniczeń silnika. Możesz więc uzyskać paralaksę na normalnych mapach, ale nie na kolorach. To może nie być dokładnie to, czego chciałeś, ale jest lepsze niż nic.
Jako przykład weźmy Geometry Wars. Większość silników 2D zasysa takie wizualizacje, ponieważ większość z nich opiera się na rysunkach, a nie na liniach. To gra, która wymaga bardzo wyspecjalizowanego renderera.
Pod koniec dnia musisz wziąć odpowiedzialność za elementy swojej gry ważne dla potrzeb Twojej gry. Jeśli wygląd wizualny gry jest opracowany przede wszystkim przez styl artystyczny obrazów i modeli, których używasz, a nie przez określone efekty, to użycie gotowego rozwiązania jest w porządku. Ale jeśli styl wizualny twojej gry jest znacznie zdefiniowany przez niestandardowy kod renderowania, istnieje duża szansa, że standardowy silnik może stać się poważnym ograniczeniem, jeśli zdecydujesz się robić rzeczy, które są nieszablonowe.
Ponadto istnieje bardzo praktyczny problem: nie wszystkie silniki gier są równie przenośne.
W związku z niedawnym wzrostem platform mobilnych rynek gier rozprzestrzenił się na wiele systemów operacyjnych i urządzeń interfejsu użytkownika. Nie wszystkie silniki działają na wszystkich urządzeniach. A jeśli twój silnik nie działa na platformie, na pewno nie poświęcisz czasu, aby sprawić, by działał na jednej platformie . W końcu dlatego użyłeś silnika, prawda?
Jeśli jest dla Ciebie ważne, aby Twoja gra działała na określonej platformie, musisz ponownie wziąć za nią odpowiedzialność. A „najłatwiejszym” sposobem na osiągnięcie sukcesu jest zrobienie tego sam. Aby zbudować silnik, który może działać na wielu platformach, być może przy użyciu prostszych platform specyficznych dla platformy, w razie potrzeby do obsługi niektórych szczegółów niskiego poziomu. W ten sposób, jeśli się zepsuje, to twój kod; jesteś najlepszą osobą, która może to naprawić.