Womit können Sie sich gute Spiele verdienen? [geschlossen]

305

Ich glaube, um ein guter Spieleentwickler zu werden, muss man Spiele machen.

Was sind aus Sicht eines Programmierers gute Einsteigerspiele, um sich die Hände schmutzig zu machen? Welche Fähigkeiten und Herausforderungen lehren Sie in jedem dieser Spiele?

Drew
quelle

Antworten:

217

Ausbrechen

Einfaches Spiel, da Sie nicht viel Grund zur Sorge haben (es ist eine Reihe von Ziegelwerten - wenn Sie nur eine Ziegelfarbe haben, ist es eine Reihe von Flaggen), es gibt keine KI, und Sie müssen eine machen ein bisschen Physik, damit der Ball richtig abprallt.

Solitär

Die Regeln sind etwas komplexer als Breakout und die Schnittstelle dazu ist sehr unterschiedlich. Es zwingt Sie, über verschiedene Methoden zur Implementierung eines Spiels nachzudenken. Das heißt, was in einem Spiel funktioniert, ist nicht unbedingt das, was Sie in einem anderen Spiel verwenden würden.

Pac-Man

Dieser ist schön, weil man ein bisschen an KI arbeiten kann. Wenn die Geister dem Spieler folgen (aber nicht zu gut - Sie möchten, dass der Spieler eine Chance hat), kann dies schnell umgesetzt werden, und Sie werden ein lustiges kleines Spiel haben, das Sie optimieren und Freunden und der Familie vorführen können (positives Feedback ist immer hilfreich) eine gute Sache, wenn Sie anfangen).

Ich finde, wenn man in frühen Videospielen nach Inspiration sucht, kann man Unmengen von Ideen finden, die relativ einfach zu implementieren sind. Außerdem können Sie mit supereinfachen Grafiken und Sounds davonkommen, weil Sie sowieso etwas so Einfaches kopieren. Auf diese Weise können Sie sich zunächst auf die Grundlagen konzentrieren - Ihre Spieleschleife in Betrieb nehmen, herausfinden, wie Sie Ihre Pixel auf den Bildschirm bringen, einen Sound abspielen, Punkte aufzeichnen und die Eingaben des Spielers in das Spiel einbringen.

Es spielt fast keine Rolle, für welches Spiel Sie sich zuerst entscheiden - stellen Sie nur sicher, dass Sie etwas Einfaches auswählen, mit dem Sie schnelle Ergebnisse erzielen. Auf diese Weise können Sie am nächsten Tag weitermachen und ein anderes Spiel erstellen. Und ein anderer. Und zum anderen - je mehr du machst, desto mehr wirst du dich selbst antreiben und irgendwann wirst du komplexe Spiele machen, bevor du es weißt.

Dennis Munsie
quelle
49
+1 bei Ausbruch. Viele PRO-Spieleentwickler haben mir erzählt, dass sie jedes Mal, wenn sie eine neue Technologie erhalten, diese lernen, indem sie zuerst Breakout machen.
Jeff
2
+1 Breakout war das erste Spiel, das ich gemacht habe =). Außerdem bin ich damit einverstanden, zu versuchen, frühe Videospiele nachzubilden (mit Ihren eigenen Wendungen!). Konzentrieren Sie sich auf Konzepte, nicht auf Vermögenswerte.
User384918
16
@ PhillC, nein, es lohnt sich nicht zu teilen
Simurr
13
Du hast Tetris vergessen: Es war das zweite Spiel, das ich damals in der High School implementiert habe :)
Emiliano
2
Könnten Sie bitte alle Links zu Ihren Ausbrüchen geben? Ich habe dieses Spiel geliebt und würde gerne alle Remakes
ausprobieren
256

Ich würde Anfängern dringend empfehlen, mit dem einfachsten Spiel zu beginnen, das sie tatsächlich schreiben möchten . Wie von Matt Rix erwähnt, besteht ein großer Teil des Schreibens eines Spiels gegen ein Demo darin, das verdammte Ding zu Ende zu bringen - Credits, Menüs, Spieltests, Highscores, Pausen, Spieltests, Schwierigkeitsgrade, saubere Spielzustandsübergänge, Spielen Testen, etc. Das Zeug braucht mindestens die Hälfte der Zeit, die du einbringen wirst, und es macht einfach keinen Spaß. Ist es nicht. Wenn Sie das Konzept nicht lieben und wirklich motiviert sind, werden Sie aufgeben und weitermachen, bevor das Spiel ein Spiel ist .

Wenn Sie ein Rollenspiel schreiben möchten, finden Sie das einfachste und am besten zu handhabende Rollenspielkonzept heraus, mit dem Sie es erstellen und ausführen können. Das Gleiche gilt, wenn Sie einen Science-Fiction-Shooter oder einen Horror-Plattformspieler oder was auch immer machen möchten. Suchen Sie sich etwas aus, das Sie zu Ende bringen möchten, nachdem alles erledigt ist, aber Sie sehen sich noch Dutzende von Arbeitsstunden an, bevor Sie wirklich fertig sind.

Das beste Spiel, um "Flügel zu verdienen"? Die, die du abgeschlossen hast. Es ist mir egal, wie viele halbfertige PONG / Breakout / Galaga / Tetris-Demos Sie geschrieben haben. Sie sind kein Spieleentwickler, bis Sie ein tatsächlich abgeschlossenes Spiel veröffentlicht haben.

Außerdem möchte niemand eine weitere Version dieser 40 Jahre alten Spiele spielen, und zumindest ein Teil des Grundgedankens für das Schreiben von Spielen ist das Spielen , oder?

Bob Montgomery
quelle
3
Ich möchte diese Antwort verdreifachen!
Iain
2
+1 für den Kommentar zur tatsächlichen Veröffentlichung eines Spiels. Das Spiel zum Laufen zu bringen, macht nur etwa 30% des Prozesses aus, IMO. Ständig die Mechanik durchlaufen, alles so polieren, dass es präsentabel aussieht, die fiesen Fehler, die nur in bestimmten Szenarien auftreten, ausmerzen und sich auf das konzentrieren können, was getan werden muss, sind die anderen 70%.
Dennis Munsie
1
+1 für das, was ich sagen möchte. Mein erstes Spiel war palmgadget.com/palmgo.html Es konnte gemacht werden, weil ich das Spiel Go liebe und es wirklich benutze, um meine Spiele im Club aufzuzeichnen . "Scratching Your Own Itch" zuerst.
Ohho
16
Ich mag diesen Rat, aber es kann gefährlich sein. Immerhin ist diese Mentalität genau der Grund, warum so viele Leute zu Spielentwicklungsforen gehen und sagen: "Ich habe noch nie ein Spiel gemacht, ich werde ein MMORPG starten." Ich würde sagen, Sie sollten mit einem Spiel beginnen, das Ihnen aus einer begrenzten Auswahl guter Starterprojekte Spaß macht. Also, wenn Sie Tetris wirklich hassen, dann tun Sie das nicht. Aber machen Sie stattdessen Breakout, nicht irgendein zufälliges Spiel, das Sie anspricht.
jhocking
185

