Von vorne anfangen - Ist es ein Fehler, das Rad neu zu erfinden?

31

Normalerweise denke ich, wann immer ich ein Spiel starten möchte, über eine gute Grundarchitektur für das Rendern und eine bessere Spielschleife von Grund auf zu verfügen. Ich möchte in der Regel keine vorhandenen Motoren verwenden. Der Grund dafür ist, dass ich es selbst implementieren möchte, um etwas zu lernen.

Aber viele Blogs und Entwickler sagen, dass es keine gute Option ist, das Rad neu zu erfinden.

Vermisse ich etwas?

Ayyappa
quelle
Wie oft "startest" du eigentlich ein Spiel? Wenn Sie Ideen schnell durchlaufen, tun Sie, was auch immer funktioniert. Wenn Sie ein Magnum-Werk machen, bei dem ein Fehltritt kostspielig ist oder die Zeit begrenzt ist, warum sollten Sie Zeit damit verschwenden, das Rad neu zu erfinden? Wenn Sie erfahren möchten, wie die Dinge funktionieren, schreiben Sie Ihre eigene Technologie. Was sind deine Ziele hier?
ChrisE

Antworten:

16

Nein, es ist überhaupt keine schlechte Sache. Lernen und die Fähigkeit zu lernen sind von grundlegender Bedeutung, um ein guter Programmierer zu sein.

ABER
Wenn Sie etwas von Grund auf neu erstellen, ist es wichtig, es vollständig fertig zu stellen. Es spielt keine Rolle, wie abgedreht und unoptimiert es ist. Wenn Sie es vervollständigen, herrscht ein Gefühl der Zufriedenheit wie kein anderes. Dies alles gibt Ihnen wertvolle Erfahrungen und Sie können den Code immer eleganter gestalten oder später eine bessere Leistung erbringen, wenn Sie etwas Funktionales haben. Letztendlich sind die einzigen Dinge, die großartige Programmierer von mittelmäßigen trennen, Erfahrung und Übung.

Wenn Sie etwas erledigt haben und weitere Spiele erstellen möchten, gibt es natürlich keinen Grund, Ihre alte Codebasis wiederzuverwenden.

Wenn Sie eine Karriere in der Spieleentwicklung oder in irgendeiner anderen Art der Entwicklung anstreben, bringt Sie die Erfahrung sehr, sehr weit. Wenn Sie jedoch schnell und einfach Spiele entwickeln möchten (im Vergleich zum Schreiben eigener Inhalte relativ einfach), verwenden Sie eine vorhandene Engine.

Um ehrlich zu sein, eine Kombination aus Erfahrung mit Ihrem eigenen Code UND der Verwendung einer Vielzahl verschiedener Bibliotheken und Engines macht Sie zu einem weitaus besseren Programmierer.

Ray Dey
quelle
Danke Ray, das ist hilfreich! Aber können Sie bitte auch die Spielmechanik
auflisten
Kein Problem. Ich bin mir nicht ganz sicher, was Sie im Zusammenhang mit Ihrer ursprünglichen Frage meinen. Was ist Ihnen besonders wichtig?
Ray Dey
Es ist in Ordnung, ich werde es zu einer separaten Frage machen. Die andere Frage in diesem Beitrag wurde entfernt (bearbeitet), da sie den Kontext nicht ein bisschen in Beziehung setzt.
Ayyappa
+1 für das Ende - ein Projekt tatsächlich abzuschließen , ist eine gute Erfahrung.
Cyclops
36
i want to implement it on my own to learn stuff.

Das ist wahrscheinlich das Wichtigste. Wenn Sie lernen möchten, ist es in Ordnung, Ihre eigenen Rendering- und Game-Loop-Engines von Grund auf neu zu schreiben. Wenn Sie ein fertiges Spiel schnell und einfach erstellen möchten, verwenden Sie ein vorhandenes Framework.

