Dlaczego silnik taki jak Unity3D jest podkreślany w porównaniu z rodzimą biblioteką taką jak OpenGL dla początkujących? [Zamknięte]

25

Jestem tylko początkującym w grach 3D, moją preferowaną platformą jest Android. Na innym forum zamieściłem pytanie dotyczące „Czego używać: OpenGL lub Unity3d?” Wszyscy podkreślali Unity3D i korzystanie z jego wbudowanych funkcji i narzędzi, które musiałbym sam kodować, gdybym używał OpenGL. Ale potem ktoś mówi, że większość złożonych gier wymaga niestandardowych silników. Dlaczego miałbym używać silnika takiego jak Unity3D w porównaniu z OpenGL?

Aman Grover
źródło
15
Dwa słowa: natychmiastowa satysfakcja. Możesz zrobić coś „użytecznego” w jedności, nie wiedząc wiele, a uruchomienie aplikacji OpenGL zajmuje sporo linii kodu i zrozumienie szerokiej gamy pojęć.
Jari Komppa
5
Być może możemy to wyjaśnić w tym jednym wątku i wszystkie pytania „jakiej technologii powinienem użyć” znikają na zawsze. też chcę jednorożca
jhocking
8
„większość złożonych gier wymaga niestandardowych silników” - w rzeczywistości zaskakująco duża liczba bardzo udanych gier AAA została zbudowana na silnikach podstawowych, takich jak silnik Unreal .
Philipp
2
Ponadto początkujący nie będzie w stanie uczynić gry wystarczająco złożoną, aby i tak potrzebowała niestandardowego silnika.
Christian
To właśnie pojawiło się na Gamasutra i chociaż nie jest to bezpośrednia odpowiedź na to pytanie, jest istotne: gamasutra.com/blogs/ChrisDeLeon/20140426/215519/... - w szczególności będzie to bardzo trudne dla projektu, z którego zbudujesz podstawa w / OpenGL to „skromny” pierwszy projekt.
Steven Stadnicki

Odpowiedzi:

30

Myślę, że sam już odpowiedziałeś na to pytanie. Powiedziałeś „Jestem dopiero początkującym w grach 3D” . Dalej powiedziałeś „... Unity3D i używając jego wbudowanych funkcji i narzędzi, które musiałbym sam kodować, gdybym używał OpenGL” .

Zasadniczo oznacza to, że jeśli używasz samego OpenGL, będziesz pisać silnik gry, a następnie, potencjalnie lata później, pisać grę. Jeśli chcesz skupić się na grze, wykorzystaj dostępne zasoby, aby zbliżyć się do tego celu, jak to możliwe. Używanie silnika gry to najlepszy sposób, aby skoncentrować swoje wysiłki na tworzeniu gry, zamiast pisać wszystkie rzeczy potrzebne do jej stworzenia.

Zobacz to pokrewne pytanie: Jaka jest różnica między biblioteką a silnikiem a tym Czym jest środowisko gry a silnik gry?

MichaelHouse
źródło
więc OpenGL jest tylko dla grafiki, a unity3d to kompletny framework, który ma wymagania graficzne i fizyczne dla mojej gry?
Aman Grover
1
Jedność to znacznie więcej, ale tak, to właściwie różnica.
jhocking
3
@AmanGrover: zdaj sobie również sprawę, że dzięki GL „tylko dla grafiki” jest naprawdę „tylko do przesyłania poleceń do GPU”. Praktycznie cała ciężka praca grafiki musi zostać wykonana przez programistę, podczas gdy Unity ma wszystkie ważne funkcje graficzne i algorytmy włączone i gotowe do użycia.
Sean Middleditch
2
Nie pisz silników, pisz gry. Do tego kazano mi podejść. Mam na myśli to, że ktoś tworzy silnik gry podczas tworzenia rzeczywistej gry. Dlatego nie zgadzam się z Byte.
LaVolpe
28

Ponieważ początkujący z definicji nie wiedzą, co robią .

