Ich habe mich gefragt, ob mir jemand sagen kann, wie das Spiel und die Spiel-Engine in die Spieleentwicklung passen. Was ich speziell meine ist, dass die Spiel-Engine eigentlich kein Spiel enthält. Erstellen Spieleentwickler eine Engine und erstellen dann eine neue Klasse, die von der Engine erbt, die zum Spiel wird?
Zum Beispiel,
class ShooterGame : public Engine
{
};
Ich bin mir nicht sicher, wo der Spielcode in die Engine passt.
software-engineering
jmasterx
quelle
quelle
Antworten:
Lassen Sie sich nicht vom Konzept einer "Game Engine" einfangen. Zwar verfügen Spielestudios häufig über eine Art Spiel-Engine, die sie erstellen, um den Produktionsprozess von Spielen zu beschleunigen, doch viele unabhängige Entwickler versuchen, eine Spiel-Engine zu erstellen, mit der sie nie etwas machen, das tatsächlich funktioniert.
Eine Spiel-Engine kann alles sein, was Sie wollen. Wenn Sie genug Gemeinsamkeiten zwischen Ihren Spielen finden, um eine
Engine
Klasse wie Ihr Beispiel zu unterordnen, ist das in Ordnung. Wenn eine "Engine" wirklich nur eine kleine Bibliothek von Funktionen ist, die Sie in früheren Spielen, die Sie entwickelt haben, als nützlich empfunden haben, ist das auch großartig. Was auch immer es für Sie bedeutet, das Konzept einer "Engine" ist nur wiederverwendbarer Code, mit dem Sie mehr Spiele erstellen können.Wenn Sie jedoch versuchen, ein Spiel zu erstellen, konzentrieren Sie sich nicht darauf, eine Engine zu erstellen. Mach ein Spiel. Sobald das Spiel beendet ist und Sie bereit sind, Ihr zweites zu erstellen, beginnen Sie mit dem zweiten, und Sie werden Teile finden, die Sie bereits in Ihrem ersten Spiel erstellt haben. Dann können Sie diese Bits in eine Bibliothek oder Engine extrahieren, um sie zwischen den beiden Spielen zu teilen. So sollte ein Motor hergestellt werden. Es ist normalerweise nichts, was Sie vor dem Erstellen eines Spiels schreiben möchten, da Sie am Ende Tonnen von Code haben, der nicht getestet wurde, und Sie schreiben im Wesentlichen Dinge, bevor Sie wissen, dass Sie sie brauchen (daher brauchen Sie sie möglicherweise nicht einmal). Dies ist wie eine vorzeitige Optimierung, aber schlimmer.
Um Ihre Frage direkt zu beantworten, ist eine Spiel-Engine im Grunde eine wiederverwendbare "Sache" (Bibliothek, Tool, Framework), die ein Spielestudio verwendet, um schnell Spiele zu erstellen. Sie wird normalerweise für bestimmte Spiele oder nach deren Erstellung erstellt Mehrere Spiele, bei denen ähnliche Teile herausgezogen und zu einer Engine geformt werden, von der sie wissen, dass sie in zukünftigen Spielen verwendet werden kann. Es sollte fast nie ohne Rückblick (zwei oder mehr bereits erstellte Spiele) oder umfassende Planung erstellt werden.
quelle
Keine Sorge: Ich habe professionell an Spielen gearbeitet, bei denen wir alle etwas verwirrt waren, wo der Spielcode in die Engine passt. ;)
Ich sage dies oft in der Spieleentwicklung, aber es gibt kein Standardsystem oder keine Definition dafür. Mit einigen Engines (normalerweise für recht einfache Spiele) können Sie neue Spiele erstellen, ohne mehr Code zu schreiben. Andere Engines sind im Grunde ein Grundgerüst eines vorhandenen Spiels, und Sie müssen den Code an Ort und Stelle ändern, um Ihre Funktionen hinzuzufügen. Einige ähneln Ihrem Beispiel und sind Sammlungen von Klassen, die Sie in Ihr eigenes System einordnen oder aggregieren können. Andere ähneln eher Codebibliotheken, die Sie Ihrer eigenen Anwendung hinzufügen und bei Bedarf verwenden. Das einzige, was sie gemeinsam haben, ist, dass die Engine der Teil des Systems ist, der für mehrere Spiele geeignet ist (oder behauptet, geeignet zu sein!).
quelle
Ich bin mir sicher, dass es Umstände gibt, unter denen die Leute so vorgegangen sind, wie Sie es oben getan haben, aber ich persönlich habe Engines immer als Sammlung von Bibliotheken bevorzugt, mit Bits, die Sie nach Bedarf abrufen können. Dies würde Ihnen letztendlich mehr Flexibilität bei der Auswahl geben, um verschiedene Komponenten basierend auf ihrer Eignung für einen bestimmten Spieltyp ein- und auszutauschen (dh Sie können je nach Spieltyp eine 2D- oder 3D-Physikbibliothek oder einen Renderer auswählen), ohne dies zu müssen Alle anderen Alternativen befinden sich im Speicher, oder Sie können zwischen einem auf DX9 / DX11 / etc basierenden Rendering wählen.
quelle