2009-01-31 10 views
14

Zawsze zastanawiałem się, w jaki sposób programiści gier wiążą ze sobą postacie z gry stworzone w zewnętrznym oprogramowaniu do modelowania 3D, jak maya lub 3d max i faktyczna logika gry stworzona w tym ulubionym języku programowania, np. C lub C++.Jak piszesz grę 3D?

Jak połączyć te dwie rzeczy razem i jaki jest faktyczny proces budowania gry od modelowania postaci do programowania?

Niektóre rzeczy, które sprawiają, że się zastanawiam, to jak, czy programujesz ruchy postaci z kodu lub z modelu 3d?

Przykłady byłyby naprawdę miłe do zobaczenia.

+1

Oto jak to robią: http://www.unrealengine.com/ lub http://unity3d.com/ – Saturnix

+0

Zgadzam się, że Unreal jest całkiem sprytny! https://www.unrealengine.com/what-is-unreal-engine-4 –

Odpowiedz

14

Większość informacji, takich jak ruchy postaci, jest w rzeczywistości przechowywana poza kodem. W rzeczywistości jest to dość prosty proces:

  1. Artysta tworzy model 3D w programie Maya lub czymkolwiek, a następnie zapisuje go w pliku. Powiedzmy, że nazwali to "Gollum.3D".
  2. Teraz "Gollum.3D" zawiera wiele liczb reprezentujących punkty modelu, tekstury i wszystko inne.
  3. Kod programu odczytuje następnie plik "Gollum.3D" - wszystkie jego punkty modelu, tekstury i wszystko, a następnie wykonuje wiele obliczeń matematycznych, aby obliczyć wygląd sceny 3D, biorąc pod uwagę wszystkie liczby reprezentujące Model.

Okazuje się, że wszystko w grze kończy się być przechowywane oddzielnie od kodu, a kod po prostu czyta go i łączy wszystko razem, gdy gra jest uruchomiona. Kiedy mówię wszystko - mam na myśli WSZYSTKO! Cały tekst, statystyki punktów wytrzymałości i wielkości obrażeń broni, obrazy ekranu menu, a nawet sztuczna inteligencja są przechowywane oddzielnie od kodu programu w skryptach. Kod programu kończy się robić bardzo mało.

Być może słyszałeś o ludziach robiących mody do gier. Modders to ludzie, którzy edytują dane, które znajdują się poza kodem programu, co z kolei zmienia grę tak, jak im odpowiada. Po prostu wykorzystują fakt, że w zasadzie wszystko w grze (z wyjątkiem kilku podstawowych rzeczy) nie jest wpisane w kod programu.

+4

Nazywasz silnik gry "robiąc bardzo mało"? To poważnie rozciągająca rzeczywistość ... –

+1

Zgadzam się, złożona matematyka, fizyka i sztuczna inteligencja nie są rzeczami, które uważam za "bardzo mały" wysiłek. –

+13

Myślę, że nie oznacza to, że jego niewielki wysiłek, być może oznacza, że ​​jest to mały procent zawartości gry w porównaniu do tego, co jest przechowywane w plikach skryptów itp. –

3

Sam nie mam dużego doświadczenia w programowaniu gier, ale odkryłem, że struktura i zasoby XNA są dość pouczające. Możesz znaleźć mnóstwo przykładów i jak to zrobić i całkiem przydatne forum tutaj http://creators.xna.com/en-US/

1

Animacje można wykonywać z poziomu oprogramowania do modelowania 3D, a następnie do kodu, aby "uruchamiać" różne animacje w oparciu o logikę gry. Modele są pobierane z oprogramowania do modelowania w grze za pomocą popularnych formatów. Na przykład, szkielet XNA może natywnie odczytywać niektóre z najpopularniejszych formatów modeli.

0

Pomyśl o tym, jak to wszystko zrobić w 2D, to prawie tak samo z 3D, algorytmy są po prostu różne i trzeba się o nie różnie zastanowić.

