Ist das Entwickeln von Spielen der beste Weg, um Programmieren zu lernen? [geschlossen]

21

Kürzlich hörte ich von einem Ausbilder, dass das Entwickeln von Spielen der beste Weg sei, um Programmieren zu lernen. Abgesehen von der Tatsache, dass alles in Code erstellt werden musste, sagte er, dass Sie OOP wirklich vollständig erfahren und in Ihre Programme implementieren können. Mit anderen Worten, alles, was Sie in einem Spiel machen, ist sowohl technisch als auch konzeptionell ein wörtliches Objekt. Ist es sicher, diese Annahme zu machen? Oder gibt es beim Programmierenlernen immer Ausnahmen?

Beachten Sie, dass es auf die Entwicklung von .net / xna / c # ausgerichtet war.

Edward
quelle
3
"Die Tatsache, dass alles in Code erstellt werden musste". Was ist mit den 3D-Modellen, Texturen, Sounds und anderen Ressourcen? Sie können eine Spiele-Engine ohne sie erstellen, aber ein vollständiges Spiel mit sehr wenigen Ressourcen, auch wenn dies nicht unmöglich ist, wird eine ziemliche Herausforderung sein.
POSIX_ME_HARDER
@Cheshire: Nun, Sie könnten solche mit Dingen wie Processing programmieren. Ich sage aber nicht, dass es sehr praktisch ist.
Anto
2
@Cheshire: Ja, einige Leute nehmen diese Herausforderung sehr direkt an, indem sie alles prozedural erstellen . Soweit ich weiß nicht allzu häufig in kommerziellen Spielen, aber beliebt, um zu beweisen, dass dies möglich ist , und ich habe einige ziemlich beeindruckende Demos gesehen.
FrustratedWithFormsDesigner
6
Ich nehme an, diese Frage bedeutet "Spieleentwicklung" anstatt "Spiele spielen", wenn ich nach dem Spielen frage. Ich kann nicht aufhören, den intellektuellen Sprung von Call of Duty zu C ++ zu schaffen ...
HorusKol
1
Wenn Sie möchten, dass das Spiel spielbar ist, müssen Sie möglicherweise Kompromisse zwischen reinem OO-Design und Geschwindigkeit eingehen.
Peter Taylor

Antworten:

25

Die Spieleentwicklung ist meiner Meinung nach eine der herausforderndsten Entwicklungen. Sehen wir uns alle Konzepte an, die eine Person, die einen Ego-Shooter erstellt, kennen muss:

  • Grafik
    • 3d berechnungen
    • Geschwindigkeitsoptimierungen
    • Schnittstelle mit Grafikhardware
  • Das Spiel
    • Datenstrukturen
    • Dateiformate zum Speichern
    • Allgemeines Design, oder Sie schaffen ein Durcheinander, dem Sie keine Features hinzufügen können
    • Netzwerkkenntnisse, wenn das Spiel im Mehrspielermodus ist
  • AI-Algorithmen
    • Wegfindung
    • Kampfkämpfe
  • Veröffentlichen
    • Betriebssystemkenntnisse, z. B. wie Installer arbeiten
    • Möglicherweise Webentwicklung, um das Wort herauszubekommen

Sie sehen, ein Spiel kann viele Bereiche gleichzeitig abdecken . Dies macht es zu einem hervorragenden Lernwerkzeug, wenn Sie bereit sind, die Zeit zu verbringen und es gut zu machen.

OOP ist ein Muster, das gut funktioniert. Sie können ein Spiel als Lernwerkzeug verwenden, um gute Designtechniken zu üben.

Um Ihre Frage zu beantworten, ist dies jedoch nicht die einzige Möglichkeit, das Programmieren zu erlernen. Wenn Sie erst einmal ein fortgeschrittener Entwickler sind, können Sie beim Erstellen eines Spiels viele Programmierkonzepte und -ebenen berühren. Außerdem macht es Spaß!

Michael K
quelle
12
Sie haben eine Sache vergessen, eine Geschichte für dieses Spiel, und manchmal ist die Geschichte alles, was zählt.
Mahmoud Hossam
Dies setzt voraus, dass es sich um ein 3D-Spiel handelt.
Adam Harte
1
@Adam: Ja, aber 2d hat auch seine Berechnungen. Ich schließe jetzt absichtlich testbasierte RPGs aus;)
Michael K
1
@ Mohmoud Die Geschichte ist NIE "alles was zählt". Dies ist ein ebenso großer Fehler wie eine schlechte / fehlende Geschichte. Es gibt viele Aspekte, die ein gutes Spiel ausmachen. Ich möchte kein langweiliges Spiel spielen, egal wie großartig die Geschichte ist. Auch die meisten erfolgreichen Puzzlespiele haben keine Geschichte.
Adam Harte
Spieltheorie ist auch praktisch.
VirtuosiMedia
46