Ich habe diese Leiter vor einiger Zeit bei TIGsource gepostet. Es beginnt von sehr einfach bis sehr komplex.

  • "Rate die Nummer" / Hangman (Basisoberfläche, Daten aus einer Datenbank auswählen)
  • Tic-Tac-Toe / Rock-Paper-Scissors (rundenbasiertes Gameplay, gegnerische KI)
  • Arkanoid / Pong (Kollisionen, stabile Framerate, Punktzahl, Level)
  • Tetris (Datenstrukturen und wie sie sich auf Spiele beziehen)
  • 1942 / Shoot-em-up (Feinde, Kugeln)
  • Einfaches Platformer / Flipper-Spiel, wenn Ihre Engine Platformers ausführt (schwerkraftbasierte Kollisionen)
  • Bomberman / Pacman (fliesenbasierte Bewegung, komplexe feindliche KI)
  • Spiel für zwei Spieler eines der oben genannten Typen (Eingaben für zwei Spieler)
  • Roguelike / Diablo (Inventarverwaltung, mehrere feindliche AIs, Speichern und Laden komplexer Spielzustände )
  • Faceball / Wolfenstein 3D (grundlegende 3D-Bewegung und Rendering)
  • Rundenbasiertes Netzwerkspiel (grundlegende Netzwerkfunktionen)
  • Gimmicky 3D Third-Person-Platformer (Physik, komplexe 3D-Bewegung)
  • Netzwerk-Echtzeitspiel (Client-Server-Synchronisation, Verzögerung)
  • MMORPG (Persistente Welt)
Zaratustra
quelle
7
Sie könnten besser erklären, was Sie hier lernen sollen. Ihre knappen Notizen sind nicht sehr beschreibend / hilfreich.
SpoonMeiser
57
Auch wenn es das letzte ist, denke ich, dass das MMORPG weiter unten gehen muss. Fantastische Liste. +1
は る と
6
Tolle Liste, obwohl ich denke, dass der gesamte Leiteraspekt nach Pacman zusammenbricht. Zu diesem Zeitpunkt wissen Sie genug, um jede Art von Spiel zu spielen. Ich glaube nicht, dass Sie Diablo entwickeln müssen, bevor Sie Wolfenstein entwickeln. Alles bis auf Pacman solltest du in Ordnung bringen.
jhocking
5
"Persistent World" unterschätzt die Unterschiede zwischen einem MMORPG und den vorherigen Optionen.
Malabarba
1
Sie können mit "Persistent World" auch in einem Nicht-MMORPG (z. B. einem Roguelike) umgehen.
ashes999,
64

Die wichtigste Regel für das Programmieren von Lernspielen: Das Programmieren zu lernen ist schwierig. Das Erlernen des Spieldesigns ist schwierig. Es ist schwer zu lernen, wie man gute Spielekunst oder Audio macht. Der Versuch, all diese Dinge gleichzeitig zu tun, ist ein Rezept für ein Scheitern. Lerne eins nach dem anderen.

Fazit: Programmiere ein Spiel, bei dem Design, Kunst und Sound bereits fertig sind. Machen Sie Klone, keine originellen Spiele.

In meinen Klassen empfehle ich immer diese Spiele zu starten, um:

1) Tetris. Die Kunst sind farbige Rechtecke, die sogar ein ganzer Klutz in Microsoft Paint zeichnen kann. Du brauchst keinen Ton. Die Programmierung ist relativ einfach, erfordert jedoch noch einige wichtige Dinge: Verstehen des Unterschieds zwischen dem internen Spielstatus und dem, was auf dem Bildschirm angezeigt wird; in der Lage zu sein, auf dem Bildschirm zu zeichnen, Punkt (wahrscheinlich mit Sprites und Blitting); in der Lage zu sein, Benutzereingaben in Echtzeit zu akzeptieren, anstatt nur getch () oder scanf () zu verwenden, wo man auf sie warten muss.

2) Ausbruch / Arkanoid. Die Kunst ist immer noch farbige Rechtecke, und Sie brauchen immer noch keinen Ton. Verwendet alle grundlegenden Konzepte von Tetris sowie einige grundlegende Funktionen zur Kollisionserkennung und 2D-Physik, da sich der Ball reibungslos bewegen und springen muss.

3) Gradius / R-Typ. Sie können wahrscheinlich einige Freeware-Kachelsets finden, um dies zu machen. Hier scrollt der Hintergrund, sodass Sie etwas mehr über die Funktionsweise des Grafikspeichers lernen müssen, indem Sie Techniken wie das Umblättern von Seiten und das Doppelpuffern sowie das Zeichnen von Objekten außerhalb der Grenzen des sichtbaren Bildschirms anwenden. Sie neigen auch dazu, dynamische Feind- und Kugel-Spawns zu haben, also müssen Sie lernen, nach sich selbst aufzuräumen (dh Sie müssen Feinde und Kugeln entfernen, die den Bildschirm verlassen, damit Ihr Spiel nicht wie ein Sieb den Speicher verliert).

4) Super Mario Bros. Ähnlich wie beim vorherigen Scrolling-Projekt, nur dass das Scrollen jetzt unter der Kontrolle des Spielers und nicht automatisch erfolgt. Sie müssen sich auch mit der Schwerkraft und all dem lustigen Kollisionsmaterial auseinandersetzen (wie wenn Sie nicht durch den Boden fallen, nur weil Sie im letzten Frame ein paar Pixel darüber waren und im nächsten Frame zu ein paar Pixel darunter wechseln möchten) ). Beachten Sie auch, dass die Schwerkraft bedingt ist: Sie wirkt sich auf den Spieler und einige Feinde aus, in der Regel jedoch nicht auf die Plattformen oder schwebenden Münzen oder was auch immer, was sich ein bisschen von der realen Welt unterscheidet.

