Wann solltest du deine eigene Spiel-Engine rollen? [geschlossen]

20

Ich bin jetzt seit 5 Jahren ein Softwareentwickler und möchte in die iOS-Spieleentwicklung einsteigen. Ich habe ungefähr 2 Jahre mit dem iOS SDK herumgespielt und an Cocoaheads-Meetings teilgenommen. Ich habe das Gefühl, dass ich ein gutes Verständnis für Objective-C, Cocoa und sogar C und C ++ habe.

Ich habe eine Spielidee und weiß, dass ich Box2D verwenden werde, aber ich frage mich, ob ich cocos2D verwenden soll oder nicht. Die Hauptgründe sind:

  1. Ich möchte vielleicht grafische Dinge tun, die in cocos2d nicht verfügbar sind.
  2. Wenn ich meine eigene Spiel-Engine rolle, habe ich mehr Kontrolle.

Der Hauptgrund für die Verwendung einer bereits vorhandenen Spiel-Engine ist natürlich die Zeitersparnis und die Erleichterung der Arbeit. Aber für jemanden, der die technischen Voraussetzungen hat, um selbst zu würfeln, ist das sinnvoll?

Joey Green
quelle
7
Wenn Sie "C / C ++" sagen, ist es ziemlich wahrscheinlich, dass Sie nicht über einen von ihnen und wahrscheinlich über beide verfügen.
DeadMG
10
Ich verstehe, dass einige Leute die beiden verwechseln und ich sollte wahrscheinlich von C / C ++ / Objective-C wiederholen, dass ich die Hauptsprachen verstehe, die Sie zum Programmieren auf der iOS-Plattform verwenden können. Ich hatte keine Lust zu sagen, dass C / C ++ automatisch bedeuten würde, dass ich die beiden als eins verwechsle.
Joey Green
Ich mag diese Frage, da sie eine willkommene Abwechslung vom üblichen "Wie mache ich meinen eigenen Motor?" Darstellt. Fragen. +1 für Sie, Sir.
Ray Dey
1
@DeadMG Ich sage etwas "C / C ++" und habe ein exzellentes Verständnis von beiden.
Ciaran
Ich würde sagen , es ist das auch , dass es tut
bobobobo

Antworten:

38

Die meisten anderen Posts werden "Make a Game not a Engine" sein, aber ich gehe davon aus, dass Sie ein bestimmtes Spiel im Kopf haben und wissen möchten, wann es eine gute Idee ist, mit dem Code eines anderen zu beginnen Basis oder von vorne anfangen.

Sie sollten Ihre eigene Technologie nicht rollen, es sei denn, Sie wissen, dass Sie Ihre eigene rollen müssen . Das mag flippig klingen, aber es ist wirklich die einzig richtige Antwort. Wie bei den meisten Entscheidungen gibt es Kompromisse. Nur Sie können für Ihre spezielle Situation die Kosten-Nutzen-Analyse bestimmen.

Sie sollten die folgenden Dinge verstehen (diese Liste ist kaum vollständig).

  • Welche Middleware gibt es bereits, die Sie verwenden könnten ("Engine" oder auf andere Weise)
  • Was bringt diese Middleware auf den Tisch, Feature-weise.
  • Wie ausgereift / bewährt die Middleware ist, besonders wenn Sie sich für die Unterstützung mehrerer Plattformen interessieren
  • Welche Tools die Middleware bietet oder nicht, um die Entwicklung zu beschleunigen?
  • Welche Einschränkungen hat die Middleware (als einfaches Beispiel hat Unity 3.x unter iOS keine Echtzeitschatten von dynamischen Lichtern erzeugt)
  • Welche spezifischen Funktionen , die Ihr bestimmtes Spiel haben muss .
  • Wie hoch sind Ihre Fristen und wie viel Zeit müssen Sie aufwenden, um den Punkt zu erreichen, an dem Sie die Middleware erhalten, und wie viel die Middleware kostet.
  • Wie erweiterbar die Middleware ist (Sie können beispielsweise das Schattenproblem unter iOS in Unity umgehen, indem Sie Blob-Schatten oder Projektionsschatten verwenden.)

(Beachten Sie, dass ich dort oben nicht speziell "mehr Kontrolle" eingestellt habe. Dies ist eine geladene Phrase, die von "Ich mag keinen Code, den ich nicht schreibe" bis zu "Ich muss in der Lage sein, zu sehen, zu verstehen und zu verstehen Optimieren Sie alle Variablen in der Physik-Engine, um diesen bestimmten Effekt zu erzielen. "Die erste ist keine wirklich gültige Überlegung, die zweite jedoch.)

Persönlich finde ich, dass es sich kaum lohnt, die eigene Technologie für ein Low-Budget-Spiel zu entwickeln. Die Menge an Kraft, die man heutzutage mit den billigen Motoren bekommt, ist lächerlich. Sie sind nicht an einem Punkt angelangt, an dem Sie sich für eine millionenschwere Triple-A-Lizenz entscheiden oder nicht. Sie werden nicht in der Lage sein, das zu übertreffen, was Unity Ihnen für $ 3k anbietet. Oder Cocos2d für alles, was es kostet (ist es nicht kostenlos?).