Reszta tego, o co pytasz, to pytanie projektowe i zależy od gry i programisty. Można napisać złożoną symulację przenoszenia postaci, podczas gdy ktoś inny może polegać tylko na animacjach szkieletowych. Ktoś może przechowywać logikę gry na modelach 3D, a inne po prostu nie.

Przykłady?Być może quake source code jest dobrym źródłem do obejrzenia.

5

Tworzenie postaci 3D i programowanie gry 3D to dwa odrębne procesy.

Zazwyczaj rzeźbisz swoją postać 3D w modelarze 3D (Blender, Maya, 3D studio Max, itp.), Eksportujesz tę postać do pliku (.obj, .md2 itd.) I zapisałeś kod do swojego Gra 3D, aby poradzić sobie z importem postaci w twoim silniku.

Chociaż brzmi to dość trudno, 3D game engines obsługuje wszystkie te rzeczy bez pisania milionów linii kodu i ponownego wynajdowania koła.

Weźmy na przykład Ogre3D, silnik gier 3D typu open source. Nie musisz być guru programistycznym, aby mieć prosty przykład: & działający w ciągu kilku minut. Proponuję spojrzeć na ich wiki i theirtutorials.

Na przykład this is prosty poradnik do tworzenia i eksportowania prostych modeli z 3D Studio Max oraz importowania ich do Ogre 3D

0

