Jakie technologie są obecnie wykorzystywane do tworzenia gier? [Zamknięte]


14

Ilekroć zadaję pytanie dotyczące rozwoju gry na forum online, zawsze otrzymuję sugestie, takie jak nauka algorytmów rysowania linii, manipulowanie obrazem na poziomie bitowym i dekompresja wideo itp.

Jednak patrząc na gry takie jak God of War 3, trudno mi uwierzyć, że można je opracować przy użyciu tak niskich technik.

Niesamowita gra tego typu sprzeciwia się jakiejkolwiek zrozumiałej (jak dla mnie) metodologii programowania.

Poza tym sprzęt do gier jest teraz naprawdę potworem. Jest więc oczywiste, że programiści będą pracować na wyższym poziomie abstrakcji.

Jaka jest najnowsza metodologia rozwoju w branży gier? Jak to się dzieje, że zespół 30-35 programistów (z których większość to puch zarządzania i marketingu) jest w stanie tworzyć takie zadziwiające gry?

Jeśli pytanie wydaje się zbyt ogólne, czy mógłbyś wyjaśnić architekturę gry God of War 3? Albo jak poszedłbyś na produkcję klona? Myślę, że powinien być obiektywnie odpowiedzialny.


2
Czy ktoś chciałby wyjaśnić opinię negatywną?
Monika Michael

2
Głosy negatywne wynikają z tego, że pytanie nie jest „konstruktywne”. Cytując: „to pytanie nie pasuje do naszego formatu pytań i odpowiedzi. Oczekujemy, że odpowiedzi będą poparte faktami, referencjami lub specjalistyczną wiedzą, ale to pytanie prawdopodobnie zachęci do debaty, argumentów, ankiet lub rozszerzonej dyskusji” . Oznacza to, że na pytanie nie można udzielić dokładnej odpowiedzi. Nadal uważam, że twoje pytanie ma sens, ale należy je przeformułować.
9000

2
@ 9000 A jak to pytanie kwalifikuje się jako niekonstruktywne?

1
@delnan: prawdopodobnie downvoters nie byli zadowoleni z fraz takich jak „Jaka jest najnowsza metodologia rozwoju w branży gier?” . Dla mnie „sposób, w jaki zrobiłbyś produkcję klonu”, jest znacznie lepszy.
9000

4
Czy nie miałoby to większego sensu na gamedev.stackexchange.com ?
Dan bawi się Firelight

Odpowiedzi:


12

Zastrzeżenie: Jestem nie deweloper gier wideo. Ale interesuje mnie „hobbysta”.


Większość gier AAA, które widzisz, powstają przy użyciu silników. Nie są napisane od podstaw. Pomyśl o silniku jak o ramie. Masz platformę .NET, Java SDK, zestaw narzędzi Cocoa.

Wszystkie rzeczy, które ułatwiają tworzenie oprogramowania i usuwanie kodu zlewu kuchennego. Jest to konieczne, ale pisanie go za każdym razem jest bardzo bezproduktywne.

Korzystając z tych silników, deweloper może budować swoją grę i nie martwić się o część bazowego kodu. ( Nie pomyl się, tworzenie gier jest jedną z najtrudniejszych gałęzi inżynierii oprogramowania. )

Na przykład Unreal Engine 4 ma zestaw deweloperski i studio dla zabójców:

http://www.youtube.com/watch?v=MOvfn1p92_8

wprowadź opis zdjęcia tutaj

Istnieje wiele różnych silników. Niektóre są płatne, inne bezpłatne, niektóre bardziej do metalu, inne oferują większą abstrakcję.

Na przykład:

  • OGR
  • Unreal Engine
  • Jedność
  • Źródło
  • i wiele więcej...

5

W nawiązaniu do komentarza gbjbaanb, niektóre z rzeczy, które sprawiają, że programowanie gier jest zabawne, to ograniczona żywotność podstawy kodu i brak wymagających precyzji. Na przykład, jeśli projektujesz grę FPS, a algorytm ruchu czasami umieszcza twoją postać w grze o kilka pikseli dalej, to nic wielkiego i nie ma szans, że nikt tego nie zauważy. Jeśli projektujesz oprogramowanie biznesowe i od czasu do czasu funkcja sumowania kosztuje kilka dolarów, jest to o wiele poważniejszy błąd. Dlatego podczas projektowania gier niektóre aspekty mogą być znacznie mniej precyzyjne (i muszą przejść tylko testy na ludziach, a nie zautomatyzowany zestaw testów, który sprawdza, czy odpowiedzi są poprawne).

Z mojego doświadczenia wynika, że ​​programowanie gier, szczególnie dla gier w czasie rzeczywistym, jest czymś zupełnie innym niż ... prawie każde inne oprogramowanie, które zrobiłem, może poza pracą z graficznym interfejsem użytkownika. Musisz spróbować!


4

Odpowiedź brzmi „silniki”. Wiele gier jest zbudowanych na różnych silnikach graficznych i gameplay, które są w zasadzie dużymi bibliotekami lub frameworkami.

W świecie OSS spójrz na przykład na Ogre , na komercyjne gry, które lubisz Source.

