Zauważyłem trend, w którym niezależni programiści odchodzili od frameworków i silników i przechodzili na używanie gołego OpenGL lub używanie go w połączeniu z SDL / SFML2. Jako niezależny programista nie widzę, co może zaoferować OpenGL niskiego poziomu w stosunku do oddzielnych silników lub platform.
Większość przyzwoitych silników i struktur zapewnia funkcjonalność, której potrzebujesz, i nigdy nie przeszkadza. Mogą również otworzyć opcję bezpośredniej obsługi OpenGL. Niektóre oferują nawet funkcję kompilacji na wiele platform!
Rozumiem aspiracje, aby dowiedzieć się, co dzieje się pod maską, ale nie widzę żadnych pozytywnych stron, które OpenGL może zaoferować niezależnym programistom w stosunku do silników lub platform.
Czy możesz wyjaśnić powód tworzenia gier od zera za pomocą OpenGL?
Odpowiedzi:
Jest to w dużej mierze oparte na opiniach pytanie / odpowiedź, więc niekoniecznie jest idealne dla tej platformy, ale w każdym razie:
Dlaczego żaden framework / silnik nie jest niezależny? Oto moje dwa centy:
źródło
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:
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ć.
źródło