Wird es eine bessere Lernerfahrung sein, mein aktuelles Projekt zu polieren, als ein neues zu beginnen? [geschlossen]


15

Ich habe vor vielen Jahren angefangen zu programmieren. Jetzt versuche ich Spiele zu machen. Ich habe viele Empfehlungen gelesen, um mit dem Klonen einiger bekannter Spiele wie Galaga, Tetris, Arkanoid usw. zu beginnen. Ich habe auch gelesen, dass ich das ganze Spiel spielen sollte (einschließlich Menüs, Sound, Partitur usw.).

Gestern habe ich die erste vollständige Version meines Arkanoid-Klons fertiggestellt. Aber es ist noch lange nicht vorbei. Ich kann noch monatelang daran arbeiten (ich programmiere als Hobby in meiner Freizeit), indem ich einen Bildschirmauflösungs-Umschalter einsetze, die Steuertasten neu zuordnete, Power-ups, die von zerbrochenen Ziegeln fallen, und ein riesiges usw.

Aber ich möchte nicht für immer lernen, wie man EIN Spiel klont. Ich habe das Bedürfnis, zum nächsten Klon zu gelangen, um einige Gestaltungsideen anzuwenden, auf die ich bei der Entwicklung dieses Arkanoid-Klons gestoßen bin (gleichzeitig lese ich das GoF-Buch und viel Quellcode aus dem Ludum Dare 21-Spielewettbewerb).

Die Frage ist also: Soll ich den Arkanoid-Klon so lange verbessern, bis er alle Funktionen des Originalspiels aufweist? oder sollte ich zum nächsten Klon übergehen (es gibt fast unendlich viele Spiele zum Klonen) und anfangen, die Dinge zu reparieren, die ich mit dem vorherigen Klon falsch gemacht habe?

Dies kann eine sehr subjektive Frage sein. Bitte beschränken Sie die Antworten auf den effektivsten Weg, um zu lernen, wie ich meine eigenen Spiele mache (keine Ideen von jemandem klonen). Vielen Dank!


KLÄRUNG

Um zu verdeutlichen, was ich implementiert habe, mache ich diese Liste:

Funktionen implementiert:

  • Sprungfähigkeiten (der Ball springt an Wänden, auf Ziegeln und auf der Stange).
  • Hört sich an, wenn der Spieler auf Ziegelsteinen und der Leiste aufprallt und gewinnt oder verliert.
  • Grundlegendes Titelmenü (nur neues Spiel und beenden). Auch In-Game-Menü und Gewinn / Verlust-Menüs.
  • Nur drei Level, aber das Kartensystem ist so einfach, dass ich nicht glaube, dass es mir viel beibringen wird (irre ich mich?).

Funktionen nicht implementiert:

  • Power-Ups beim Brechen der Steine.
  • Komplexe Steine ​​(mit mehr als einem "Trefferpunkt" und unbesiegbar).
  • Bessere Grafik (ich bin nicht wirklich gut darin).
  • Programmieren des Polierens (Designmuster intensiver verwenden).

Hier ist ein Link zu seiner (minimalen) Webseite: http://blog.acamara.es/piperine/ Ich schäme mich, das zu zeigen, also bitte schlag mich nicht zu fest :-)

Meine Frage bezog sich auf die nicht implementierten Funktionen. Ich fragte mich, was der schnellste (optimale) Weg zum Lernen war. 1) Implementiere die nicht implementierten Funktionen in diesem Projekt, die immer größer werden, oder 2) erstelle ein neues Spiel, das mir wahrscheinlich diese und neue Lektionen beibringen wird.


ANTWORTEN

Ich wähle @ ashes999 Antwort, weil ich in meinem Fall denke, ich sollte mehr polieren und versuchen, das Spiel "zu versenden ". Ich denke, alle anderen Antworten sind ebenfalls wichtig zu berücksichtigen. Wenn Sie also mit derselben Frage hierher gekommen sind, bevor Sie eine Eilentscheidung treffen, lesen Sie die gesamte Diskussion.

Danke euch allen!


Sorry, aber sagen , es ist eine objektive Frage, nicht machen es Ziel. Es würde von der Person , ihren Fähigkeiten, Zielen und ihrer Motivation abhängen , ob sie Projekte ändern sollte - all dies macht es zu einer subjektiven Frage. Es gibt einfach keine "richtige" Antwort auf diese Frage.
Cyclops

