Welche Technologien werden heutzutage für die Spieleentwicklung verwendet? [geschlossen]

14

Wenn ich in einem Online-Forum eine Frage zur Spieleentwicklung stelle, bekomme ich immer Vorschläge wie das Erlernen von Strichzeichnungsalgorithmen, die Bearbeitung von Bildern auf Bitebene und die Dekomprimierung von Videos usw.

Wenn ich Spiele wie God of War 3 betrachte, fällt es mir schwer zu glauben, dass diese Spiele mit solch niedrigen Techniken entwickelt werden könnten.

Die schiere Faszination solcher Spiele entzieht sich jeder (für mich) nachvollziehbaren Programmiermethode.

Außerdem ist die Gaming-Hardware heutzutage wirklich ein Monster. Es liegt also nahe, dass die Entwickler auf einer höheren Abstraktionsebene arbeiten würden.

Was ist die neueste Entwicklungsmethode in der Spielebranche? Wie kommt es, dass ein Team von 30 bis 35 Entwicklern (von denen das meiste aus Management- und Marketingfusseln besteht) in der Lage ist, solche irrsinnigen Spiele zu entwickeln?

Wenn die Frage zu allgemein erscheint, können Sie die Architektur von God of War 3 erläutern? Oder wie würden Sie einen Klon herstellen? Das sollte meiner Meinung nach objektiv zu verantworten sein.

Monika Michael
quelle
2
Würde es jemandem etwas ausmachen, die Ablehnung zu erklären?
Monika Michael
2
Downvotes sind darauf zurückzuführen, dass die Frage nicht "konstruktiv" ist. Um zu zitieren: "Diese Frage passt nicht zu unserem Q & A-Format. Wir erwarten, dass die Antworten durch Fakten, Referenzen oder spezifisches Fachwissen gestützt werden, aber diese Frage wird wahrscheinlich Debatten, Argumente, Abstimmungen oder erweiterte Diskussionen hervorrufen . " Das heißt, die Frage kann nicht präzise beantwortet werden. Ich denke immer noch, dass Ihre Frage berechtigt ist, aber neu formuliert werden muss.
9000,
2
@ 9000 Und wie qualifiziert sich diese Frage als nicht konstruktiv?
1
@delnan: Wahrscheinlich waren die Downvoter mit Redewendungen wie "Was ist die neueste Entwicklungsmethode in der Spielebranche?" nicht zufrieden. . Für mich ist "wie Sie vorgehen würden, um einen Klon zu produzieren" viel besser.
9000,
4
Wäre das nicht sinnvoller bei gamedev.stackexchange.com ?
Dan Neely

Antworten:

12

Haftungsausschluss: Ich bin kein Videospielentwickler. Aber ich habe ein "Hobby" -Interesse daran.


Die meisten der AAA-Spiele, die Sie sehen, werden mit Engines erstellt. Sie sind nicht von Grund auf neu geschrieben. Stellen Sie sich einen Motor wie ein Framework vor. Sie verfügen über .NET Framework, Java SDK und Cocoa Toolkit.

Alles, um Ihnen die Erstellung von Software zu erleichtern und den Code für das Spülbecken zu entziehen. Es ist notwendig, aber jedes Mal zu schreiben ist sehr unproduktiv.

Mit diesen Engines können Entwickler ihr Spiel entwickeln und müssen sich keine Gedanken über den zugrunde liegenden Code machen. ( Machen Sie keinen Fehler, die Spieleentwicklung ist einer der schwierigsten Bereiche der Softwareentwicklung. )

Beispielsweise, Unreal Engine 4 ein Killer Development Kit und Studio:

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

Bildbeschreibung hier eingeben

Es gibt viele verschiedene Motoren. Einige werden bezahlt, andere sind kostenlos, andere hängen vom Metall ab, andere bieten eine höhere Abstraktion.