Wenn Sie alle vier machen können, sollten Sie in der Lage sein, so ziemlich jedes 2D-Spiel zu machen, das Sie wollen. Alle Werkzeuge sind da. Wenn Sie ein 3D-Spiel erstellen möchten ... lernen Sie zuerst 2D, weil es viel einfacher ist und Sie die Mathematik nicht so gründlich verstehen müssen und Sie das 2D-Zeug sowieso verstehen müssen ... und dann, wenn Sie es sind Fangen Sie damit an, mit einigen grundlegenden 3D-Werkzeugen zu arbeiten (entweder Bibliotheken wie Torque oder Unity oder Open-Source-Spiele wie Doom und Quake).

Viel Glück!

Ian Schreiber
quelle
39

Das ist eine gute Frage. Ich weiß nicht, wo du bist, also werde ich nach dem Himmel schwingen und davon ausgehen, dass du noch nie eine Codezeile in deinem Leben geschrieben hast. Schneiden Sie jeden Teil der Nase ab, der Sie beleidigt, um eine Phrase zu missbrauchen.

Ich glaube, ich beantworte eine etwas andere Frage als die, die Sie gestellt haben, und ich werde Beispiele nennen, um die Frage zu befriedigen, die Sie vor Ort gestellt haben. Der Grund, warum ich das so mache, ist ein kleiner, aber meiner Meinung nach bedeutender Unterschied in der Sichtweise: Es sind weniger die spezifischen Spiele von Bedeutung, als vielmehr die Denkweisen, die diese Spiele einem Designer bringen.

Sie wissen, wie die Leute darüber reden, dass Sie eine Vielzahl von Programmiersprachen lernen sollen, um ihre Denkweisen, ihr Herz und ihre Lebern zu essen und dadurch ihre mächtige Kraft zu erlangen? Das ist eine echte Wahrheit - nach Ihrer ersten reinen oder nahezu reinen Programmiersprache, selbst in imperativen Sprachen, werden Sie am Ende weitgehend nebenwirkungsfreie Funktionen schreiben, weil sie so viel besser definiert sind und alles, was Sie schreiben Selbst in Sprachen, die nicht von dieser Form sind, wird es besser sein. Es spielt keine Rolle, um welche Sprache es sich handelt - haskell, ml / ocaml / smlnj, formulaONE, c ++ - Vorlagen, was auch immer - Sie werden immer noch lernen, wie Sie viele Klassen von Arbeit erledigen, ohne sich auf den Nebeneffektstatus zu verlassen. Wenn Sie zum ersten Mal eine robuste, maschinennahe Programmiersprache lernen, Hier erfahren Sie mehr über die Größenabstraktion. Wenn Sie zum ersten Mal eine deklarative oder Constraint-Sprache lernen, lernen Sie das Bounding als diskretionäres Werkzeug. Wenn Sie zum ersten Mal eine Backtracking-Suchsprache lernen, werden Sie lernen, Ia zu beten! Ia! C'thulhu F'tagn Nagn !, und dann essen wir wieder Herzen und Lebern, und der Kreislauf des Lebens ist erfüllt.

Game-Design ist nicht anders. Sie müssen nicht unbedingt ein bestimmtes Spiel parallel zu einer bestimmten Sprache lernen, sondern Sie müssen ein emblematisches, repräsentatives Spiel erlernen, das mit dieser Denkweise umgeht, wie die für Sprachen charakteristischen Familien. Es gibt auch viele Lebern und Herzen zu essen. Holen Sie sich einen Pfefferstreuer.

Der Gag hier (wie ich es zumindest sehe) ist, dass Sie eine große Liste von Themen abdecken möchten. Es ist so, als würde man Fähigkeiten auf einem Charakterblatt abhaken - man stellt sich mehr Mechanismen zur Verfügung, um mit einer bestimmten Situation umzugehen. Ja, sie sind levelfähig, aber ein oder zwei Punkte in so vielen Dingen wie möglich auf der ganzen Linie zu haben, bedeutet, dass Sie nicht von vorne anfangen und wissen, welche Taktiken verfügbar sind, wenn Sie einen einsetzen für Sie zu vergrößern.

Schau mal.

Zuerst möchten Sie Ihre Zähne schneiden. Diese sind auch nützlich, wenn Sie lernen, auf eine neue Plattform abzuzielen, oder wenn Sie sich von Amnesie erholen. Diese sollen schnell sein, nicht genial.

In Ordnung:

  1. Bildschirmsteuerung. Bluescreening ist hierfür eine großartige Option, denn dann haben Sie zwingenden Grund zu der Annahme, dass Sie auf dem Weg zu Microsoft sind.
  2. Eingabevalidierung. Fooscreen, wo foo blau für oben, rot für unten usw. ist. Überprüfen Sie alle Ihre Schlüssel; Es gibt mehr als genug Farben, oder Sie können eine vierfarbige Karte erstellen, wenn Sie unbedingt Purpur für wichtigere Dinge speichern müssen.
  3. Text- und Sprite-Rendering. Da Sie auch über eine Eingabevalidierung verfügen, ist ein Tile-Memory-Spiel keine schlechte Idee.
  4. Timer. Zeit für einen Mario-Klon oder einen Arkanoid.
  5. Ton und Musik. Verbessere den Mario-Klon. Nicht viel.

Sobald Sie diese erhalten haben, können Sie eine Plattform als Ziel festlegen, und das Lernen kann beginnen.