Du hast recht, ich dachte an "subjektiv", schrieb aber "objektiv" (das passiert mir auch mit links und rechts ...). Ich habe es geändert.
Alejandro Cámara

Wups, tut mir leid das zu hören. Ich hasse es, das zu sagen, aber es ist immer noch keine wirklich gute Frage für diese Seite. Der Zweck der StackExchange-Sites besteht darin, Fragen / Antworten zu erstellen, die für viele Personen nützlich sind , und keine Fragen, die nur für eine (oder einige) Personen gelten. Auch sollte es (idealerweise) eine einzige richtige Antwort geben - aber für die Menschen in der Zukunft, die diesen Beitrag finden, könnten einige die eine Antwort am besten finden und andere die andere, widersprüchlichere Antwort besser.
Cyclops

1
Ich fand es auch keine gute Frage. Aber der Grund, warum ich es trotzdem geschrieben habe, ist, dass vielleicht jemand mit dem gleichen Dilema feststeckt. Auch wenn es keine "gute" Antwort gibt, könnte die Diskussion anderen Menschen Aufschluss darüber geben, welche Antwort "richtig" ist.
Alejandro Cámara

1
Persönlich denke ich, dass der Umfang eines Lernprojekts alle Spielfunktionen umfassen sollte (implementieren Sie also die Power-Ups), aber rufen Sie danach das fertig gestellte Projekt auf und fahren Sie fort; kümmere dich nicht darum, Grafiken zu polieren.
jhocking

Antworten:


32

Ich bin mit Patricks Antwort völlig nicht einverstanden . Wenn Sie als Spieleentwickler erfolgreich sein wollen, müssen Sie zunächst lernen, wie Sie aus einer Idee ein komplettes, ausgefeiltes Spiel entwickeln.

Mit der Zeit werden Sie feststellen (was mir nach einigen Jahren klar wurde), dass das Programmieren nur ein kleiner Teil Ihres Spiels ist. Es ist einfach, weil es Spaß macht. Wenn Sie sich jedoch nur an die Programmierung halten, werden Sie eine Spur von unvollständigen Proof-of-Concepts und Demos erhalten.

Stattdessen schlage ich sehr stark vor, dass Sie eine Website und ein Blog erstellen (Wordpress ist großartig für diese Art von Dingen), Ihre Spiele beenden (beginnend mit Arkanoid) und sie in der Wildnis veröffentlichen.

Es ist auch wichtig zu wissen, dass Sie in diesem Fall steuern können, wann das Spiel fertig ist. Wenn Sie 1000 Levels mit 10 Hauptfunktionen wollen, ist das in Ordnung. Wenn Sie 10 Levels mit 3 Hauptfunktionen wollen, ist das in Ordnung. (Tatsächlich empfehle ich kleinere Projekte häufiger, weil Sie mehr lernen und sich sehr darauf konzentrieren, auf diese Weise zu polieren.)

Bearbeiten: Als Reaktion auf die Menschen, die nicht einverstanden sind, habe ich das Gefühl, ich muss klären. Wenn Sie ein Spiel nur für einen Zweck / ein Experiment erstellt haben (was ich die ganze Zeit mache ), schneiden Sie auf jeden Fall den Umfang ab und versenden Sie es. Niemand sagte, Arkanoid brauche 1000 Levels, um ein poliertes Spiel zu sein. Mach einfach genug Levels, damit es deiner Meinung nach Spaß macht und mach weiter.

Es ist möglich, Jahre mit einem Spiel zu verbringen und es niemals zu versenden. Aber ich denke, es ist viel einfacher, in das andere Loch zu geraten, nur technische Demos und Prototypen für immer herzustellen. Ich habe mehr als 10 Jahre gebraucht, um damit aufzuhören.


3
+1 "Versand ist eine (erforderliche?) Funktion", obwohl Sie in diesem Fall den Arkanoid-Klon auch als Prototyp sehen können und Prototypen weggeworfen werden sollen, wenn ein Konzept bewiesen oder widerlegt wird.
Oskar Duveborn

2
@Oskar Es ist einfacher, 1000 Prototypen herzustellen, als ein Spiel auszuliefern. Letztendlich wird der Versand Sie erfolgreich machen, während Prototypen nur einige Codierungsfähigkeiten verbessern.
ashes999

2
Warum entlassen "nur einige Codierfähigkeiten erhöhen"? Er fragt speziell nach der Lernerfahrung.
jhocking

