Jestem ciekawy przepływu pracy podczas tworzenia gry w Unity3D?
Czy generuje dla ciebie dużo kodu?
Rozumiem, że opisujesz grę w Unity i wykonujesz skrypty na zapleczu, aby wykonać logikę. To tak, jakbyś używał Unity do opisywania marionetek i używasz języka skryptowego jako mistrza marionetek.
Odpowiedzi:
Unity3D składa się z silnika gry oraz (dość podstawowego) edytora 3D. Zapewnia siatki, tekstury, shadery, ukształtowanie terenu, kamery, animacje, układy cząstek, próbki audio i inne rodzaje obiektów, które są przydatne w grach wideo. Obejmuje PHYSX (zastrzeżony silnik fizyki należący do Nvidii) oraz Mono (implementacja Open Source Runtime Common Language, znanego również jako .NET).
Ile z tego wykorzystasz, zależy od ciebie. Możesz reprezentować wszystkie swoje struktury danych jako obiekty Unity, budować swój świat w edytorze Unity, włączać fizykę i pozwolić, aby wydarzenia potoczyły się przy minimum skryptu. Alternatywnie, możesz wyłączyć silnik fizyki, skonstruować swój algorytm algorytmicznie i jawnie zaprogramować całe zachowanie i fizykę obiektów.
Możesz zaprogramować zachowanie całkowicie w Mono (używając jednego z języków C #, JavaScript lub Boo), lub możesz napisać je w innym języku i połączyć z projektem Unity. (Rzeczywista integracja z obiektami gry musi odbywać się przez Mono, ale może to być dość cienka warstwa, jeśli chcesz).
Przepływ pracy jest prawie taki sam jak w przypadku dowolnego silnika gry. Artyści tworzą modele, tekstury i animacje, specjaliści audio wydają dźwięki, programiści piszą shadery i zachowania.
Społeczność programistów Unity jest bardzo pomocny, zarówno w answers.unity3d.com i forum.unity3d.com . (A może tutaj na Stack Exchange?)
Najlepszym sposobem, aby się tego dowiedzieć, jest wypróbowanie : wersja podstawowa jest bezpłatna, a dla wersji „Pro” masz 30-dniowy okres próbny.
źródło
Unity3D to bardziej opakowanie / biblioteka niż silnik do gier typu „przeciągnij i upuść”. Nie generuje kodu ani nie jest dostarczany ze zwykłymi skryptami.
Na przykład Unreal ma domyślną kamerę FPS, kontroler postaci, wykrywanie kolizji i sztuczną inteligencję.
Nie masz nic takiego w Unity3D. Unity3D to pętla gry, oparty na komponentach system encji, obszerna biblioteka matematyczna, która umożliwia ładowanie multimediów, obsługę siatek, kamery, GUI w trybie natychmiastowym, shadery, potok renderowania i inne funkcje niskiego poziomu. Plus miły edytor. Musisz się martwić o funkcjonalność na wysokim poziomie. Na przykład nadal musisz zakodować swój własny aparat pierwszej osoby (jeśli nie używasz domyślnego). Jednak nie trzeba zajmować się obliczaniem wektorów spojrzenia i tym podobnych.
Unity3D nie generuje żadnego kodu dla twojej gry, ściśle (generuje kod do uruchamiania gry, aby być bardziej dokładnym, ale żaden dla twojej gry)
Będziesz musiał użyć interfejsu API, aby zdefiniować swoją grę. Możesz spojrzeć na przykłady dostarczone z Unity3D i ponownie użyć tego kodu; istnieje kilka wstępnie zdefiniowanych skryptów, ale zwykle musisz dostosować je do swoich potrzeb.
Grę tworzysz za pomocą skryptów; piszesz skrypty zachowań, projektujesz poziom w Unity3D i przypisujesz te zachowania podmiotom (lub obiektom gry). Jest bardzo elastyczny, ale nadal wymaga wysiłku, aby napisać grę. Porównałbym to do Flasha dla 3D.
źródło
Powierzchnia Unity3D wygląda na bardzo łatwą i prawie wszystko jest w wersji wstępnej, ale żadna z nich nie jest prawdą. Jeśli zignorujesz użycie już istniejących skryptów (które istnieją dla każdego silnika, wadę Unity) i wtyczek, które opisujesz jako nieco potężne, czym na pewno nie są, Unity to tylko interfejs programistyczny z edytorem.
Większość kodu masz samodzielnie. Doświadczyłem tego w 2 różnych projektach.
źródło
Analogia z lampą błyskową jest całkiem słuszna, ale tak naprawdę nie rozumiem twojej analogii z lalkami.
Dobre cechy jedności to:
Złe rzeczy:
W Unity nie podoba mi się to, że czuję, że cała ciężka praca została wykonana, więc programiści są o wiele mniej wartościowi. Z drugiej strony jest świetny do szybkiego uczenia ludzi, jak szybko budować rzeczy.
Podsumowując: Unity (lub narzędzie takie jak Unity) jest bardziej przeznaczone dla artystów, którzy nie mogą dotrzeć do świetnych programistów, ale nadal potrafią wykonywać skrypty. OCZYWIŚCIE możesz stworzyć w pełni funkcjonalną grę, dodać realistyczne IA, robić kod sieci mmo i co nie, ale duże firmy nie użyłyby Unity.
Modele programowania pozwalają zaproponować rozwiązanie, które odpowiada 3/4 narzędzi programistycznych, tak aby pasowało do tych „niezależnych” twórców gier. Ceni jedno narzędzie, a także artystów, ale nie programistów (z wyjątkiem oczywiście tych z zespołu jedności).
Unity to dobry skrót dla nie-programistów, ale muszą zrozumieć, że gry wideo pochodzą z linii kodu i że nie można zrobić wszystkiego za pomocą niesamowitego narzędzia. W pewnym momencie wymaga znajomości programowania niskiego poziomu.
Mając na uwadze osobisty projekt, nie używałbym Unity, ponieważ nie lubię C # ani Boo (Panda jest dobra w Pythonie, więc po co zawracać sobie głowę komercyjnym oprogramowaniem?), A ponieważ jeśli pokażę mój projekt i zrobię to z jedność będzie znacznie mniej imponująca.
źródło
Unity wymaga pisania skryptów, ale bez wszystkich szablonów. W typowej grze OpenGL musisz zainicjować matryce i kamery jak szalone. W Unity tworzysz skrypt informujący o zachowaniu czegoś, a następnie dołączasz go do obiektu, aby działał.
źródło
Jeśli generując dla ciebie dużo kodu, dołączasz wstępnie zbudowane funkcje, których możesz użyć, aby ułatwić sobie życie w zakresie wykrywania kolizji i obliczeń obrotu (Biblioteka), to tak, zabiera dużo kodowania z obrazu i daje zoptymalizowałeś wersje pod ręką i gotowe do pracy. Głównie funkcje, które będą potrzebne specjalnie do tworzenia gier we wszystkich wersjach.
Może to wydawać się zbędne, ale z mojego doświadczenia wynika, że gdy Unity3D nie zajmuje się awarią lub budowaniem, ułatwia mi życie, pozwalając mi zmieniać cokolwiek chcę i pozostawić matematykę opartą na Quaternion ludziom, którzy mają tytuł magistra matematyki. i wciąż ufaj mi na tyle, że mogę zmienić wszystko, co chcę.
Nic dla ciebie nie napisze, raczej pomoże ci w sposób, który uważa za najlepszy i pozwoli ci napisać, co chcesz.
Jednym słowem: elastyczny
źródło