Beispielsweise:

  • OGER
  • Unwirklicher Motor
  • Einheit
  • Quelle
  • und viele mehr...
sergserg
quelle
5

In Bezug auf den Kommentar von gbjbaanb ist einige der Dinge, die das Programmieren von Spielen zum Spaß machen, die begrenzte Lebensdauer der Codebasis und der Mangel an erforderlichen Präzisierungen. Wenn Sie beispielsweise ein FPS-Spiel entwerfen und Ihr Bewegungsalgorithmus Ihren Spielcharakter manchmal um einige Pixel versetzt, ist dies keine große Sache, und es besteht die Möglichkeit, dass niemand etwas davon merkt. Wenn Sie eine Unternehmenssoftware entwickeln und gelegentlich durch Ihre Summenfunktion ein paar Dollar weniger erhalten, ist dies ein weitaus schwerwiegenderer Fehler. Beim Entwerfen von Spielen können einige Aspekte daher viel ungenauer sein (und müssen nur menschliche Tests bestehen, anstatt einer automatisierten Testsuite, die prüft, ob die Antworten genau richtig sind).

Ich habe die Erfahrung gemacht, dass das Programmieren von Spielen, insbesondere für Echtzeitspiele, eine ganz andere Erfahrung ist als ... fast jede andere Software-Entwicklung, die ich bisher gemacht habe, vielleicht mit Ausnahme der GUI-Arbeit. Es ist etwas, was Sie versuchen müssen!

Ivan
quelle
4

Die Antwort lautet "Motoren". Viele Spiele basieren auf verschiedenen Grafik- und Gameplay-Engines, die im Grunde genommen große Bibliotheken oder Frameworks sind.

Schauen Sie sich in der OSS-Welt Ogre an, um ein Beispiel für kommerzielle Spiele wie Source zu finden.

Es gibt noch andere Faktoren, zum Beispiel, dass ein Großteil des Codes wegwerfbar ist und in einer Geschäftsumgebung nicht erfolgreich ist - aber das liegt daran, dass die begrenzte Lebensdauer eines Spiels und die beschleunigten Entwicklungszeiten bedeuten, dass der Code (fast) entworfen ist nur um zu arbeiten, nicht um gepflegt zu werden.

gbjbaanb
quelle
Natürlich handelt es sich bei diesen Engines nur um reguläre (wenn auch stark optimierte) C / C ++ - Codebildungsabstraktionen, die auf APIs niedrigerer Ebene (z. B. DX oder OpenGL für Grafiken) basieren.
Es ist jedoch eine gute Idee, Erfahrung in der Erstellung eines sehr einfachen Spiels mit C oder C ++ zu haben, um dem Autor eine Vorstellung davon zu vermitteln, wie die Spieleentwicklung aussieht.
KyelJmD
4

Unity3D ist wirklich nett. Hier sind einige Punkte, die mir daran gefallen:

  • Damit können Sie Spiele plattformunabhängig erstellen und dann automatisch Deployables für Windows, Mac OS X, Android und IOS erstellen. Dies gilt für die aktuelle Version (3.x). Anscheinend können Sie Version 4 auch unter Linux bereitstellen:

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

  • Auch wenn Sie eine kostenpflichtige Lizenz benötigen, um sie tatsächlich (kommerziell) nutzen zu können, können Sie eine kostenlose Version herunterladen, in der Sie die meisten Funktionen nutzen können (dh Sie können beispielsweise keine Deployables für die mobilen Plattformen erstellen). Es gibt eine großartige Möglichkeit, eine Vorschau der Sache zu sehen, bevor Sie sich entscheiden, sie zu kaufen oder nicht:

http://unity3d.com/unity/licenses

  • Funktioniert mit den meisten 3D-Modellierungsprogrammen (ich bevorzuge 3d Studio Max, aber es unterstützt auch andere):