OpenGL ma ogromną krzywą uczenia się. Jasne, możesz wydać kilka poleceń glBegin, podekscytować się umieszczeniem trójkątów na ekranie, a następnie zejść z głębi końca z czymś bardziej złożonym, do czego jeszcze nie jesteś gotowy gotowy. To nie jest świetny sposób na naukę. Analogią (nieco przesadzoną) może być nauka podstawowej fizyki w szkole średniej, a następnie kierowanie Wielkim Zderzaczem Hadronów. To nie jest tonięcie lub pływanie, to pływanie lub pozostawianie dużej radioaktywnej dziury w ziemi.

Zakłada się, że większość ludzi pyta: „Chcę stworzyć grę, czego powinienem użyć?” pytanie faktycznie chce stworzyć grę (w przeciwnym razie z pewnością zadaliby inne pytanie). Więc odpowiedź jest dopasowana do pytania, a użycie istniejącego zestawu narzędzi, frameworku lub silnika jest jednym ze sposobów na osiągnięcie tych ambicji bez rozpraszania się przez agonizację nad tym, czy wywołania UBO lub glUniform są lepsze do aktualizacji pojedynczej matrycy.

Chodzi o to, aby zrobić krok po kroku, ułatwić proces uczenia się i na koniec dać coś satysfakcjonującego. Próba nauczenia się, jak stworzyć grę i jak prawidłowo korzystać z dojrzałego i potężnego API 3D w tym samym czasie, jest prawdopodobnie zbyt duża dla początkującego. To jest jak efekt Dunninga-Krugera minus negatywne konotacje. Nie wiesz, czego nie wiesz, więc tak naprawdę nie masz realistycznego obrazu dokładnie tego, co brałbyś na siebie.

Z drugiej strony, jeśli Twoim celem jest nauka OpenGL, to tak naprawdę nie chcesz tworzyć gry! Chcesz nauczyć się OpenGL, a robienie tego w kontekście tworzenia gry może być fajnym sposobem nauki, ale tworzenie gry jest środkiem do celu, a nie celem samym w sobie (a na pewno nie jedynym sposobem uczenia się OpenGL ). Prawdopodobnie nigdy go nie wypuścisz i prawie na pewno spojrzysz na niego za kilka lat i będziesz okropnie zawstydzony niektórymi głupimi rzeczami, które zrobiłeś.

Maximus Minimus
źródło
22

To naprawdę zależy od tego, co chcesz uzyskać z tego projektu. Jeśli Twoim głównym celem jest skupienie się na projektowaniu gier, prawdopodobnie lepiej będzie, jeśli będziesz mieć wbudowany silnik, ponieważ dzięki temu szybciej dostaniesz się do gry. Jeśli Twoim celem jest poznanie części programowania tworzenia gier (zwłaszcza jeśli próbujesz przygotować się do pracy w branży), prawdopodobnie przekonasz się, że praca z OpenGL będzie bardziej wartościowa. Należy pamiętać, że żadne z powyższych stwierdzeń nie jest prawdziwe w 100% przypadków.

Tak naprawdę nie ma żadnej reguły przy podejmowaniu takich decyzji. Większość odpowiedzi, które słyszysz w tego rodzaju pytaniach, to opinie, a bardzo niewiele z nich będzie całkowicie związanych z twoim projektem i zestawem umiejętności.