@jhocking wegen Patricks Antwort. Meine Antwort ist speziell, sich nicht nur auf das Programmieren zu konzentrieren.
Asche999

1
@Yannbane Wenn die Leute es spielen und denken "Ja, es ist ein vollständiges Spiel", auch wenn es ein kurzes Spiel ist, ist es vollständig. Unvollständig sind in der Regel defekte Spiele oder Spiele mit etwa einem Level. Sobald Sie es aus der Tür versenden, sind Sie fertig.
Asche999

8

Ich würde eine Synthese der beiden vorherigen Antworten vorschlagen. Grundsätzlich stimme ich zu, dass es enorm wichtig ist, zu lernen, wie man eine Idee aufgreift und ein vollständiges, ausgefeiltes Spiel liefert. Das Internet ist übersät mit halbfertigen Projekten, von denen jemand angefangen und sich dann gelangweilt hat. Die Fähigkeit, von Anfang bis Ende an einem Projekt festzuhalten, was ich als "Finishing-Fähigkeit" bezeichne, ist selten und kostbar.

Sie sind jedoch noch nicht in der Lernphase; Ich würde nicht empfehlen, dies mit Ihrem ersten Spiel zu tun, sondern ein paar kleinere Spiele zu machen, mit denen Sie lernen können, bevor Sie an Ihrem ersten vollständigen Projekt arbeiten.

(Abgesehen davon: Ich habe das noch nie genau herausgefunden, aber jetzt, wo ich darüber nachdenke, denke ich, dass Finishing-Fähigkeit die Hauptsache ist, die erfahrene Entwickler von Anfängern unterscheidet.)


ZUSATZ: Ich denke, viele Meinungsverschiedenheiten zwischen den Antworten beruhen nur auf unterschiedlichen Annahmen darüber, wo er sich in seinem Prozess befindet. Als er zum Beispiel sagte "Ich habe die erste vollständige Version meines Arkanoid-Klons fertiggestellt", konnte das viele verschiedene Dinge bedeuten. In meinem Fall, da er früher sagte "Ich habe auch gelesen, dass ich das ganze Spiel machen soll (einschließlich Menüs, Sound, Score), dann gehe ich davon aus, dass er dieses Zeug tatsächlich implementiert hat und fragt, ob er noch weiter machen soll Falls ich nein sagen würde, rufen Sie dieses Projekt als erledigt auf und fahren Sie mit dem nächsten Projekt fort.

Dies ist jedoch nur eine Annahme von meiner Seite; Er hat nicht wirklich gesagt, dass er das getan hat , nur dass er es gelesen hat. Wenn er das nicht getan hat, würde ich sagen, mach nicht weiter, bis du das getan hast.


1
+1 Schlagt mich! Klingt so, als würden Sie gerade erst anfangen, also ist es wichtiger, so viel Zeug wie möglich zu machen und zu lernen, zu lernen, zu lernen. Wenn Sie besser werden, können Sie sich auf das Polieren konzentrieren. Andernfalls verbringen Sie am Ende 2 Jahre mit Ihrem ersten Spiel.
NoobsArePeople2

1
Nicht zustimmen. Sie können zehn Jahre lang programmieren und niemals ein einziges Spiel ausliefern. Oder Sie versenden in den ersten sechs Monaten einen einfachen Arkanoid-Klon. Ich bin der Meinung, dass Letzteres Sie insgesamt zu einem stärkeren Entwickler macht, während Ersteres lediglich Ihre Softwareentwicklungsfähigkeiten verbessert (und nicht so sehr - Sie denken nie an Tools, Lebenszyklus usw., sondern nur an das Codieren).
ashes999

Nun, ich habe jetzt nicht 10 Jahre gesagt, oder? Es ist jedoch eine Frage, ob es besser ist, ein Jahr lang eine Reihe von Übungsaufgaben vor dem 6-monatigen Gesamtprojekt zu programmieren, als das 6-monatige Gesamtprojekt direkt als erstes Projekt durchzuführen. Dies ist eine wichtige Frage in der Lehre, die ich mache; Ist es besser, wenn die Schüler ein Semester mit einer ganzen Reihe kleiner Projekte verbringen oder mit einem einzigen großen Projekt, das die gesamte Klasse umfasst? Persönlich neige ich zu "vielen kleinen Projekten für Studenten, einem einzigen großen Projekt in der Graduiertenschule".
jhocking