Wenn sich Ihr Spiel hauptsächlich auf Technologien konzentriert, die andere Engines nicht oder nicht mit angemessenen Frameraten bereitstellen können, ist es möglicherweise sinnvoll zu untersuchen, was Sie tun können. Das heißt aber nicht, dass Sie die anderen Mittelstücke komplett wegwerfen. Nur weil Sie beispielsweise Ihren eigenen Renderer benötigen, heißt das nicht, dass Sie keine andere Middleware für Physik, Sound oder Benutzeroberfläche verwenden können.

Tetrade
quelle
7
Einverstanden. Als tldr: Wenn Sie die Frage stellen müssen, ist es wahrscheinlich besser, mit einem vorhandenen Motor zu arbeiten.
Chris Subagio
Ihre Anmerkung in Fettdruck fasst meine Erfahrung zusammen.
Ingenieur
1
Gemeinschaft ist auch wichtig. Etwas mit einer starken Community, wie XNA, macht das Lösen bestimmter Probleme viel einfacher, weil es jemand zuvor getan hat oder Ihnen Hinweise geben kann.
Asche999
14

Rollen Sie nicht Ihren eigenen Motor. Wirf dein eigenes Spiel. Wenn Sie einen Motor zur gleichen Zeit schreiben, ist das gut für Sie. Wenn nicht, können Sie immer die Teile neu fokussieren, die Sie wiederverwenden möchten, um ihn "motorischer" zu machen.

Die Leute überschätzen oft, was nötig ist, um den "Engine" -Teil eines Spiels zu schreiben. Wenn Sie nur das tun, was Sie brauchen, dauert es nicht so lange. Der schwierige Teil ist es, die Schreibinfrastruktur nicht zu blockieren und nur das zu schreiben, was Sie unbedingt benötigen, um Ihr Problem zu lösen.

Ich würde einen vorhandenen Motor verwenden, wenn:

  • Ich habe eine enge Frist
  • Ich habe einen bekannten festen Funktionsumfang, sodass ich einen Motor dafür auswählen kann
Leere
quelle
3

Ich denke, du solltest nur dein Spiel schreiben und vielleicht wirst du später mit einer Engine enden . Das Schreiben der Grafik-Engine (was alles ist, worüber Sie sprechen) von Grund auf neu und ohne OpenGL wird wahrscheinlich nur Ihre Zeit verschwenden. Es ist ein relativ gut gelöstes Problem, sodass Sie im Allgemeinen nur die Form der API ändern würden, ohne im Vergleich zu anderen verfügbaren Lösungen von Drittanbietern erhebliche neue Funktionen hinzuzufügen.

Wenn Cocos2D oder eine andere Grafikebene jetzt Ihren Anforderungen entspricht, verwenden Sie sie. Wenn sich Ihre Anforderungen während der Entwicklung ändern, können Sie das Rendering-Back-End relativ einfach austauschen. Wenn Sie wirklich der Meinung sind, dass Sie die Erfahrung und das Nötigste haben, um eine Engine selbst zu erstellen, sollten Sie auf jeden Fall das Zeug dazu haben, Ihr Spiel so zu strukturieren, dass es austauscht Das Rendering-Back-End ist eine relativ triviale Operation.

Erstellen Sie Ihr Spiel, lassen Sie die spezifischen Anforderungen des Spiels zu, um den Funktionsumfang des von Ihnen geschriebenen Codes zu optimieren, und schreiben Sie Code mit Blick auf Wiederverwendbarkeit und gute Architektur. Sie werden natürlich eine "Engine" haben, nachdem Sie einige Projekte wie dieses abgeschlossen haben, und Sie werden diese Projekte schneller abschließen, weil Sie nicht zulassen, dass Sie sich im Funktionsschleichen auf Framework-Ebene festsetzen.


quelle
Wenn es sein Ziel ist zu lernen, dann ist es keine Zeitverschwendung.
Ciaran
3

Es ist sehr einfach. Welches ist Ihr primäres Ziel: Lernen oder Time-to-Market?

Vermeiden Sie die Verwendung einer Bibliothek, wenn Ihr primäres Ziel darin besteht, aus den Erfahrungen bei der Implementierung der von der Bibliothek gelösten Konzepte zu lernen. Immer wenn ich ein Spiel entwickle (Teilzeit), ist mein Ziel das reine Lernen. Es ist mir egal, wie lange es dauert, deshalb mache ich alles von Grund auf neu! Jetzt entscheidest du.

Ciaran
quelle
0

Sie sollten Ihre eigene Spiel-Engine rollen, wenn Sie wissen, dass Bedarf besteht .

Nehmen wir zum Beispiel an, Sie haben nicht das Geld, um für Unity auszugeben. Oder Sie geben es lieber für neue Hardware aus. Oder es gibt Leistungsprobleme mit den freien Engines, die Ihnen zur Verfügung stehen, oder Sie müssen mehr Kontrolle auf einer niedrigen Ebene haben.

Wenn Sie es lieben, Software zu schreiben, um Software zu schreiben, werden Sie es lieben, eine Spiele-Engine zu schreiben. Eine häufige Falle für anfängliche Spielprogrammierer ist es , eine Engine als ein ewiges Projekt zu schreiben . Ich bin der festen Überzeugung, dass all diese Open-Source-Spiele-Engines entstanden sind - Spieleprogrammierer, die dies tatsächlich nicht taten

Dann schreiben Sie in diesem Fall Ihren eigenen Motor.

Bobobobo
quelle