RyNie
źródło
Dziękuję i tak, szukam pracy w tym obszarze, więc pójdę z OpenGL.
Aman Grover
9
Zdecydowanie nie zgadzam się z tym, że praca z „czystym” OpenGL będzie bardziej cenna dla kogoś, kto wkracza do branży gier. Unity stanowi doskonały przykład nowoczesnego, stosunkowo dojrzałego silnika gry; zrozumienie funkcji, które zapewnia (z myślą o tym, jak sam możesz zapewnić podobną funkcjonalność) jest doskonałym sposobem na zrozumienie samego procesu tworzenia gier, podczas gdy OpenGL nie jest specyficzne dla gry w żadnym sensownym sensie.
Steven Stadnicki
To po prostu pokazuje, jak naprawdę nie ma żadnych zasad dotyczących tych rzeczy, tylko opinie. Wszystko zależy od tego, czego potrzebujesz / chcesz.
jhocking
5
@AmanGrover - to nie rób gry! Będziesz miał łatwiejszy czas, ucząc się jednej rzeczy na raz. Stwórz symulator układu słonecznego. Naucz się rysować podstawowe prymitywy, naucz się je tłumaczyć i obracać, umieść planety w VBO, aby narysować je szybciej, użyj shaderów do tworzenia animowanych chmur na nich, a jesteś w sporej odległości od zrozumienia podstaw.
Maximus Minimus
3
@KamikazeSoctsman Znowu nie zgodziłem się tutaj. Nie twierdzę, że OGL jest bezużyteczny - wręcz przeciwnie! - ale w ostatnim dziesięcioleciu wykorzystałem moją wiedzę na temat OpenGL tylko kilka razy w krótkich atakach i startach. Wręcz przeciwnie, ponieważ silniki graficzne gier są tak wrażliwe na wydajność, z mojego doświadczenia są jednym z najmniej powszechnych miejsc, w których nowy programista może zacząć. Powinieneś znać matematykę 3d absolutnie i powinieneś rozumieć zasady renderowania - ale to coś zupełnie innego niż nauka OGL.
Steven Stadnicki
6

Różnica jest prosta. Unity to powóz z czterema okrągłymi kołami, który może zabrać cię do miejsc. OpenGL to trociny, które można założyć w sklepie i potencjalnie wykorzystać do uformowania ulepszonego i bardziej nowoczesnego wózka i kół. To znaczy, jeśli poświęcisz wiele godzin swojego czasu na naukę tego, co ludzie wcześniej zrobili.

Twoim celem jako początkującym powinno być zbadanie istniejących wagonów i ich konstrukcji. Nie ma sensu wyrzucać wszystkiego przez okno i zaczynać od zera. Najpierw dowiedz się, co już istnieje i uzyskaj dogłębną wiedzę na ten temat. Jeśli nie, to skąd wiesz o ograniczeniach, a jeśli nie znasz ograniczeń, jak możesz je przełamać? Jaki jest sens robienia czegoś miernego, co byłoby bezużyteczne i ignorowanie wszystkich żywych narzędzi, które są już dostępne?

imho kroki raczkującego twórcy gry to:

  1. Opanuj nowoczesny framework / Engine i uzyskaj dogłębne zrozumienie go (Pomoże to również nauczyć się różnych aspektów projektowania gier, grafiki i OpenGL to nie wszystko).
  2. Stwórz z nim małą grę i dowiedz się więcej.
  3. Organicznie napotykaj przeszkody i ograniczenia w silniku.
  4. Dowiedz się więcej na ten temat.
  5. Pracuj nad ulepszeniem obszarów, które Twoim zdaniem wymagają poprawy.

Samodzielna praca nad stworzeniem czegoś, co już zostało zrobione, nie sprawi, że staniesz się cennym programistą dla nikogo, ponieważ nie będziesz produktywny w prawdzie ani dobrym uczniem w tym zakresie, po prostu skopiujesz istniejące fragmenty kodu i być może nauczysz się przeczytaj je i zrozum. Jak mówi stare Pokemon: „To nie jest bardzo skuteczne ...”.

Najgorsze jest to, że tego rodzaju podejście nie jest łatwe do nadążenia, ponieważ nie ma w nim satysfakcji, więc działasz na surowej sile woli, która została naukowo udowodniona, że ​​jest ograniczonym zasobem dla ludzi. Musisz zrobić coś, co zapewni codzienną satysfakcję, w przeciwnym razie prawdopodobnie nie będziesz w stanie jej utrzymać.