Nicht tautologisch sein, aber Programmieren ist der beste Weg, um Programmieren zu lernen. Wenn Sie sich für Computerspiele interessieren, ist das Programmieren möglicherweise eine gute Möglichkeit, das Programmieren zu erlernen.

Ich mag keine Spiele, aber ich liebe Mathe, so viele meiner Lernprojekte waren sehr mathematischer Natur.

Unter dem Strich müssen Sie Wege finden, um Probleme mit Code zu lösen, und Spiele funktionieren für viele Menschen.

Eric Wilson
quelle
das habe ich ursprünglich gedacht. Aber denken Sie daran, dass Sie absolut neu in der Programmierung sind. Gaming scheint ein hervorragendes Werkzeug zu sein, um viele verschiedene Konzepte zu erlernen. Michael listet einige davon auf. Um ehrlich zu sein, ich wünschte, ich hätte OOP zuerst aus der Sicht des Spiels gelernt. Dies könnte jedoch darauf zurückzuführen sein, dass die Erklärung unzureichend war oder die Entwicklung von Geschäftsanwendungen das Verständnis des Konzepts erschwert. Es ist auf jeden Fall interessant, beide Argumente zu beobachten.
Edward
@penguin Inwiefern bringt dir das Spielen von Call of Duty oder Halflife das Programmieren bei?
Jwenting
13

Es ist unter anderem eine Möglichkeit, das Programmieren zu erlernen. Wenn Sie Code schreiben, lernen Sie Dinge. Nun, ist es der beste Weg? Nicht so sicher.

Zumindest sind die beiden von Ihrem Lehrer angegebenen Gründe nicht gültig .

  • "Alles musste im Code erstellt werden" : Wenn Sie eine Business-App schreiben, schreiben Sie tatsächlich den Code. Es wird nicht von Zauberhand geschrieben. Ja, es gibt Helfer, mit denen Sie automatisch generierten Code verwenden können. Nein, es ist nicht obligatorisch, sie zu verwenden. Übrigens sind die automatisch generierten Teile im Allgemeinen das nervigste Programmieren (nicht durch Hinzufügen von Steuerelementen zum Windows Forms-Steuerelement lernen Sie etwas Aufregendes und Nützliches).

  • "Sie können OOP wirklich vollständig erleben und in Ihre Programme implementieren" : Jemand muss mir erklären, warum dies nur für Spiele gilt, aber für alles andere ungültig ist. Wenn Sie OOP verstehen und es verwenden möchten, können Sie es auch in Geschäftsanwendungen verwenden. Wenn Sie es nicht erhalten oder nicht verwenden möchten (und beispielsweise die funktionale Programmierung bevorzugen), werden Sie durch die Spieleentwicklung nicht gezwungen, Änderungen vorzunehmen.

Aber:

Das Entwickeln von Spielen kann Spaß machen . Die meisten jungen Leute mögen Spiele, deshalb würden sie gerne ein Spiel entwickeln, anstatt eine Geschäfts-App zu schreiben, was für die meisten von ihnen äußerst langweilig sein wird. Wenn Lehrer dies sehen, können sie anfangen zu glauben, dass das Spielen der beste Weg ist, um Programmieren zu lernen, und dann werden sie versuchen, eine logische Erklärung dafür zu finden.

Abgesehen davon machen diese Lehrer die Spieleentwicklung für junge Leute genauso langweilig wie die Entwicklung von Geschäfts-Apps. Wenn sie der Meinung sind, dass Spiele gemacht werden müssen , um OOP usw. zu lernen, werden sie ihre Schüler auffordern, die Art von Projekten zu machen, die überhaupt keinen Spaß machen. Dies war einer der größten Fehler meiner Lehrer, als ich am College war. Sie gaben uns sehr oft Spielprojekte, um in Ada im Konsolenmodus zu schreiben. Keine Grafiken. Kein Spaß. Keine Benutzererfahrung. In meinem ganzen Leben und meiner Karriere habe ich noch nie so langweilige Projekte gesehen.

Arseni Mourzenko
quelle
4
Spiele gut mit OOP , weil es sehr einfach ist , zu sehen , wie jeder BadGuy, Weapon, PowerUpund andere Elemente in einem Spiel einfach ein Objekt sein können. Sie erhalten zu Programm - Interaktionen zwischen den Objekten und sehen sie auf dem Bildschirm. Ich denke, der visuelle Teil macht es so attraktiv. Business - Anwendungen , die Art Hierarchien haben ServerTaskScheduler, AbstractDataProcessor, UserQueryAgentusw ... sind nicht so spannend , auch wenn sie die gleichen OOP - Konzepte wie in Gaming lehren kann.
FrustratedWithFormsDesigner
4
@FrustratedWithFormsDesigner: vielleicht nur bekomme ich es nicht , weil ich zu viel Zeit Business - Anwendungen zu entwickeln verbracht, aber ich verstehe nicht , warum würde es schwieriger sein , zu sehen , wie Customeroder Productoder Transactionkönnen Objekte sein. Aber ich verstehe, dass es viel angenehmer ist, mit BadGuys umzugehen, als mit langweiligen Transactions.
Arseni Mourzenko
Es hat mehr mit der Ebene des abstrakten Denkens zu tun. Einige Programmierer sind oft auf Namen fixiert, weil sie keine Ahnung haben, worauf sie sich beziehen sollen. ZB habe ich einige Entwickler getroffen, die keine Ahnung haben, was das Transactionbedeutet.
Spoike
7