Diese sind in keiner bestimmten Reihenfolge. Sie können sie nach Belieben neu anordnen. Ich werde mit jedem eine Handvoll Beispiele geben, aber sie sind nicht normativ; Wenn ein anderes Spiel die gleiche Erfahrung bietet und klein genug ist, um Teil einer Reihe von Lektionen zu sein, können Sie es jederzeit austauschen. Aus praktischen Gründen ist es gut, wenn Sie die Bildschirmwiedergabe und die Eingabe relativ schnell beherrschen. Du wirst sie eine ganze Menge benutzen. Warten Sie einige Spiele, bevor Sie versuchen, Abstraktionsklassen zu schreiben. Sie wollen nicht in einer naiven Abstraktion gefangen sein.

  • Animation. Fast alles, was Sie tun, können Sie für animierte Sprites aufrufen. Holen Sie sich eine unabhängige Animations-Engine unter Ihre Fittiche, auch wenn es sich um Programmierkunst handelt. Ein einfaches Puzzlespiel zu machen, dessen Kacheln pochen, ist genug.
  • Komplexe Wertung. Alle fünf Feinde in einen Flügel bekommen? Bonus. Drei Schläge hintereinander landen? Bonus. Schaffe es durch das ganze Level ohne eine Kugel zu verpassen? Riesiger Bonus.
  • Wegfindung. Viele Spiele brauchen dies, aber ein Tower Defense-Spiel ist das einfachste. Sie können mit der Breite zuerst und der Tiefe zuerst beginnen, wenn Sie dies noch nie getan haben, aber Sie sind erst fertig, wenn Sie mindestens einmal A * von Grund auf (NOT COPIED CODE) implementiert haben.
  • Feindliches Verhalten. Dummes automatisiertes Verhalten wird von Ihrem Mario abgedeckt, aber auch reaktives Verhalten ist wichtig. Dies ist eine gute Ausrede, um ein Taktikspiel oder ein Roguelike zu bauen. (Warnung: Sie werden für den Rest Ihres Lebens an dem Roguelike arbeiten.)
  • Dynamische 2D-Beleuchtung. Dies ist auch ein guter Grund, ein Roguelike zu schreiben. Bogenbasiertes Shadowcasting ist eine wichtige Methode zum Betrachten von Streifenbildung und Trennung, was wiederum für eine ganze Reihe von Datenstrukturen wichtig ist.
  • 2d Physik. Das taucht in vielen Spielen auf, in vielen Detailebenen. Versuchen Sie es mit einem Plattformer (mario-ish,), der sich super vereinfachen lässt. ein Panzerspiel (Scorched-Earth-ish), das ebenfalls vereinfacht werden kann; und irgendwann ein Spiel wie N the Ninja, bei dem man mit dem Laufen auf Winkeln, Impulsen usw. zurechtkommt (das kann man mit einem achsengerichteten Bounding-Box-Kollisionssystem ziemlich einfach machen.) Physik und Kollision sind ziemlich eng miteinander verbunden.
  • Kollisionserkennung. Es gibt lächerlich einfache Fälle wie Arkanoids und Mario-Klone, mäßig komplexe Fälle wie N the Ninja und wirklich komplexe Fälle wie Sandbox-Physik-Spiele (die unglaubliche Maschine, moderne Arkanoids wie BreakQuest usw.). In vielen Fällen kommt man damit zurecht so etwas wie AABB , aber wenn Sie in der Mathematik sind, kann es nützlich sein, tatsächlich etwas Vollständiges zu implementieren. Machen Sie sich mindestens mit einer vollständigen Bibliothek wie APE oder Box2D vertraut.
  • Risiko / Belohnungs-Beziehungen bei der Spielzufriedenheit. Einfache Würfelspiele (suchen Sie nach etwas namens "Skunk" aus den 50er Jahren) und Brettspiele mit riskanten Pfaden (Leben, Süßigkeitenland) sind großartige Beispiele für einfache und schnelle Methoden, um dies zu lernen.
  • Ausdrucksstarke Variation in der Mechanik. Machen Sie sich eine kleine Anzahl von Regeln zu eigen und lernen Sie dann, eine ganze Menge Variationen daraus zu machen. Benutzerdefinierte Kartenspiele sind eine großartige Möglichkeit, damit zu arbeiten. Werfen Sie einen Blick auf Dvorak-Decks und reale Spiele wie Mille Bornes, Rage und Uno und machen Sie dann einige Ihrer eigenen. Sie werden nicht ähnlich.
  • Generierter Inhalt. Einfache kartenbasierte Strategiespiele, Roguelikes und einige Arten von Puzzlespielen sind großartige Möglichkeiten, dies zu lernen. Bonuspunkte, wenn es sich um eine Art Spiel handelt, das nicht allgemein dafür bekannt ist, Inhalte generiert zu haben.
  • Stil. Nicht verarschen, das ist eine große Sache. Machen Sie ein Spiel, dann häuten Sie es zu vier völlig verschiedenen Spielen. Wirklich anders. Selbst ein Kinderspiel. (Denken Sie darüber nach: Mega Man macht als Zauberer-Abenteuer in der Hölle oder als Schurke der X-Men absolut Sinn, oder ...) Bitten Sie jetzt vier Gruppen von Spielern, jeweils eine Ihrer Partien zu erzielen. Lassen Sie sie anschließend das nächste Spiel gegen den Uhrzeigersinn um den Ring punkten und so weiter. Beachten Sie, wie radikal sich ihre Wertung je nach Thema und vorheriger Erwartung ändert.
  • Erstellen der Player-Plansequenzen Puzzlespiele sind die saubersten Methoden, um dies zu erreichen.
  • Resourcenmanagement
  • Upgrades
  • Zeitdruck erhöhen

... wie. Mir wurde langweilig.

John Haugeland
quelle
11
Hervorragende Antwort. Wirklich enttäuschendes Ende. Es wäre erstaunlich, wenn Sie dies noch einmal überprüfen und es irgendwie zusammenbinden könnten, um ihm ein kohärentes Ende zu geben.
Ricket
1
Wie wäre es zum Abschluss mit einer Anleitung zum Kochen der Leber ? giantitp.com/comics/oots0738.html
Cyclops
4
Dies ist eine Lektion fürs Leben, die sich hervorragend als Post über Spieleprogrammierung tarnt.
sdasdadas
30

Tetris

Sehr verbreitetes Spiel, viele Open-Source-Klone, die auseinandergerissen werden, wenn Sie nicht weiterkommen. Vermittelt Grundlagen der 2D-Grafik, Eingabehandhabung, Bewertung usw.

Nehmen Sie diese originelle Idee und probieren Sie sie aus. Ich habe die Grundlagen von 3D-Grafik / OpenGL gelernt, indem ich eine 3D-Version von Tetris für meinen Computergrafikkurs am College geschrieben habe.

Bryan Denny
quelle
2
Oder "Spalten", wenn Sie ein Sega-Typ sind;)
Andrew Russell
Cue Tetris Thema Musik ...
Nick Bedford
3
qntm.org/hatetris (okay, es fehlt das Thema Musik, aber ich wollte es nur verlinken ...)
user384918
1
@ Bloots wow, das ist böse
Bryan Denny
Woot! Hier ist meine Seite .
Steven Lu
25