Mein Standpunkt ist, dass Sie, so wichtig das gesamte Projekt auch ist, für den Erfolg dieses Projekts zunächst die Grundlagen einiger früherer Projekte erlernt haben müssen.
jhocking

1
Welche 2 vorherigen Antworten? Ab sofort ist dies Platz 2 nach Stimmenzahl
ADB

5

Ich denke, Sie haben die richtige Idee, jetzt mit dem nächsten Projekt fortzufahren. Ich denke, das liegt daran, dass Sie bereits von Ihrem ersten gelernt haben und anwenden möchten, was Sie gelernt haben! Sobald Sie das Erlernen der Grundlagen verlangsamt haben, ist dies die Zeit, tiefere Funktionen zu klonen, von denen Sie immer wieder lernen können.

Denken Sie daran, dass Sie an Programmierkenntnissen arbeiten und nicht an Spieledesign. Sie möchten also am Ende jedes Spieledesign programmieren können, wenn Sie mit dem Lernen fertig sind.


3
Obwohl ich @ ashes999 und Ihnen gleichermaßen zustimme, habe ich das Gefühl, dass er im angegebenen Kontext von OP mit Implementierungen experimentiert und lernt, verschiedene Arten von Spielen zu schreiben. In diesem Fall denke ich, er sollte es vorziehen, zum nächsten Schritt überzugehen.
Ingenieur

Eigentlich hat er impliziert, dass er Game Design lernen will und nicht nur Spieleprogrammierung. In seinem letzten Satz sagte er: "Der effektivste Weg zu lernen, wie ich meine eigenen Spiele mache (ohne jemandes Ideen zu klonen)."
jhocking

2

Warum nicht den Klon zu "deinem" machen? Fügen Sie einige neue interessante Wendungen hinzu, die Sie interessieren werden.

Es gibt einen Vorteil, "Ihr eigenes" Projekt zu starten. Sie haben das Gefühl, dass es noch nie zuvor durchgeführt wurde. In Wirklichkeit hat jemand wahrscheinlich schon etwas ähnliches. Sofern Sie nicht vorhaben, ein neues Genre des Spielens zu erfinden, würde ich vorschlagen, diese "Klone" zu Ihren eigenen zu machen.

Beispielsweise hat mein Kumpel im College einen Pong "Klon" erstellt. Er hat es sich zu Eigen gemacht und ein völlig neues Gameplay hinzugefügt, bei dem man mit einem Power-Up 15 Sekunden lang einen süßen Panzer herumfahren und so viele Steine ​​wie möglich zerstören konnte!

Der beste Weg, um die Entwicklung von Spielen (Kunst, Code, Design) zu lernen, ist, es einfach zu machen. Sie können es zunächst nicht gut machen, aber der Schlüssel ist, einfach dran zu bleiben und mehr Code zu schreiben, mehr Animationen zu zeichnen und mehr Ebenen zu entwerfen !! Meiner Meinung nach spielt es keine Rolle, ob Sie etwas "klonen", solange Sie es zu Ihrem eigenen machen, weiter machen, es interessant machen und Spaß haben!


2

Um Ihre Frage zu beantworten: Ja , das Polieren Ihres aktuellen Projekts ist eine bessere Lernerfahrung als das Starten eines neuen Projekts.

1) Sie müssen sich angewöhnen, Dinge zu erledigen. Das an sich ist eine Lernerfahrung.

2) Die Aufgaben, für die Sie "zu faul zum Hinzufügen" sind (aus Mangel an einem besseren Begriff), können eine Menge von Spielentwicklungslektionen enthalten, auf die Sie einfach nur verzichten.

3) Wenn Sie von Arkanoid gelangweilt sind , können Sie es jederzeit beiseite legen und vorerst an etwas anderem arbeiten. Daran ist nichts auszusetzen.

1) Zu viele unfertige Sachen sind schlecht. Sie können Ihr unfertiges Produkt nicht wirklich verwenden, um Ihre Fähigkeiten effektiv zu demonstrieren.

Dies liegt daran, dass eine Reihe von unfertigen Dingen wie ein Schrank voller Müll ist. Einige davon sehen nützlich aus, aber in Wirklichkeit ist alles sehr nutzlos, und die Realität der Spielebranche ist, dass nur wenige Ihren "Junk" (unfertige Spiele) zu schätzen wissen.

Unvollendete Spiele sind zu häufig. Die Leute haben sie rausgebracht und sagen: "Du, dieses Spiel war so gut wie StreetFighter. Jetzt kannst du dich hin und her bewegen." Unscheinbar . Niemand kann in deinem Kopf sehen, was das Spiel "sapposa" war. Sie sehen es nur für das, was es ist, unvollendet.