W grę wchodzą inne czynniki, takie jak duża część kodu, która jest jednorazowa i nie przejdzie w środowisku biznesowym - ale to dlatego, że ograniczona żywotność gry i przyspieszone ramy czasowe programowania oznaczają, że kod jest (prawie) zaprojektowany tylko do pracy, a nie do utrzymania.


Oczywiście, silniki te są zwykłymi (choć wysoce zoptymalizowanymi) abstrakcjami budującymi kod C / C ++ na interfejsach API niższego poziomu (np. DX lub OpenGL dla grafiki).

Ale dobrym pomysłem jest posiadanie doświadczenia w tworzeniu bardzo prostej gry przy użyciu C lub C ++, aby autor mógł dowiedzieć się, jak wygląda tworzenie gry.
KyelJmD

4

Unity3D jest naprawdę fajny. Oto kilka punktów, które mi się podobają:

  • pozwala budować gry w sposób niezależny od platformy, a następnie automatycznie tworzy wdrożenia dla systemów Windows, Mac OS X, Android i IOS. Dotyczy to bieżącej wersji (3.x). Najwyraźniej wersja 4 pozwala również na wdrożenie w systemie Linux:

http://en.wikipedia.org/wiki/Unity_(game_engine)#Major_features

  • Nawet jeśli potrzebujesz płatnej licencji, aby móc z niej faktycznie korzystać (komercyjnie), możesz załadować bezpłatną wersję, w której możesz korzystać z większości funkcji (tj. Nie możesz na przykład udostępniać wdrożeń na platformach mobilnych). To świetny sposób na podgląd rzeczy, zanim zdecydujesz się ją kupić lub nie:

http://unity3d.com/unity/licenses

  • Działa z większością programów do modelowania 3D (wolę 3d Studio Max, ale obsługuje również inne):

http://unity3d.com/unity/editor/importing (przewiń nieco w dół)

  • Kodowanie (skryptowanie) można wykonać w języku C #, który jest przyjemnym językiem, z dobrym interfejsem API i kontrolą czasu kompilacji. Pochodzi z dobrym środowiskiem programistycznym (IDE i wszystko). Jeśli chcesz czegoś innego, obsługuje również Javascript.

  • Ma bardzo dobre wsparcie fizyki (zderzenia, grawitacja, siły itp.):

http://docs.unity3d.com/Documentation/Manual/Physics.html

  • Ma sklep z zasobami, który pozwala kupować różne modele, skrypty, animacje itp. W zależności od twoich umiejętności (i portfela) możesz je zdobyć / zmodyfikować, aby szybko uzyskać przyzwoite zasoby do gry.

  • Last but not least, jest przyzwoicie szybki. Sprawdź dema urządzeń mobilnych, IMHO poruszają się całkiem dobrze i mają bardzo przyzwoitą grafikę:

http://unity3d.com/gallery/made-with-unity/game-list

Oto jeden fajny projekt Unity, na który obecnie czekam:

Pustkowie Briana Fargo 2

Mają fajny wpis na blogu o tym, dlaczego wybrali Unity , a także inne dyskusje na temat tego, jak przebiega współpraca .


3

ID Software jest jednym z dostawców, który zazwyczaj publikuje najnowsze gry. Kilka lat później często publikują je jako open source. Na stronie http://fabiensanglard.net/quake3/index.php można znaleźć analizę kodu źródłowego Quake3. Jest to dość szczegółowy opis i chociaż Quake3 jest dość stary, tymczasem koncepcje nadal powinny być istotne dla współczesnych gier.

I tak, jeśli chcesz zbudować najnowocześniejszy, szybki, konkurencyjny silnik do gry, musisz znać wszystkie te elementy niskiego poziomu. Jeśli nie chcesz się tym przejmować: Dostępne są różne silniki (silnik quake3 lub te z innych odpowiedzi), ale dobrze, to nie tworzysz nowej rewolucyjnej gry ;-)


Z wyglądu tej analizy wynika, że ​​Quake 3 wyprzedza kilka ważnych technik „niskiego poziomu” dzisiejszego rozwoju gier. Na początek, shadery (dostarczone przez OpenGL).

Quake 3 został wydany w 1999 roku. Tak, to już dawno. Ale pokazuje, jak pracują ludzie, którzy próbują przekroczyć granicę możliwości. Większość innych dostępnych silników bardziej skupia się na możliwości ponownego użycia, „czystym” kodzie itp. Zamiast maksymalnej wydajności. (Nie oznacza to, że inne silniki są złe i wolne, ale myślę, że nadal warto na nie spojrzeć, jeśli chcesz dowiedzieć się o architekturze i implementacji silnika do gier 3D)
John

Kolejny powiązany artykuł na temat binarnej matematyki niskiego poziomu w grach 3D, na przykładzie Quake: blog.quenta.org/2012/09/0x5f3759df.html
johannes

1

Jak wspomina wiele odpowiedzi, dużą rolę odgrywają silniki gier i biblioteki. Należy jednak pamiętać, że dotyczy to średnich gier komercyjnych bardziej niż małych gier niezależnych.

Na przykład na platformach mobilnych większość gier jest pisana przy użyciu jedynie zestawu stosunkowo prymitywnych bibliotek, zamiast polegać na pełnych mechanizmach gier i ramach. Istnieją, ale w przeważającej części chodzi o ponowne użycie własnego kodu z wcześniejszych projektów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.