GameDev.net hat einen guten Artikel, in dem eine Reihe von Spielen empfohlen wird, um schrittweise etwas über die Spieleentwicklung zu lernen. Mein Lieblingsratschlag aus der Liste ist, diese Spiele tatsächlich zu polieren. Komplett fertig, zu einem lösbaren Zustand.

Die Liste sieht wie folgt aus (einige davon wurden in anderen Antworten angegeben):

  1. Tetris
  2. Ausbrechen
  3. Side Scroller / Platformer
Colin Gislason
quelle
Sie haben Pac-Man, Galaga und Gauntlet aus dem Artikel, den Sie verlinkt haben, verpasst
Adam Harte
15

Ich mag es, alle meine Leute mit Monopoly zu beginnen. Normalerweise benutze ich Brett Schucherts Monopoly "Code Kata" als Grundlage für die Übung, aber ich füge viel hinzu. Es gibt mehrere Gründe, warum ich das wirklich gerne mache.

  1. Ich lege großen Wert auf gute Codierungspraktiken (Entwurfsmuster, TDD, SOLID, kontinuierliche Integration usw.) und setze meinen Entwicklern bei dieser Übung viele Einschränkungen auf.

  2. Ziemlich jeder kennt die Regeln von Monopoly und das gesamte Spiel kann an einem einzigen Tag abgeschlossen werden. Dies gibt neuen Entwicklern einen schnellen Gewinn und steigert wirklich ihr Engagement.

  3. Die anfänglichen Anforderungen beginnen mit Tastatursteuerungen, aber ich füge später eine Anforderung für Maussteuerungen hinzu. Dies bringt Entwickler dazu, über verschiedene Dinge nachzudenken, wie man bestehenden Code umgestaltet, veränderte Teile des Systems auf Schnittstellen anstatt auf konkrete Klassen programmiert, bessere / richtige Abstraktionen, was zum Komponententest, was nicht zum Komponententest, WARUM zum Komponententest und was macht für gute Unit-Tests.

Manchmal schließen wir eine ausgefeiltere KI an, manchmal nicht. Manchmal arbeiten wir mit anderen Brettspielen mit etwas komplexerer Logik wie Rutschen und Leitern oder so. Manchmal brechen wir komplett von Brettspielen ab und machen ein Pokerspiel oder Blackjack.

Das wirklich Wichtige für mich ist, dass die Leute schnell gewinnen und sehen, wie flexibel Sie Software machen können, wenn Sie gute Programmierstandards einhalten. Diese Übungen bauen sehr schnell Selbstvertrauen auf. Manchmal tun die erfahreneren Entwickler dies gerne selbst, um sich von komplizierten Projekten zu lösen oder eine neue Technik zu üben, die sie gerade gelernt haben (Demeter-Gesetz?).

hokiecsgrad
quelle
6
Wie implementieren Sie Monopoly an einem Tag? Es scheint ein viel größeres Projekt zu sein.
Michael Kristofik
Wenn Sie die Kunstobjekte für die Entwickler bereit haben und der Anleitung folgen, die ich oben verlinkt habe, ist das ganz einfach. Es enthält nicht mehrere KI-Strategien oder einige der komplizierteren Aspekte von Animation und Musik, aber es ist ein vollständig spielbares Spiel, das an einem Tag problemlos ausgeführt werden kann. Es ist wirklich machbar und es macht wirklich viel Spaß.
Hokiecsgrad
# 3 bietet auch die reale Erfahrung von Kunden, die die Anforderungen an Sie ändern, nachdem Sie bereits begonnen haben.
Jarett Millard
Leider ist der Monopoly-Link tot :(
Casey
Die Wayback-Maschine hat es immer noch. web.archive.org/web/20090919075257/http://…
hokiecsgrad
15

Wähle dein Abenteuer

Haben Sie diesen Tipp von einem Freund, der Programmierung begonnen , indem ein Spiel zu schaffen, viel ähnlich einem Ihrer Abenteuerbuch wählen . Es ist im Grunde ein einfaches Text-Abenteuerspiel mit einer Ausgabe wie folgt:

You are standing in a forest clearing in the middle of the night. You hear
some wolves howl in the distance. Should you:
a) make camp for the night
b) go further north
> _

Das Erstellen eines solchen Spiels sollte Ihnen das Erstellen eines Gameloops, grundlegende Konsolen-Eingaben und grundlegende Skripterstellung beibringen. Es ist recht einfach zu implementieren und für Anfänger leicht zu erlernen, da Sie keine Grafik-Engine benötigen , um das Spiel zu schreiben. Fortgeschrittene Anfänger würden wahrscheinlich eine Skript-Engine schreiben.

Spoike
quelle
7
+1 aber NUR, wenn Sie gerade Programmieren lernen. Wenn Sie die Programmierung bereits kennen, würde ich nicht damit anfangen.
Jeff
1
@ Jeff: Ja, wenn Sie ein absoluter Anfänger sind, dann ist dies ein gutes Projekt für den Anfang. Wenn Sie eine Weile programmiert haben, gehen Sie zu den anderen erwähnten Projekten, damit Sie mit Grafiken und so weiter herumspielen können.
Spoike
8
Tatsächlich ist dies eine sehr gute Möglichkeit, sich mit Skripten und datengesteuerter Entwicklung vertraut zu machen. Erstellen Sie dazu die "Engine" und schreiben Sie den Rest in Skripten.
Nick Bedford
1
@ Jeff nah, wenn sie erfahrene Programmierer sind, dann werden sie es in 2 Stunden beenden.
Lassen Sie
13

Nach meiner Erfahrung mit unerfahrenen Programmierern scheint der Fortschritt normalerweise ungefähr so ​​zu verlaufen:

  1. Pong
  2. Tetris
  3. Riesige erstaunliche fantastische 50 Stunden Gameplay-3D-RPG (Hinweis: Die meisten Leute geben die Programmierung während dieses Schritts auf)
davr
quelle
4. Fantasy-MMORPG: P
Nick Bedford
12

Breakout, Pong oder Asteroiden.

Es gibt einen großen Unterschied zwischen einem Spiel und einem Spielprototyp . Wenn du es ernst meinst, dein Traumspiel zu beenden, solltest du deine "Einsteigerspiele" auf dem Weg beenden. Das Erstellen des Gameplay-Teils des Spiels ist nur die halbe Miete. Alle zusätzlichen Dinge wie Menüs und Highscores werden oft übersehen oder ignoriert, aber sie brauchen viel mehr Zeit, als irgendjemand erwarten würde.