Pisanie silnik gry jest złożonym zadaniem, moja propozycja jest użycie jednego z istniejących silników , (wybierz z listy: http://www.devmaster.net/engines/).

Podczas podnoszenia silnika trzeba uwzględniające następujące:

  • licencji (chcesz opublikować, macie budżet, to jest open source)
  • Język programowania/skryptów (które język jesteś najbardziej komfortowo)
  • Platforma docelowa (Windows/Linux/Mac/Console/telefon)
  • rurociągowy (są eksporterzy z twojego narzędzia do modelowania 3D i importerów do silnika)

Twoje pytanie jest bardziej związane z ostatnią pozycją, powinieneś wybrać silnik, który może zaimportować aktywa, które wyprodukujesz, na przykład 3DS, Maya do silnika, w sposób, który nie musi martwić się formatami plików, ponieważ to spowoduje, że jesteś bardziej produktywny, ponieważ koncentrujesz się tylko na grze.

1

Powinieneś używać silnika renderującego 3D. Wiele z nich jest bezpłatna (Ogre3D jest dobra) i zazwyczaj mają one możliwość importowania niemal każdego typu siatki utworzonej ze wspólnego oprogramowania do modelowania.

6

W przeciwieństwie do ulubionej odpowiedzi, zaryzykowałbym i powiedziałbym, że jest to całkiem spore zadanie, jeśli odnosisz się do postaci mającej animaton do niej.

Efektem końcowym byłoby włączenie większości funkcji związanych ze skryptami i plikami konfiguracyjnymi (innymi słowy - dane sterowane), ale proces budowy takiego systemu nie jest prosty.

Zazwyczaj rozpoczyna się od zewnętrznego modelarza, w którym wykonuje się następujące czynności: 1. skonstruuj model skóry. 2. skonstruować szkielet i dołączyć do skóry według ciężarów itp. 3. zastosować wszystkie tekstury i materiały według potrzeb. 4. eksportuj do swojego silnika.

Teraz możesz zacząć budować swój bank animacji dla tego szkieletu postaci lub podobnego, jeśli kojarzysz go z więcej niż jednym (zwykle ma to miejsce, jeśli szkielet jest wystarczająco blisko lub modułowy). Niektóre animacje będą zawierały tylko częściową hierarchię (aby można było mieszać tylko część animacji - na przykład, niższe ciało działa, podczas gdy górna część ciała może korzystać z innej animacji lub odwrotnej kinematyki - strzelanie do wroga podczas biegu jest na to dobry przykład).

Teraz w końcu dojdziesz do części kodu. Musisz zbudować system, który będzie kojarzył animacje ze szkieletem i renderował go poprawnie. Ten system musi również być w stanie mieszać animacje z IK (na przykład - przesuwanie między pozycją stojącą a działającą) i móc łączyć kilka animacji i częściowych animacji - na przykład chodzenie (animacja całego ciała), patrzenie na kogoś (IK dla górnej części ciała), wymachiwanie ręką (IK z częściową animacją) i oddychanie (częściowa animacja) w tym samym czasie łączyłoby 4 różne częściowe lub pełne mieszania.

Nie wspomniałem o tym, że trzeba zbudować importera i istnieje również różnica między akcją a animacją akcji. Działanie może mieć kilka animacji połączonych lub wybranych losowo - zostaną one powiązane za pomocą pliku odwzorowania danych.

Proponuję rzucić okiem na XNA - ma wiele przykładów, importerów i wiele więcej i zawiera wiele podstawowych rzeczy w bibliotekach, więc nie musisz zaczynać od zera. Jak wspomniano również o innych - Blender3D jest dobrym wyborem dla redaktora + i może być Torque tylko dla doświadczenia silnika gry.

Jedno ostatnie słowo - jeśli chcesz to wypróbować, nie będzie to spacer w parku, ale hej - tyle radości, a wyniki sprawią, że będziesz z siebie dumny.

1

Odwiedź witrynę Unity3d.com, a gra zostanie wykonana w mgnieniu oka. Animacje są wykonywane w oprogramowaniu do modelowania Maya itp., Ale niektóre są wykonywane w silniku. Jedność sprawia, że ​​fizyka jest łatwa, a Ty tworzysz mniej lub bardziej swój świat i łączysz sposób interakcji obiektów.

Przykład - Masz kamerę -> Możesz ustawić kamerę z interfejsu użytkownika podążając za głównym znakiem i transformacją XYZ miejsca, w którym znajduje się kamera. Można to również zrobić wizualnie.

Sprawdź, że jest dużo zabawy i mniej kodu niż możesz sobie wyobrazić. Stamtąd możesz oczywiście napisać swój własny kod, aby zrobić własną unikalną rozgrywkę. Łatwo to wyjaśnić, pisząc skrypt i przeciągając go na obiekt, na którym chcesz uruchomić skrypt.

To jest tak samo laika, jak tylko mogę. Twoje zdrowie.

0

Nie zauważyłem zbyt wielu odpowiedzi na temat tego, czego dokładnie szukać. W ostatnich latach pojawiło się o wiele więcej informacji na temat tego, jak to zrobić nieco łatwiej, wciąż dość skomplikowane.

bezpłatny

Płatny

1

Ponieważ ten temat dotyczy nowego życia, pomyślałem, że przyczynię się do tego. Korzystam z Autodesk 3Ds Max od ponad 12 lat produkując produkty 3D i koncentrując się bardziej na stronie animacji, ale wiem, że Autodesk zapewnia obszerną bibliotekę klas z zaawansowanymi modułami skryptowymi i wbudowanymi możliwościami, które mają wszystkie narzędzia do pisania 3D gra w tym programie. Oczywiście musisz nauczyć się "Max Script" i jak łączyć się z takimi wbudowanymi pakietami o nazwach takich jak "Biped", "Particle Flow", silnik symulacyjny "Havoc", itp., Nie wspominając o renderowaniu silnik (zazwyczaj domyślny skaner, Mental Ray, VRay), który będzie wymagał wielu parametrów.

Jeśli nie masz budżetu lub jesteś w open source, sprawdź Blendera! To niesamowite, co to oprogramowanie i społeczność open-source 3D ma do zaoferowania. Mają nawet "silnik gry", który może się do niego podłączyć: http://www.blender.org/features/ Mają zasoby, które pomogą Ci zacząć.

Chciałbym również dodać, że Unreal wygląda całkiem obiecująco, ponieważ wydali go "za darmo", po prostu przeczytaj drobnym drukiem około 5% opłat licencyjnych, jeśli twoja gra faktycznie startuje! https://www.unrealengine.com/what-is-unreal-engine-4

0

Uważam za dziwne, że istnieje wiele linków do nauki konkretnych narzędzi. Gdybym miał się nauczyć rozwoju gier, chciałbym mieć ogólne forum/stronę do tego celu. Ssać jak GameDev.net.

PS: Jest to odpowiedź uzupełniająca, a nie pełna.