Ein unfertiges Spiel ist wie eine halbgebackene Torte. Einige Leute werden das vielleicht zu schätzen wissen, aber es schmeckt tatsächlich widerlich, und 20 Minuten länger im Ofen könnten das, was Sie schon halb getan haben, für alle köstlich machen.

2) Die Funktionen, an denen Sie nicht arbeiten, können einige sehr wertvolle Lektionen enthalten.

Das Zeug, das Sie am Ende hindern:

Funktionen nicht implementiert:

  • Power-Ups beim Brechen der Steine.
  • Komplexe Steine ​​(mit mehr als einem "Trefferpunkt" und unbesiegbar).
  • Bessere Grafik (ich bin nicht wirklich gut darin).
  • Programmieren des Polierens (Designmuster intensiver verwenden).

Einige dieser Dinge können Sie weglassen. Zum Beispiel "Verwenden Sie die Entwurfsmuster intensiver". Ein solches Refactoring ist eine Zeitverschwendung für ein Haustierprojekt. Um dies anzuwenden, sollten Sie einfach ein neues Projekt starten.

Einige davon sind einfach. ZB komplexe Steine. Einige davon sind tatsächlich viel Arbeit . Powerups sind nicht einfach, sie erfordern das Erstellen von Funktionen wie Kanonen oder Kugeln. Dazu muss ein Strahlschnittcode hinzugefügt werden.

Ich denke, was Sie sehen, ist, dass "das Aufstellen des Gerüsts so einfach war ... und wie es aussieht, ist es fast geschafft. Die Fertigstellung würde so viel Arbeit bedeuten, könnte auch jetzt aufhören." Ja, das Aufstellen des Holzrahmens für ein Haus ist ebenfalls "einfach" und möglicherweise die halbe Arbeit. Trockenbau, Strom, Sanitär sind alles "Details". Aber wenn Sie das Haus nicht fertig stellen, "kauft" niemand, wie großartig das Haus gewesen wäre - wenn Sie es nur fertiggestellt hätten.

3) Wenn es Ihnen langweilig ist, woran Sie gerade arbeiten, ist nichts falsch daran, etwas anderes zu starten.

Das bedeutet nicht, dass Sie Junk sind, woran Sie arbeiten, aber es schadet nicht, ein oder zwei Monate lang über andere Dinge nachzudenken oder ein neues Spiel zu starten. Sie können mit einer neuen Perspektive zu Arkanoid zurückkehren.

Auch ein letzter Punkt. Neben alle zu erwartenden Eigenschaften von Arkanoid Gebäuden aus, dann ist es noch mehr interessant Ihre eigene Wendung auf sie zu setzen. Anstatt also kurze Anhalten auf Ihrem Klon, sollten Sie es nehmen einen Schritt weiter und Innovationen auf dem Original - Spiel.


1

Die richtige Antwort hängt wirklich davon ab, was Sie als Nächstes tun möchten. Wenn Sie zu etwas Neuem übergehen, besteht die Gefahr, dass Sie dieselben alten Probleme erneut lösen und Ihre Fähigkeiten nicht wirklich erweitern, aber Sie können zu etwas Neuem übergehen. Wenn Sie fortfahren zu polieren, gibt es nützliche Dinge, die Sie aus der von Ihnen gegebenen kurzen Liste lernen können, und die werden Ihnen in Zukunft gute Dienste leisten, aber Sie arbeiten immer noch an derselben alten Codebasis.

Was ich empfehlen würde, und dies ist eine rein persönliche Meinung, ist, zu etwas Neuem überzugehen und den Lack dafür aufzubewahren. Versuchen Sie gleichzeitig, sich mit dem Neuen zu dehnen. Wenn Sie derzeit keine 3D-API verwenden, lernen Sie eine und verwenden Sie sie. Wenn Sie eines verwenden, lernen Sie das andere und verwenden Sie es. Oder wechseln Sie zu einem höheren Level bei dem, den Sie verwenden. Verwenden Sie von Anfang an eine bessere Sound-, Physik- oder Eingabe-Engine. Was auch immer, ich sehe das Wichtigste darin, ein wenig aus Ihrer aktuellen Komfortzone herauszukommen und mehr Fähigkeiten und Wissen aufzubauen, während ich Spaß daran habe.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.