Matt Rix
quelle
4
+1 für das Erwähnen der Details nehmen viel mehr Zeit in Anspruch, als Sie erwarten würden.
Mpen
11

Es gibt einige gute Vorschläge in den anderen Antworten, aber ich möchte nur meine Stimme abgeben für: Beginnen Sie mit etwas, das zu mickrig erscheint, um damit umzugehen.

Pong ist ein gutes Beispiel.

Das Ziel ist es, das Spieldesign und den Regelsatz so zu optimieren, dass Sie Ihre ganze Aufmerksamkeit darauf richten können, das Neue zu lernen, was Sie lernen (eine Sprache, eine Plattform, eine API) und nicht ständig lernen müssen Mach Pausen, um herauszufinden, wie das Spiel funktioniert.

Sobald Sie loslegen, werden Sie feststellen, dass Pong tatsächlich etwas komplizierter ist, als es auf den ersten Blick erröten scheint. (Ich unterrichte einen Typen im Programmieren und er benutzt Pong als Lernprojekt. Wir haben einige Features hinzugefügt und jetzt lenkt er sich vom Lernen ab, indem er lernt, wie man all diese coolen Features macht :)

Sobald Sie die erste App durchgearbeitet haben, bis sie bereit ist, sie an andere weiterzugeben / zu verkaufen, können Sie etwas Komplizierteres (Tetris, Abenteuer oder was auch immer Sie möchten) in Angriff nehmen, um eine neue Technologie zu erlernen die Sache, die du programmierst, ist denkbar einfach.

Andere Beispiele:

  • Errate die Zahl (zwischen 1 und 1000)
  • Mastermind (Fortgeschrittene raten die Nummer.)
  • SimplePaint
  • Schlange / Wurm / wie auch immer.

Aber wieder - fangen Sie mit etwas an, das viel zu einfach ist, damit Sie tatsächlich etwas vervollständigen und zurückblicken und sehen können, worum es geht. Der Unterschied zwischen dem Schreiben EINER App in einer Sprache / Plattform / SDK / Engine und dem Schreiben von NULL- Apps ist RIESIG . Der Unterschied zwischen 1 und 2 oder 2 und 5 ist viel geringer, so dass Sie größere Schritte ausführen können, aber die Schritte 0 bis 1 sind winzig klein. es wird größer sein als du denkst!

Olie
quelle
2
+1 für "Beginnen Sie mit etwas, das zu mühsam erscheint, um damit umzugehen" und für "Der Unterschied zwischen dem Schreiben EINER App ... und dem Schreiben NULL-Apps ist RIESIG"
Luc125
1
Update 2014: Eine weitere gute App zum Erlernen der Sprache / Technologie ist Flappy Birdähnlich. Als professioneller Programmierer ist es eine Nachmittagsarbeit (naja, ein Wochenende, um es "schön" zu machen), aber als wir einem anderen Programmierer beibrachten, haben wir gelernt, dass es tatsächlich viele kleine Komplikationen gibt. Auch hier ist man weitaus erfahrener als null, und wenn man erst einmal eins hat, hat man eine viel bessere Vorstellung davon, wie man vorankommt.
Olie
9

Schauen Sie sich diese Website an: 12 Ideen für Computerspielprojekte

Einige dieser Spiele beinhalten das, was andere gesagt haben:

  1. Pacman
  2. Tetris
  3. Pong

Es geht aber auch um einige andere Spiele, die Sie ausprobieren könnten, wie zum Beispiel:

  1. Tic-Tac-Toe
  2. Wer möchte Millionär werden?
  3. Und ein Mario-Klon.

Außerdem gibt es einen Überblick darüber, was Sie zuerst versuchen sollten, da es für jedes Spiel einen Überblick über die Schwierigkeiten gibt (und daher einen Plan, wie Sie die Spiele angehen sollten):

  1. Anfänger
  2. Mittlere
  3. Fortgeschritten
  4. Beste
Thyrgle
quelle
2
+1, Liebe diesen Link. "Rollenspiel - wenn Sie Ihr Leben hassen (und manche anscheinend auch), wird dieser offensichtlich letzte Versuch, Videospiele zu programmieren, wahrscheinlich ein schlechtes Ende haben. Die Spiele-Engine selbst ist oft ziemlich weit verteilt (Weltreisen, Städtereisen, Geschäfte, Kämpfe) , etc) und erfordert eine gottlose Menge an Mühe "
Cyclops
5

Viele Leute beginnen mit Breakout, weil es folgendes bietet:

  • Eingabe: Bewegen eines Paddels vor und zurück
  • Einfache Kollision: Ball springt von Paddel, Ziegeln und Wand ab
  • Ändern des "Spielstatus": Aktualisieren der Punktzahl, wenn der Ball auf Steine ​​trifft, und Entfernen der Steine, Verringern der Anzahl der Kugeln, wenn der Ball auf den unteren Bildschirmrand trifft, Verlieren des Spiels, wenn die Anzahl der Kugeln == 0 ist usw.
  • Es ist auch eine ziemlich sanfte Einführung in die Grafik, da es sich nur um Rechtecke und Kreise handelt
Sean James
quelle
5

Der schwierigste Teil beim Schreiben eines Spiels - oder einer Software - besteht darin, herauszufinden, was zu tun ist. Sie brauchen unbedingt eine Spezifikation! Das ist der spaßige Teil beim Klonen eines vorhandenen Spiels: Die Spezifikation existiert bereits. Ihre Spezifikation lautet "Das Produkt muss alles tun, was das andere Produkt tut", und wenn Sie eine Kopie des anderen Spiels zur Hand haben, ist es ziemlich einfach, dies zu überprüfen.

Sobald Sie herausgefunden haben, was Sie tun müssen, ist es wirklich nicht so schwierig , herauszufinden, wie es zu tun ist, wenn Sie ein kompetenter Programmierer sind. Ich meine nicht einen erfahrenen oder erfahrenen Programmierer. das würde bedeuten, dass Sie bereits wissen, wie Sie das meiste von dem, was Sie versuchen, zu tun. Aber Sie müssen verstehen, wie man in Abstraktionen denkt und über die für die Programmierung grundlegenden Fähigkeiten zur Problemlösung und zum logischen Denken verfügt. Wenn Sie das können, können Sie alles tun.

