Unity3D, ile piszesz kodu? [Zamknięte]

16

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.

Joey Green
źródło
2
Możesz opublikować to pytanie w UnityAnswers . Otrzymasz o wiele lepsze odpowiedzi, ponieważ jest on bardziej skoncentrowany na jedności
Joe the Person,

Odpowiedzi:

18

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.

Gareth Rees
źródło
6

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.

Extrakun
źródło
1
To stwierdzenie jest niepoprawne: „Unreal ma domyślną kamerę
FPS
8
W rzeczywistości Unity zawiera komponenty wszystkich tych wbudowanych funkcji i wiele innych jako wtyczki do pobrania. Musisz dostosować i kodować, aby uzyskać określoną funkcjonalność, ale możesz zbliżyć się do pełnej funkcjonalności dzięki kombinacji tych składników. Nie jest to jednak tak rozbudowane jak Unreal, ponieważ nie zaczynasz od funkcjonalnego pistoletu, ale osobiście uważam, że łatwiej jest uzyskać grę (nie FPS) w Unity. Wiele z tego jest jednak semantyką - musisz właściwie zaprogramować, aby cokolwiek działało.
jcurrie33
1
Być może lepiej powiedzieć, że inne silniki gier mają ściślej powiązane podsystemy niż Unity3D. Kiedy zaczynasz nowy projekt Unity3D i nie importujesz żadnego z zasobów, otrzymujesz puste konto. Coś, co uważam za dobrą rzecz. Być może to trochę wypaczyło mój pogląd na to, dlaczego uważam, że nie ma domyślnych podsystemów. Są tylko tyle, że nie nadają się do projektów, które muszę wykonać. I to jest jedna z dobrych rzeczy w Unity3D. Łatwo jest pominąć domyślne i zakodować własne, jeśli masz na to ochotę.
Extrakun
3

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.

daemonfire300
źródło
2

Analogia z lampą błyskową jest całkiem słuszna, ale tak naprawdę nie rozumiem twojej analogii z lalkami.

Dobre cechy jedności to:

  • cross-platform: To bardzo duży plus, powiedziałbym, że jest to większy powód.
  • Silnik i implementacja wysokiej jakości, to znaczy za pomocą obiektów Unity itp.
  • Bardzo łatwo stworzyć od podstaw prostą grę, więc jest to plus do robienia prototypów.

Złe rzeczy:

  • Nie można połączyć się z C ++ lub C, więc Twój projekt może działać tylko na Unity. Z C # można argumentować, że będzie działać na XNA, ale C ++ byłby miły. Dzięki tej uwadze mam na myśli, że nie jest to narzędzie, którego używaliby profesjonaliści lub samouk, ponieważ nie masz całkowitej kontroli nad aplikacją, ale to nie znaczy, że nie możesz nic zrobić z Unity. Z drugiej strony zespół z doskonałym pomysłem i utalentowanymi artystami może robić niesamowite rzeczy bez potrzeby doświadczonych programistów.
  • Jest całkiem nowy, więc oczywiście nikt nie wie, dokąd to narzędzie zaprowadzi.

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.

żart
źródło
1
Komentując siebie: są też profesjonalne wtyczki, które pozwalają programować w C ++, więc teoretycznie jest to także silnik C ++ ...
Jokoon
1

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ł.

Ming-Tang
źródło
1

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

Proclyon
źródło