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.
quelle
Antworten:
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
Es gibt viele verschiedene Motoren. Einige werden bezahlt, andere sind kostenlos, andere hängen vom Metall ab, andere bieten eine höhere Abstraktion.
Beispielsweise:
quelle
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!
quelle
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.
quelle
Unity3D ist wirklich nett. Hier sind einige Punkte, die mir daran gefallen:
http://en.wikipedia.org/wiki/Unity_(game_engine)#Major_features
http://unity3d.com/unity/licenses
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 .
quelle
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 ;-)
quelle
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.
quelle