http://unity3d.com/unity/editor/importing (etwas nach unten scrollen)

  • Die Codierung (Skripterstellung) kann in C # erfolgen, was eine nette Sprache ist, mit einer guten API und Überprüfungen der Kompilierungszeit. Kommt mit einer guten Entwicklungsumgebung (IDE und alles). Wenn Sie etwas anderes wollen, unterstützt es auch Javascript.

  • Hat sehr gute physikalische Unterstützung (Kollisionen, Schwerkraft, Kräfte usw.):

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

  • Verfügt über einen Asset Store, in dem Sie verschiedene Modelle, Skripte, Animationen usw. kaufen können. Abhängig von Ihren Fähigkeiten (und Ihrem Portemonnaie) können Sie diese erwerben / ändern, um schnell anständige Ressourcen für Ihr Spiel zu erhalten.

  • Last but not least ist es anständig schnell. Schauen Sie sich die mobilen Demos an, IMHO bewegen sie sich recht gut und haben sehr anständige Grafiken:

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

Hier ist ein schönes Unity-Projekt, auf das ich gerade warte:

Brian Fargos Ödland 2

Sie haben einen schönen Blog-Eintrag darüber, warum sie sich für Unity entschieden haben , und darüber, wie die Arbeit damit weitergeht .

Shivan Drache
quelle
3

ID Software ist einer der Anbieter, die in der Regel Spiele auf dem neuesten Stand der Technik veröffentlichen. Einige Jahre später veröffentlichen sie diese oft als Open Source. Auf http://fabiensanglard.net/quake3/index.php finden Sie eine Analyse des Quake3-Quellcodes. Dies ist eine ziemlich ausführliche Beschreibung, und obwohl Quake3 in der Zwischenzeit ziemlich alt ist, sollten die Konzepte für moderne Spiele immer noch relevant sein.

Und ja, wenn Sie eine moderne, schnelle und wettbewerbsfähige Spiel-Engine auf dem neuesten Stand der Technik bauen möchten, müssen Sie all diese Teile auf niedriger Ebene kennen. Wenn Sie sich nicht um diese kümmern möchten: Es gibt verschiedene Engines (Quake3-Engine oder solche aus anderen Antworten), aber gut, dann erstellen Sie kein neues revolutionäres Spiel ;-)

johannes
quelle
Nach dem Aussehen dieser Analyse geht Quake 3 einigen wichtigen "Low-Level" -Techniken der heutigen Spieleentwicklung voraus. Für den Anfang (OpenGL-gelieferte) Shader.
quake 3 wurde 1999 veröffentlicht. ja, das ist schon lange her. Aber es zeigt, wie Menschen arbeiten, die versuchen, an die Grenzen des damaligen Möglichen zu gehen. Die meisten anderen verfügbaren Engines tendieren eher zur Wiederverwendbarkeit, zum "sauberen" Code usw. anstatt zur maximalen Leistung. (Dies bedeutet nicht , dass andere Motoren sind schlecht und langsam, aber ich denke , es ist immer noch lohnt , es zu betrachten , wenn Sie über 3D - Gaming - Engine - Architektur und Implementierung lernen wollen)
johannes
Ein weiterer verwandter Artikel über binäre Low-Level-Mathematik in 3D-Spielen am Beispiel von Quake: blog.quenta.org/2012/09/0x5f3759df.html
johannes
1

Wie in vielen Antworten erwähnt, spielen Game Engines und Bibliotheken eine große Rolle. Beachten Sie jedoch, dass dies für mittelgroße kommerzielle Spiele mehr gilt als für kleine "Indie" -Spiele.

Zum Beispiel werden die meisten Spiele auf mobilen Plattformen mit nur einer Reihe relativ primitiver Bibliotheken geschrieben, anstatt sich auf vollständige Game-Engines und Frameworks zu verlassen. Es gibt sie zwar, aber zum größten Teil geht es darum, Ihren eigenen Code aus früheren Projekten wiederzuverwenden.

zxcdw
quelle