Trotzdem bin ich nicht einverstanden mit dem, was die meisten Leute über den Versuch sagen, das Schreiben von Spielen zu lernen, indem sie etwas wirklich Einfaches schreiben. Die Belohnung ist direkt proportional zu dem Aufwand, den Sie investieren. Wenn Sie lernen, Spiele zu schreiben, indem Sie ein wirklich einfaches Spiel schreiben, ist alles, was Sie am Ende wissen, wie man wirklich einfache Spiele schreibt, und das wird Ihnen nicht viel nützen.

Wenn Sie dagegen mit etwas Überwältigendem beginnen, werden Sie es nie zu Ende bringen. Beginnen Sie also mit etwas mäßig Schwierigem, das Sie mit ernsten Problemen befassen lässt. Das Erstellen eines 2D-Konsolen-Rollenspiels oder eines Side-Scrolling-Plattformers sind sehr gute Möglichkeiten, um echte Spielprogrammierkonzepte zu erlernen.

Mason Wheeler
quelle
5

Es hängt wirklich davon ab, was Ihre aktuellen Kompetenzen sind. Wenn Sie relativ neu in der Programmierung sind, sollten Sie sich für eines der von den Leuten vorgeschlagenen Spiele entscheiden. Andernfalls sollten Sie darüber nachdenken, mit welchen Spielen Sie Ihre Erfahrungen sinnvoll einsetzen können.

Als ich mein erstes Spiel startete, hatte ich keine Erfahrung mit der Entwicklung von Spielen, aber ich hatte einige Jahre lang die Entwicklung von Unternehmens- / Branchen-Apps durchgeführt. Mein erstes Spielprojekt war ein rundenbasiertes Strategiespiel, und architektonisch gesehen unterschied es sich nicht wesentlich von einer Unternehmensanwendung. Es wurde ein Client / Server-System verwendet, und die Kommunikation erfolgte über einen Duplex-WCF-Dienstkanal. Die meisten Spielervorgänge wurden als "Befehle" in die Warteschlange gestellt und am Ende des Zuges an den Server geschickt. Die gesamte Spielrundenverarbeitung fand auf dem Server statt, woraufhin Updates des Spieluniversums an jeden Client gesendet wurden.

Dieses erste Projekt hat mir den Weg in die Spieleentwicklung ebnet, während ich mich in einem vertrauten Gebiet befand. Als sich das Projekt weiterentwickelte, lernte ich, mehr wie ein Spieleentwickler und weniger wie ein Enterprise-App-Entwickler zu denken. Das Endergebnis hat ziemlich gut funktioniert und es war ein bisschen beeindruckender als Battleship oder Tic-Tac-Toe :).

Mike Strobel
quelle
4

Knabbereien und Space Invaders

Relativ einfache KI, Grafik, Gameplay, Steuerung und sie müssen keine Soundeffekte oder Musik haben, es sei denn, Sie möchten dies hinzufügen. Ich habe mit diesen beiden begonnen, als ich lernte, wie man in QBasic für MS-DOS programmiert, und ich denke, dass sie sind großartige erste Spiele. Pac-Man wäre meine andere Wahl.

Steve Tranby
quelle
Ich habe noch nie von Nibbles gehört, aber definitiv über Space Invaders abgestimmt.
jhocking
3

Spiele im Moonlander-Stil sind großartig (bei denen Sie ein von der Schwerkraft beeinflusstes Raketenschiff haben, die Richtung und den Schub der Spieler steuern und bei der Verwendung von Schub nur begrenzt Treibstoff zur Verfügung steht). Sammeln Sie Erfahrung mit der Implementierung einer sehr einfachen Physik, und das Kollisionssystem kann recht primitiv sein. Keine KI, um die man sich sorgen muss, und vor allem macht es Spaß und macht süchtig :)

Allan
quelle
2
Vereinbarte Spiele im Stil von Thrust / Lunar Lander sind großartige frühe Projekte. Der Umgang mit Rotation und Geschwindigkeit / Beschleunigung enthüllt die Geheimnisse von Sinus / Cosinus (für alle, die sich eine Weile nicht mehr damit befassen). Sie können eine statische Karte oder eine Karte mit Bildlauffeldern verwenden und die Kollisionserkennung verwenden, ohne dass eine komplexe Antwort auf Kollisionen erforderlich ist (berühren Sie etwas -> Explodieren). Es ist auch eine gute Gelegenheit, über das Tuning des Steuerungssystems nachzudenken - ein ausgewogenes
Verhältnis
@bluscrn eigentlich das ist ein toller Kommentar. Nachdem ich die Leute dazu gebracht hatte, meine Flash-Version zu testen, bemerkte ich, dass die Leute unterschiedliche Meinungen darüber hatten, wie es sich anfühlen sollte. Ein Teil davon wurde früheren Spielen zugeschrieben, die der Benutzer erlebt hatte. Ich hatte nicht besonders darüber nachgedacht, bevor ich es entwickelt hatte.
Allan
2

Ein Top-Down-Weltraum-Shooter wie Galaga ist ziemlich einfach und lehrt die Kollisionserkennung ziemlich gut! Der Schwierigkeitsgrad kann variieren, von einem Level mit stationären Feinden bis zu mehreren Levels, in denen Waffen aufgerüstet werden, und Feinden, die sich in speziellen Mustern bewegen.

Ricket
quelle
1

So etwas wie Gauntlet, weil Sie ein Entity-System, feindliche KI, Pickups, Karten, Kollisionserkennung, Wertung usw. benötigen. Es hat alles, aber nicht in einer Weise, die überwältigend ist.