Podsumowując, silnik jest podkreślany, ponieważ można to zrobić za pomocą silnika i znacznie bardziej prawdopodobne jest odniesienie sukcesu w ten sposób. Nawet wspaniali twórcy gier polegali na wcześniejszych pracach innej osoby i taka jest natura postępu. Musisz zrozumieć duży obraz i wiedzieć, jak grać klockami Lego dostarczonymi przez innych, zanim stworzysz własne klocki Lego.

wolfdawn
źródło
4

Zakładając, że Twoim celem jest stworzenie gry, facet, który mówił o wymaganych silnikach niestandardowych był w błędzie. W każdym razie złożone gry wymagają dojrzałego silnika, który został zaprojektowany, wdrożony, zoptymalizowany, przetestowany i obsługiwany przez profesjonalistów działających w branży od dawna - lub takich, które mogą odpowiadać ich jakości (przynajmniej na potrzeby danej gry) , jeśli to możliwe.

Duzi twórcy gier budują własne silniki, ale nadal intensywnie wykorzystują je do swoich przyszłych gier. Należy jednak pamiętać, że ich budżety i rozmiary zespołów oraz wiele innych czynników są znacznie różne niż niezależnych programistów - budowanie własnego silnika może mieć znacznie większy sens biznesowy, nawet jeśli istniejące nie zawiodą pod względem technologicznym.

Oczywiście nadal istnieje błędne przekonanie, ponieważ wiele funkcji nie istnieje od razu po wyjęciu z pudełka w istniejących silnikach, że nie można ich w ogóle zaimplementować w tym silniku, ale zwykle jest to niedokładne.

Pamiętaj, że niektóre z najbardziej innowacyjnych nowoczesnych gier, takie jak Portal i Antichamber, zostały zbudowane przy użyciu istniejących silników. Niektóre dość złożone gry online, takie jak Aion i TERA, zostały zbudowane przy użyciu istniejących silników. Niektóre z najpiękniejszych wizualnie gier, takie jak Bioshock Infinite i Thief, zostały zbudowane przy użyciu istniejących silników. I oczywiście niektórzy nie. Ale chodzi o to, że nic, co kiedykolwiek widziałem, nie wymagało niestandardowego silnika.

Z drugiej strony, jeśli twoim celem jest poznanie koncepcji programowania grafiki, oczywiście OpenGL jest właściwą drogą. Ale nawet wtedy pamiętaj, że znajomość kilku istniejących silników pomoże Ci ogromnie zrozumieć, co robisz i do czego powinieneś dążyć.

TC
źródło
1
-1. Dość duże twierdzenia na temat branży gier. Większość z nich jest niedokładna. Chciałabym posypać swój wpis o kilkanaście citation neededsekund
Panda Pyjama
1
@PandaPajama W mojej odpowiedzi jest tylko jedno stwierdzenie dotyczące branży gier. Jeśli bardzo Ci to przeszkadza, możesz to poprawić lub nawet całkowicie usunąć.
TC
Moje (ograniczone) doświadczenie pokazało mi, że jeśli jest coś, o czym nie można uogólniać, to przemysł gier. Każda firma ma inny sposób postrzegania rzeczy, nawet różne zespoły w firmie mogą mieć bardzo różne zasady dotyczące wszystkiego. W tym konkretnym przypadku silniki wewnętrzne generują koszty i przynoszą pewne zalety i wady. To, czy wynikiem netto są oszczędności, czy wydatki, jest niezwykle trudne do obliczenia i będzie różne w zależności od projektu. Ponadto budżet, choć ważny, nie jest jedynym elementem branym pod uwagę przy tworzeniu gier.
Panda Pajama
@PandaPajama Przyznano, zobacz moją edycję. Po prostu powiedziałem, że może to mieć dla nich większy sens biznesowy, który obejmuje czynnik budżetu i cokolwiek innego, co pomaga w kształtowaniu ich decyzji, wskazując, że może to wcale nie być techniczne ograniczenie istniejących silników.
TC