Spieleprogrammierung ist der beste Weg, um Spieleprogrammierung zu lernen. Wenn Sie die Webentwicklung erlernen möchten, tun Sie dies, wenn Sie die Systemprogrammierung erlernen möchten, tun Sie dies und so weiter.

Das Programmieren von Spielen ist herausfordernd und wird Ihnen höchstwahrscheinlich eine Menge Dinge beibringen (Michael hat in seiner Antwort viele festgestellt, und viele von ihnen sind sehr herausfordernd und auch außerhalb von Spielen verwendbar). Das Erstellen eines Rollenspiels oder eines Tycoons (oder eines ähnlichen Spiels) wird Ihnen viel über das OOP-Design beibringen, da sie sich sehr gut für dieses Paradigma eignen. Abhängig von der Komplexität Ihrer Grafik und Physik können Sie auch viel über Leistungsaspekte, einige Hardcore-Mathematik für Spiele usw. lernen.

Es ist ein guter Weg und der beste Weg, um einige Dinge zu lernen, aber es ist kein überlegener Weg, um Programmieren zu lernen. Unabhängig davon, wie viele Spiele Sie programmiert haben, ist es dennoch wahrscheinlich, dass Sie keine Ahnung haben, wie Sie ein Betriebssystem erstellen. Ich denke, dass die meisten Entwickler noch etwas verdienen könnten, wenn sie ein Spiel entwickeln, auch wenn sie dies nicht als Hauptdisziplin der Programmierung tun, solange sie Zeit haben.

Anto
quelle
7

Frage: Was ist die beste Methode, um das Programmieren zu lernen?

Antwort: Die Methode, die Sie tatsächlich anwenden

Dh, wenn Sie etwas lernen oder tun, spielt es keine Rolle, welche Methode Sie wählen, solange es sich um eine Methode handelt, die Sie tatsächlich durchlaufen.

Wenn Ihnen das Spielen wirklich Spaß macht, probieren Sie es aus. Wenn Sie die Lösung mathematischer Probleme zufriedenstellender finden, fangen Sie damit an. Es gibt viele verschiedene Arten des Programmierens und jedes erfordert unterschiedliche Fähigkeiten. Daher ist es eine gute Wette, mit der zu beginnen, die Sie am interessantesten finden. Mit dieser Wette werden Sie wahrscheinlich arbeiten.

... Aber ja, Gaming ist ein guter Weg, um eine breite Palette von Programmen zu erlernen, da es Mathematik, Parallelität, Algorithmen, oop, Grafiken usw usw enthält

Homde
quelle
4

Wenn Sie gerne spielen, ist das Schreiben von Spielen ein guter Einstieg in die Entwicklung, aber ich würde nicht sagen, dass dies der beste Weg ist. Ich denke, der beste Weg ist ein CS-Studiengang, gefolgt von einem Job bei einem Softwarehaus, das in die Ausbildung und Betreuung von Nachwuchskräften investiert.

Abgesehen von dieser zugegebenermaßen ziemlich pompösen Antwort, ja, die Spieleentwicklung würde Ihnen eine Menge guter Fähigkeiten beibringen, und wenn Sie Computerspiele mögen, werden Sie am Entwicklungsprozess interessiert sein. Es muss interessanter sein als viele andere einfache Apps, die man in Büchern findet.

Steve
quelle
2

Ich würde sagen, dass der beste Weg, Code zu lernen, darin besteht, es Ihnen Spaß zu machen. Es muss kein richtiges Spiel sein, sondern eine Art Spiel für dich. Für mich ist es ein Spiel, einige mathematische Probleme zu lösen und Algorithmen so zu entwickeln, dass ich ein komplexes Problem auf dem schnellstmöglichen Weg lösen kann. Fordere mich selbst heraus Ich werde bei jedem Versuch, ein Problem zu lösen, ein besserer Programmierer. Je schwieriger das Problem, desto besser.

Was das Erlernen von Code (Best Practices) angeht, müsste man sich größeren Herausforderungen stellen. Herausforderungen erfordern viel mehr einen einzelnen Ein- / Ausgang

IvoC
quelle
2