Tesserex
quelle
3
+1. Nur weil eine API oder eine Bibliothek eines Drittanbieters alle Implementierungsdetails abstrahieren kann , müssen Sie sie nicht kennen. Durch die Verwendung von Standard-Rädern können Sie fertigen Code schneller schreiben. Aber wenn Sie Ihr eigenes Rad bauen, können Sie herausfinden, welche vorgefertigten das Beste sind und was am wichtigsten ist, wie Sie sie optimieren und debuggen, wenn die Speichen herausspringen ...
sebf
4
+1 Erfinde das Rad nicht neu, es sei denn, du lernst, Räder zu bauen.
zzzzBov
4
Denken Sie daran, dass dies Ihre Fähigkeiten im Game- Engine- Design verbessert , nicht jedoch im Game-Design.
Dave O.
Dies ist auch eine würdige Antwort ... danke ... aber es ist schlimm, dass ich nicht zwei Antworten markieren kann :(
Ayyappa
10

Wenn Sie das Rad neu erfinden, lernen Sie, wie Räder funktionieren.

Chaos
quelle
5

Kommt darauf an, wonach du suchst. Wenn Sie lernen möchten, erfinden Sie so viele Räder neu, wie Sie möchten. Ich kenne Leute, die zum Teufel ihre eigenen JVMs oder PNG-Lader geschrieben haben.

Die meisten Blogs geben Ihnen wahrscheinlich Tipps, wie Sie schnell zu den Dingen kommen, mit denen Sie schnell bezahlt werden, aber ich weiß nicht, ob dies eine gute langfristige Strategie ist. Wenn Sie nicht wissen, womit Sie spielen, woher wissen Sie, ob es eine gute Wahl ist? Was wirst du tun, wenn du auf Probleme stößt, in Foren jammern gehst oder es selbst herausfindest?

Jari Komppa
quelle
4

Es gibt eine Menge Entmutigung über diesen Satz in der allgemeinen Programmiergemeinschaft, aber ich denke, wir alle wissen, dass viele von uns nichts mehr lieben, als das Rad neu zu erfinden und einen Weg zu finden, wie es sich ein wenig besser, schneller und kühler drehen lässt.

Ständig kommen neue Technologien auf den Markt, bei denen Menschen das Rad neu erfinden müssen. OpenCL und andere GPU-Computersprachen sind ein gutes Beispiel.

Sie könnten ein Framework verwenden, das die diesjährigen neuen Funktionen enthielt, das Sie jedoch selbst erstellen können. Wenn Sie wirklich recherchieren und Verbesserungen an den bereits vorhandenen vornehmen, können Sie wirklich neue Wege in Bezug auf Leistung und Nutzen beschreiten.

Sobald Sie ein paar Räder erfunden haben, die Sie zum Laufen bringen, kennen Sie Ihre Sachen ziemlich gut und sind ein starker Bonus!

Außerdem macht es verdammt viel Spaß.

Garet Claborn
quelle
1

Und es gibt Leute, die behaupten, sie seien produktiver, gerade weil sie das Rad neu erfinden.

Ein typisches Beispiel: Eskil Steenberg, Schöpfer von World of Love (ausgezeichnetes Video, in dem er über sein Spiel, seine Engine und fantastische Tools sowie seine Philosophie spricht : http://vimeo.com/18423305 )

Wille
quelle
1

Wenn es Ihr erstes Mal ist, auch wenn es nur zum Lernen gedacht ist, ist es immer noch besser, eine Art Motor zu verwenden, da Sie lernen, was der Motor für Sie bereitstellen kann.

"Das Rad" in der Metapher ist das Konzept, nicht die Umsetzung. Auch wenn Sie das Rad nicht neu erfinden, müssen Sie sich entscheiden, ob Sie eines kaufen oder eines selbst herstellen. Wenn Sie also Ihren eigenen Motor bauen, müssen Sie das Rad nicht einmal neu erfinden. Sie möchten lediglich Ihr eigenes Rad für einen bestimmten Zweck bauen, z.

tia
quelle
0

Die Sache ist, was beim Spielen viel Zeit in Anspruch nimmt, ist der tatsächliche Inhalt und das Erstellen und Testen von Assets - im Allgemeinen nicht das Schreiben von Code. Das ist wahrscheinlich der Grund, warum es einfach ist, diesen Teil zu überspringen und eine vorhandene Engine zu verwenden, um mehr Zeit mit Inhalten, Spieldesign und Bugs auf höherer Ebene zu verbringen.

Ich denke, wenn Sie alles von Grund auf neu machen, um zu lernen, werden Sie ein gutes Gefühl für die Arbeit hinter den vorhandenen Motoren entwickeln und die Möglichkeit verbessern, später eine auszuwählen, falls erforderlich.

Tun Sie zum Spaß und zum Lernen, was immer Sie möchten. Wenn ich Content-Pipeline-Klassen von Grund auf neu schreiben müsste, alle lästigen Details und Randfälle des Dateisystems und der Asset Loader behandeln müsste, wäre ich wahnsinnig - solange ich genug gelernt habe, um ein wirklich gutes Verständnis dafür zu haben, Ich neige dazu, es zu vermeiden, wenn jemand es bereits gut gemacht hat (obwohl dies zutrifft, passen viele Frameworks und Engines nicht zu meiner eigenen Vorstellung von "gut", was Anlass wäre, etwas neu zu schreiben). Wenn ich nicht weiß, wie es geht, mache ich es wirklich gerne mindestens einmal, um die feineren Details dessen, was es ist, zu erfassen - wie Ray Dey bereits sagte.

Oskar Duveborn
quelle
0

Es ist nur ein Fehler, wenn Sie keine Zeit zum Lernen haben. Wenn Sie die Zeit haben, versuchen Sie es. Wenn du es nicht tust, dann tu es nicht.

Tim Holt
quelle