Iain
quelle
Ich würde sagen, dass feindliche KI und Kollisionserkennung mit einer beliebigen Anordnung von Kacheln überwältigend sind, wenn Sie wenig oder keine Erfahrung haben, insbesondere wenn Sie die Physik berücksichtigen, die Sie ebenfalls tun müssen - Reibung zwischen dem Spieler und dem Boden usw. Dies kann eine gute Sache sein Herausforderung nach ein paar Spielen jedoch
Sean James
Einverstanden, etwas überwältigend für Leute, die gerade erst anfangen. Zu viele Konzepte auf einmal. Beginnen Sie mit etwas, das nur Punkte und Eingaben enthält. Dann mache ein Spiel, das 1 oder 2 neue Dinge macht, wie Kollisionserkennung und Feinde. Suchen Sie sich weiterhin Spiele aus, die auf bekannten Konzepten aufbauen, aber etwas einführen, das Sie nicht kennen. Wenn Sie keine kennen, sollten Sie es nicht versuchen. Halte es einfach.
User384918
Ich denke ehrlich, dass in einem Gauntlet-Klon zu viel los ist, um als "Einsteigerspiel" zu gelten.
PhillC
Ehrlich gesagt denke ich, es ist einfacher, Gauntlet als Tetris zu codieren, da es ziemlich knifflige abstrakte Probleme sind, herauszufinden, wie sich die Blöcke stapeln, ob eine Zeile vollständig ist und wie Zeilen entfernt werden. Gauntlet kann auf jeder modernen 2D-Plattform in weniger als 1000 Zeilen codiert werden. Wenn dies auf der von Ihnen verwendeten Plattform nicht möglich ist, würde ich vorschlagen, eine andere zu finden. Wie auch immer, ich schlug es genau deshalb vor, weil es das Erlernen aller Teile erfordert, die ein modernes Spiel ausmachen.
Iain
Du bekommst extra Punkte, wenn du die Stimme richtig machst: "Elf hat das Essen erschossen!" "Zauberer ist im Begriff zu sterben!" oder mein Favorit: "Sie haben mein TRAY-sicheres Zimmer gefunden!"
RTPerson
1

Ein Mini-Zelda-Klon ist gut und übt einige Fähigkeiten aus, die hier nicht viel erwähnt wurden. Das Scrollen einer großen Karte mit Kacheln und einfache 8-Wege-Bewegungssteuerungen sind gut zu wissen. Bonuspunkte, wenn Sie Feinde machen können, aber ich würde mich nicht zu sehr darum kümmern.

coderanger
quelle
1

Ich habe mehr als ein paar Tetris-Klone gemacht. Jedes Mal, wenn ich es tat, tat ich es etwas anders. Heutzutage mache ich normalerweise eine Art Asteroiden-Klon. Ich habe auch mehr als ein paar Missile Command-Ausgründungen vorgenommen.

Ich habe mit dem Grundspiel angefangen und bin dann dazu übergegangen, mehr Dinge, Power-Ups usw. hinzuzufügen.

Casey
quelle
1

Ich habe immer mit einem Panzer / Gorilla / Wurm-Spiel begonnen. Sie trainieren auf einfache Weise in der grafischen Darstellung und können Benutzereingaben lesen. Außerdem wird eine Spielschleife erstellt, die die Schwerkraft auf das Projektil ausübt und die Kollisionserkennung testet.

Danach kommt ein Spiel wie ein sehr einfacher Plattformer oder Shoot-Em-Up, in dem Sie Benutzereingaben in Echtzeit lesen müssen, anstatt die INPUT-Anweisungen, die für Gorillas funktionieren :)

AlexC
quelle
1

Solitaire (oder wirklich jedes Kartenspiel) ist ein gutes Spiel, um sich mit einem neuen UI-System die Hände schmutzig zu machen, da es viele Widgets und Controller-Interaktions-Feedback-Mechanismen verwendet, die Sie benötigen. Außerdem ist die Logik dafür einfach und eindeutig, sodass Sie sich auf das Lernen und nicht so sehr auf das Spieldesign konzentrieren können.

Für Echtzeit-Simulationsspiele würde ich Pong immer als einen guten, einfachen Ausgangspunkt empfehlen, da das Design ebenso einfach ist wie die Controller-Oberfläche, sodass Sie zum Kern des Systems - der physikalischen Simulation - gelangen.

MrCranky
quelle
1

Ich habe immer behauptet, wenn Sie ein Spielprogrammierer sind, sollten Sie in der Lage sein, Space Invaders in irgendeiner Form zu erstellen . Das Spiel ist so einfach, dass Sie die Grafik auch selbst machen sollten.

Wenn Sie eine Auswahl kleiner Spiele in Ihrem Portfolio haben, die sich beispielsweise als nützlich erweisen, wenn ich eine neue Programmiersprache oder ein neues Framework lerne, portiere ich oft eines meiner einfachen Spiele, um zu sehen, wie die neue Methode funktioniert Dinge so zu machen, wie sie ursprünglich geschrieben wurden.

JSmyth
quelle
1

Es hängt wirklich davon ab, welche Fähigkeiten Sie als normaler Programmierer bereits haben. Braucht deine Mathematik Arbeit? Ihre Grafikkenntnisse? Haben Sie beide unter Verschluss?

Obwohl ich im Allgemeinen denke, dass Tetris und Breakout auch meine beiden Starter wären. Alles, was einfacher ist, bietet nicht genug Anregungen. Tetris ist ein guter Test für das Layout Ihrer Daten, Breakout ist ein einfaches mathematisches Beispiel. Ich sage den Leuten immer, sie sollen hoch hinaus, das Ziel ist es, nicht weiterkommen und eine Lösung zu finden.

Danach ist der Himmel die Grenze. Auch hier zielen Sie hoch. Probieren Sie einen Plattformer mit abschüssigem Gelände, Parralax, und Sie haben eine gute Tasche mit 2D-Technologie zur Hand. Fügen Sie einen Flipper hinzu (bereiten Sie sich darauf vor, frustriert zu sein) und Ihre Mathematik wird sich verbessern.

Gehen Sie von dort in die dritte Dimension, lernen Sie die Kernkompetenzen (Animation, Rendering) und Sie sollten relativ gut gerüstet sein, um mit einer guten Auswahl an Spielen umzugehen.

Kaj
quelle
0

Ich würde sagen, ein Tower Defense-Spiel ist der beste Startpunkt. Sie können auch anfangen, indem Sie bereits vorhandene Spiele / Engines (WarCraft III / HalfLife2 SDK / usw.) modifizieren, um die erforderliche Gesamtlogik zu verstehen, und dann Ihre eigene Codebasis verwenden.

Gootik
quelle
0

Mein erstes Spiel war so etwas wie Super Mario.

Bewege dich, weiche Hindernissen aus und spring. Und all diese Aufgaben können problemlos ohne Berechnung der Physik erledigt werden.

Es ist ideal, um eine einfache 2D-Sache aufzunehmen, da Sie sich nicht sehr auf eine bestimmte Implementierung / ein bestimmtes Framework / eine bestimmte Engine verlassen werden.

SwissCoder
quelle