Ich habe noch nie von Behauptungen gehört, dass das Spielen von Halflife oder Call of Duty Ihnen Programmierkenntnisse beibringt.

Vielleicht programmieren, aber so etwas sollte ein Anfänger nicht einmal probieren. Und gerade Anfänger haben oft den Eindruck, dass sie mit ihren nicht vorhandenen Programmierkenntnissen den nächsten Blockbuster schaffen können. Sagen Sie ihnen, sie sollen zuerst versuchen, einen PacMan- oder Tetris-Klon zu erstellen, und sie schreien, dass sie das nicht wollen und dass Sie mir "zuh koduz" geben sollen.

jwenting
quelle
1

Nicht wirklich, nein. Es gibt nicht eine beste Art der Projektprogrammierung auf zu lernen. Die beste Art von Projekt ist eines, das für Ihre Interessen relevant ist.

Ich habe zum Beispiel versucht, auf verschiedene Arten das Programmieren zu lernen, einschließlich des Lernens, Spiele zu programmieren. Es schien einfach nie zu kleben.

Wann musste ich dann lernen, wie ich für das programmiere, was ich in meiner Forschung tat? Im Moment kann ich sagen, dass ich zwei Sprachen beherrsche und an einer dritten arbeite. Warum? Weil es für meine Interessen relevant war. Ich hatte einen Grund, mich daran zu halten, einen Grund zu lernen und mehr Probleme zu versuchen, als nur "Übung 8" im Buch.

Dies bedeutet übrigens nicht, dass das Programmieren von Epidemiemodellen der beste Weg ist, um das Programmieren zu erlernen. Aber es war der beste Weg für mich. Finde deins. Es können Spiele sein, aber es kann sehr gut nicht.

Fomite
quelle
+1 für "Die beste Art von Projekt ist eines, das für Ihre Interessen relevant ist". Amen.
Bryan Oakley
0

Nach meiner Erfahrung müssen Sie beim Schreiben eines Spiels (vorausgesetzt, Sie tun dies in Ihrem eigenen / kleinen Entwicklerteam) nicht nur über den algorithmischen / analytischen Teil der Programmierung nachdenken, sondern auch über die Benutzererfahrung und das Design.

Darüber hinaus werden Sie, wenn es sich um ein recht komplexes Spiel handelt, in ein paar Monaten daran arbeiten und erkennen, wie wichtig es ist, alles zu dokumentieren, was Sie später zu einem besseren Mitglied eines Teams macht.

rdasxy
quelle
... aber wenn Sie ein Programm schreiben , das mit einem Benutzer interagiert, müssen Sie dann nicht über die Benutzererfahrung und das Design nachdenken? Wollen Sie damit sagen, dass Sie bei einer herkömmlichen Client-Anwendung nicht wirklich über diese Dinge nachdenken müssen, aber das Spielen zwingt Sie dazu? Können große Desktop-Anwendungen nicht auch mehrere Monate umfassen und eine Dokumentation erfordern? Wie wirkt sich das auf Spiele aus, aber nicht auf andere Arten der Programmierung?
Bryan Oakley
0

Ich würde zustimmen, außer ...

Es ist genauso wahrscheinlich, dass die erste Programmiererfahrung, die viele jemals hatten, darin bestand, einen Lego-Roboter (Mindstorms) zu bauen und zu programmieren.

Während der allgemeine Begriff "Spiel" eine Kategorie definieren kann, die so groß ist, dass sie fast die gesamte Programmierung umfasst, scheint er im Kontext des ursprünglichen Posters immer "Doom-Spiele schreiben" zu bedeuten.

Wie bereits erwähnt, ist der beste Weg, um das Programmieren zu erlernen, etwas zu haben, das Sie wirklich wollen und das ein Programm erfordert. Das heißt - lernen Sie das Programmieren, indem Sie das gewünschte Programm schreiben.

Eines meiner ersten Windows-Programme war ein MIDI-Controller-Programm, weil ich wirklich ein MIDI-Controller-Programm haben wollte, und Windows schien perfekt zu passen (Schieberegler, Schaltflächen, SDK-Unterstützung für MIDI usw.). Ich habe eine Menge über die Windows-Programmierung (das war in den Win 3.1-Tagen) von diesem Programm gelernt.

Ich habe mich aus den hier genannten Gründen auch noch nie für Spieleprogrammierung interessiert - ich zeichne nicht so gut, daher hat jedes Spiel, das ich mache, schlechtere Grafiken als das eines Künstlers. Ich möchte lernen zu programmieren, nicht ein "Game Building Team" zu leiten (lobenswerte, aber völlig andere Übung).

Letztendlich stimme ich der Aussage des Lehrers nicht zu. Der beste Weg, um das Programmieren zu lernen, besteht darin, das Programm zu schreiben, das Sie wirklich wollen.

-R

Huntrods
quelle