Mamy duży projekt gry wykorzystujący Unity w szkole. Pracuje nad tym 12 osób. Mój nauczyciel wydaje się być przekonany, że jest to ważne narzędzie do nauczania uczniów, ponieważ pozwala uczniom patrzeć z poziomu wysokiego na niższy.
Rozumiem jego pogląd i zastanawiam się: czy jedność jest tak ważnym motorem w firmach tworzących gry? Czy wiele firm korzysta z niego, ponieważ nie stać ich na użycie czegoś innego? Mówi, że Unity jest dużym graczem w tworzeniu gier, ale widzę, że pasuje to tylko małym niezależnym firmom, które chcą grać jak najszybciej.
Czy uważasz, że Unity ma tak duże znaczenie w branży? Czy zagraża to wartości umiejętności C ++?
Nie chodzi o to, że nie lubię Unity, po prostu niczego się z tym nie uczę, wolę robić małe kroki za pomocą Ogre lub SFML.
Mamy również ćwiczenia praktyczne w C ++, ale są to tylko ćwiczenia z teorią, nic więcej.
Odpowiedzi:
Jedność jest w tym kontekście doskonale poprawnym rozwiązaniem. Wyobraź sobie, że sekundę ma 12 osób, z których większość wciąż uczy się C ++, pisząc przy użyciu dużej i złożonej aplikacji do gry. W czasie samego debugowania prawdopodobnie będziesz w stanie napisać kolejną grę w Unity.
Nie twierdzę, że umiejętność korzystania z C ++ nie jest ważna - szczególnie, jeśli planujesz dołączyć do głównego nurtu branży gier. Ale być może Twój instruktor ma rację w tym przypadku - wykorzystaj ten projekt jako doświadczenie edukacyjne w zakresie myślenia o tworzeniu gry i baw się dobrze. W tym procesie staraj się doskonalić swoje umiejętności C ++ za pomocą ćwiczeń, a nawet posunąć się do pisania w międzyczasie małych gier przy użyciu SFML lub innej podstawowej struktury.
Kiedy to wszystko się skończy, wiele się nauczysz, prawdopodobnie staniesz się lepszym programistą, a twój następny projekt można rozwiązać w C ++ z większą pewnością.
źródło
Jedność zyskuje na popularności w branży, głównie w mniejszych firmach. Jest to jednak doskonałe środowisko nauczania. Jest to ważne narzędzie dydaktyczne, ale niezbyt powszechne wśród głównych firm. W porządku, że tego nie lubisz.
Chciałbym jednak odnotować coś tutaj, ponieważ często widzę zamieszanie wśród studentów programowania. „Umiejętności C ++” nie są bardzo przydatne na dłuższą metę. Powinieneś szukać „umiejętności programowania” i „umiejętności projektowania”. Jeśli rozumiesz pojęcia związane z językiem programowania i sposób łączenia systemu oprogramowania, język nie ma tak naprawdę znaczenia. Nie uważam się za niesamowitego programistę, ale mogę wybrać nowy język i stworzyć użyteczny kod w ciągu jednego lub dwóch dni, ponieważ rozumiem podstawy.
Learning Unity sprawi, że będziesz lepszy w C ++.
źródło
Tak, ale „stać” to znacznie więcej niż zwykłe wartości dolara.
Tak, zestaw funkcji, które oferuje Unity Pro po koszcie, który pobierają, jest absurdalny, zwłaszcza biorąc pod uwagę fakt, że jest to licencja na miejsce zamiast licencji na tytuł.
Co więcej, jest to naprawdę łatwe w użyciu narzędzie. Nie spędzasz tyle czasu na szkoleniu artystów i projektantów, jak korzystać z potoku sztuki. Łatwo powiedzieć „po prostu przeciągnij tekstury i modele i już są gotowe.
Co więcej, jest to jedno z niewielu narzędzi, które pozwalają robić 3D w przeglądarce z dowolną regularnością. Obsługują prawie każdą platformę cieniującą, od stałej funkcji po DX9 +, a także Mac i Windows. Ta technologia sama w sobie jest nieoceniona, jeśli chcesz kierować reklamy na rosnący rynek gier opartych na przeglądarce.
Od strony programowania rzeczy, które otrzymujesz od Unity, to solidne opanowanie projektowania komponentów (w porównaniu do tworzenia własnego silnika C ++, który zwykle jest zbyt ciężki po stronie dziedziczenia), a także bardzo szybkie i wizualne środowisko do wypróbowania nasz kod gry. Mam nadzieję, że nauczysz się dobrych praktyk projektowych za pomocą Unity, które możesz przejąć w przyszłych silnikach C ++.
Jasne, dobrze jest mieć preferencje jednego języka nad drugim. Osobiście wolę C # niż C ++. Ale to, jakiego języka używasz, jest bardziej zależne od wymagań projektu niż cokolwiek innego. Deweloperzy nie mogą sobie pozwolić na bycie fanem, ponieważ nie chcesz zablokować się na rynku, ponieważ z jakiegoś powodu nie lubisz narzędzi lub języka.
Poza tym, kiedy naprawdę nauczysz się drugiego języka, zobaczysz, że przeważnie jest to po prostu wybieranie nowej składni i paradygmatów, i naprawdę tak naprawdę nie jest trudno dodawać nowe narzędzia do paska narzędzi. Tak, powinieneś nauczyć się i rozumieć C ++, ale na wysokim poziomie musisz najpierw zrozumieć dobry projekt.
źródło
Z tego, co widzę, głównym problemem nie jest C ++ ani Unity3D, ale raczej potrzebujesz rozwiązania wysokiego poziomu lub rozwiązania niskiego poziomu .
Rozwiązanie niskiego poziomu to takie, które zabrudzisz procesami przekazywania danych wejściowych, zarządzania pamięcią lub ładowania modeli. Rozwiązaniem wysokiego poziomu jest jeden zgrabny pakiet, taki jak Unity3D.
Dla mnie to, czy korzystać z Unity3D (lub innego silnika gry), czy C ++, zależy od celów twojej gry i projektu.
Użyj Unity3D, jeśli czas programowania musi być szybki i / lub twoja gra nie wymaga dużej wydajności lub nie ma wysokiej wydajności graficznej / obliczeniowej. Jeśli chcesz skoncentrować się na grze, a domyślne narzędzia Unity3D są w porządku, możesz rozważyć użycie Unity3D
C ++ z innymi bibliotekami, jeśli masz dłuższy czas programowania, gra wymaga więcej mocy obliczeniowej / graficznej lub wykorzystuje technologię, której Unity3D nie może zastosować.
Zaletą Unity3D jest to, że nadal wykorzystuje języki skryptowe, które odzwierciedlają rzeczywisty rozwój (C # lub JavaScript). Wyuczone koncepcje OOP i inżynierii oprogramowania (singletony, elewacje, automaty stanów, dekoratorzy, kompozycje) można zastosować w Unity3D. Pomaga zadbać o procesy usuwania plików cookie, takie jak zarządzanie zasobami, wykres scen, ładowanie modelu, renderowanie, zapisywanie scen itp. Jeszcze lepiej, jeśli potrzebujesz funkcji, których nie zapewnia Unity3D, możesz to zrobić Kodowanie DLL.
Gdzie to pozostawia C ++? C ++ jest językiem i istnieje wiele koncepcji programowania, które możesz zrobić w C ++ w Unity3D, bez zarządzania pamięcią lub być może w szablonach (w Unity 3.2 specyfikacje języka poprawiły się, na przykład, na zamykanie).
Jak już wspomniałem, tak naprawdę nie jest to C ++ vs. Unity3D. To bardziej „C ++ plus biblioteki / SDK lub stwórz własny silnik” vs. Unity3D. To zależy od twoich celów. W przypadku wysokiej klasy gier lub gier, w których potrzebujesz kontroli nad strumieniem renderowania lub danymi wejściowymi, możesz użyć C ++ plus silnika, który pozwala na bałagan pod maską. Jeśli nie, wybieram Unity3D jako domyślny wybór gier 3D.
Jednak wiedza na temat Unity3d nie jest pod wrażeniem, ale jest to dobre miejsce, aby rozpocząć naukę ogólnego procesu tworzenia gier. Na przykład prawdopodobnie będziesz potrzebować semestru nauki, aby napisać renderer i załadować model w OpenGL, a także podstawowy scenariusz i dane wejściowe. Zrobisz to w Unity3D w niecały dzień.
źródło
Nie, Unity3D w żaden sposób nie zagraża umiejętnościom w C ++. W rzeczywistości znajomość C ++ jest o wiele ważniejsza dla programisty gier.
Unity3D to naprawdę świetne narzędzie do tworzenia gier. Bardzo mi się podoba i poleciłbym go do prawie każdej gry, szczególnie dla małych drużyn. Ale sam Unity3D jest napisany w C ++; i musisz znać C ++ (a także kilka innych rzeczy niskiego poziomu), aby naprawdę zrozumieć, jak to działa.
Nawet jeśli korzystasz z Unity3D, tylko umiejętności C ++ i zrozumienie zasad i algorytmów na niskim poziomie pozwolą ci wykorzystać go w pełni. Nawiasem mówiąc, dotyczy to również innych silników gier.
Aby wykonać naprawdę dobrą robotę, wycisnąć każdą ostatnią wydajność z wybranej platformy i wcisnąć jak najwięcej supernowoczesnych efektów i algorytmów, nie można używać niczego poza C / C ++. Prawdopodobnie z kawałkami asemblera.
źródło
O ile mi wiadomo, zależy to od platformy docelowej, gier AAA i gier konsolowych (XBOX, Wii itp.) Zazwyczaj będą w C ++, aby uzyskać maksymalną wydajność, jednak jeśli piszesz grę opartą na przeglądarce, Unity jest również często używany.
Jednak jeśli chodzi o twoje pytanie, myślę, że po prostu dotyczy to takich narzędzi, jak Unity, które zapewniają dużą, znormalizowaną platformę do pracy, która w projekcie trwającym pół roku może stanowić różnicę między częściowo wypieczonym prototypem a dość rozbudowaną grą.
źródło
Poszedłem na studia magisterskie na kierunku grafika komputerowa i technologia gier na Uniwersytecie Pensylwanii, gdzie realizowaliśmy wszystkie nasze projekty na najniższych poziomach, z projektami w C ++, OpenGL, CUDA itp. Nasze projekty obejmowały animację opartą na fizyce, architekturę animacji postaci i IK, reprezentujący różne formy krzywych Beziera ... wiesz, naprawdę podstawowe rzeczy, które wykorzystują wiedzę specjalistyczną w zakresie programowania, algebry liniowej i rachunku różniczkowego.
Następnie pobrałem Unity i okazało się, że wszystko, co stworzyłem, tworzyłem w tym bezpłatnym pakiecie, z którego każdy może korzystać.
Czy mnie to denerwowało? Trochę, co prawda, ale odkryłem, że posiadanie takiego zrozumienia ze szkoły czyni mnie o wiele bardziej niebezpiecznym, gdy używam narzędzi takich jak Jedność. Obecnie pracuję w grach, w których wprowadzamy gry od koncepcji na rynek za niecały rok, a ja nadal jestem typowym facetem, jeśli chodzi o „takie matematyczne rzeczy”. Moja rada dla ciebie polega na przejściu ruchów; będziesz absolutnie nieoceniony, gdy wejdziesz do branży.
źródło
Mogę spóźnić się z odpowiedzią, ale pomoże to niektórym ludziom mieć ten problem.
Początkowo jestem programistą c ++, który nienawidził korzystania z silników stron trzecich (na przykład jedności), ponieważ nie czuję się tak, jakby proces uczenia się wymagał dużo.
Po wypróbowaniu jedności natknąłem się na następujące rzeczy, które muszą mieć twórca gry: poniżej wymienię konkretnie jedność, ale wymieniam zalety korzystania z perspektywy WYSOKIEGO POZIOMU.
Powyżej podano niektóre z powodów wyboru silnika wysokiego poziomu. Ale jednocześnie nie powinieneś przestać uczyć się C ++ jako najbardziej wymaganego i użytecznego języka dla idealnego twórcy gier.
Najpierw zapoznaj się z wizualizacją na wysokim poziomie i zrób kilka szybkich prototypów w Unity i wykorzystaj to doświadczenie przy projektowaniu dobrej gry w c ++.
Wkrótce wrócę do c ++, ponieważ zdobyłem dobre doświadczenie na wyższym poziomie z jednością :)
Powodzenia!
źródło
Silnik C4 stanowi dobrą alternatywę do nauki programowania gier w C ++
Istnieje również licencja akademicka http://www.terathon.com/c4engine/licensing.php
źródło