Was sind die Grundlagen der Spieleentwicklung? [geschlossen]

12

Ich verstehe überhaupt nicht, wie ein Videospiel codiert werden kann.

Ich bin ein Anfängerprogrammierer und habe nur Erfahrung mit dem Schreiben von Konsolenanwendungen, die Mathematik beherrschen und was nicht. Ich verstehe nicht, wie diese logischen Prozesse Bilder auf dem Bildschirm bewegen können (Videospiele). Wenn ich in ein Spielentwicklungsbuch oder ähnliches hineinspringe, verstehe ich das natürlich, aber ich bekomme derzeit immer noch einen Überblick über die Grundlagen der Programmierung im Allgemeinen. Kann irgendjemand eine einfache Erklärung für den Sprung zwischen der einfachen Rechenaufgabe eines Computers und der Erstellung erstaunlicher Grafikprogramme wie Videospiele geben? Vielleicht gibt es ein paar Einführungsvideos, auf die mich jemand verweisen kann?

Matt
quelle

Antworten:

14

Angenommen, Sie sind ein absoluter Anfänger in der Programmierung, und um mein Beispiel auf etwas zu stützen, das Sie vielleicht wissen, schreiben Sie eine Konsolenanwendung mit einem Menü, in dem der Benutzer unter den verfügbaren Optionen auswählen soll. Was werden Sie als Erstes tun?

Wenn Sie über das Erstellen Ihres Menüs nachgedacht haben, haben Sie einen Punkt erhalten, aber was ist, wenn der Benutzer eine Taste gedrückt hat, die nicht Teil der verfügbaren Option ist?

  1. wird Ihre Anwendung beendet, oder
  2. soll es so lange dauern, bis der Benutzer die Taste "Beenden" drückt?

Meine Wette wäre # 2, die Anwendung wird fortgesetzt, bis der Benutzer die Taste ausdrücklich drückt, um die Konsolenanwendung zu beenden.

Ein Spiel ist irgendwie ähnlich! Wann soll das Spiel beendet werden? Wann wählt der Benutzer, richtig? Daher muss die Aktion oder das Spielmenü so lange dauern, bis der Benutzer das Spiel verlassen möchte. Anschließend müssen Sie eine Schleife erstellen, die das Programm anweist, fortzufahren, bis genau diese Taste zum Beenden gedrückt wurde.

Du wurdest gerade in den Game Loop eingeführt. Ein Spiel ist nur ein weiteres Programm, das ausgeführt wird, bis es vom Benutzer ausdrücklich beendet wird.

Während Sie sich in der Spielrunde befinden, sind die Bewegungen Bilder, die bei bestimmten Koordinaten auf dem Bildschirm gezeichnet werden. Wenn der Benutzer / Player eine Richtungstaste wie z. B. drückt [Left], werden die Koordinaten des Bilds aktualisiert, während die X-Koordinate verringert wird, sodass der Eindruck einer Bewegung nach links entsteht. Sie müssen diese Eingaben abrufen, um festzustellen, welche Aktion der Spieler als Nächstes von seinem Charakter / Schiff ausführen möchte. Anschließend wird die Spielschleife so lange fortgesetzt, bis Sie eine weitere gewünschte Aktion vom Spieler erhalten, bis das Spiel beendet wird.

Nun, ich fürchte, diese Antwort beginnt ziemlich lang zu sein. Gestatten Sie mir, Sie auf zwei weitere Fragen hinzuweisen, die Sie vielleicht interessieren könnten, hoffe ich.

  1. Wo fange ich an, Spiele, Tutorials oder ähnliches zu schreiben?
  2. Verschieben meines Sprites in XNA mithilfe von Klassen .

In diesem dritten Link geht es nicht darum, wie man mit dem Schreiben von Spielen beginnt, sondern darum, wie man ein Sprite auf dem Bildschirm bewegt. Da Sie auch gefragt haben, wie die Grafiken auf dem Bildschirm verschoben werden sollen, dachte ich, dass dies Sie interessieren könnte.

Ich hoffe das hilft! =)

Will Marcouiller
quelle
4

Während Sie Konsolenanwendungen erstellen, verwenden Sie höchstwahrscheinlich die Funktionen print () oder read () oder write (). Stattdessen verwenden Grafikspiele andere Funktionen, die so niedrig wie set_pixel () sein können, um die Farbe eines einzelnen Pixels auf dem Bildschirm für ganze Frameworks festzulegen, mit denen Sie dreidimensionale Modelle mit vielen Effekten zeichnen können.

Die Grundidee ist jedoch dieselbe wie für eine einfache Mathekonsolenanwendung. Sie erhalten Eingaben vom Benutzer, handeln danach, um einige Variablen zu ändern, und drucken (oder zeichnen) dann einige Ausgaben. Spiele und andere interaktive Programme führen 30, 60 oder mehr dieser Eingabe-Berechnungs-Ausgabe-Zyklen pro Sekunde durch. Natürlich kann jeder Teil so komplex sein, wie Sie möchten, aber es kommt in der Regel auf die Eingabe-Berechnung-Ausgabe an. Also keine Sorge, du bist auf dem richtigen Weg.

Was die Empfehlungen betrifft, würde ich sagen, dass Sie so viel wie möglich programmieren. Wenn Sie sich auf das Programmieren von Spielen konzentrieren möchten und sich nur mit Konsolen auskennen, versuchen Sie, ein kleines textbasiertes Abenteuer oder RPG zu erstellen. Auf diese Weise üben Sie viel, wie Sie Ihre Variablen verwalten, Zufallszahlen verwenden und Ihren Code organisieren.

Nachdem Sie einige Erfahrungen damit gesammelt haben, lernen Sie die Grundlagen einer Grafikbibliothek kennen. Wenn Sie prozedurale Programmierung durchführen, würde ich OpenGL empfehlen, während Sie bei objektorientierter Programmierung XNA empfehlen würden.

Nehmen Sie jedoch nicht zu viele Dinge auf einmal. Es ist sehr leicht, enttäuscht zu werden, wenn Sie ein kompliziertes Tool erlernen, wenn Sie lernen, wie man einen Quelltextbaum verwaltet, wenn Sie lernen, wie man über ein Array iteriert, wenn Sie lernen, wie man Input und Sound erhält Du gestaltest dein Spiel.

Es liegt noch ein langer Weg vor uns, aber denken Sie daran, dass der Spaß tatsächlich darin besteht, durch die Stadt zu laufen.

Mach weiter so!


quelle
4

Ein Computerspiel ist eine Endlosschleife aus:

  • Update: Verbessere den Spielstatus um eine winzige Zeitscheibe (wie 1/80 Sekunde).
  • Malen Sie den aktuellen Spielstatus.

Es gibt Variationen davon. Einige Spiele haben mehr Updates zwischen den einzelnen Farben, oder es kann variieren, um den Spielfluss auf verschiedenen Computern gleichmäßig zu gestalten. Das sind aber technische Details.

Die Aktualisierungsphase, die zwischen 50 und 100 Mal pro Sekunde stattfindet (ja, so oft), sieht folgendermaßen aus:

  • Aktualisiere die Physik der Spiele. Angenommen, ein Schauspieler hat eine Geschwindigkeit. Das Update sollte ihn ein kleines Stück in die richtige Richtung bewegen. Wenn Sie eine Physik-Engine verwenden, sollte diese auch auf Kollisionen mit anderen Akteuren oder Hindernissen prüfen.
  • Aktualisieren Sie die Spielregeln. Das macht es zu einem Spiel und nicht zu einem physikalischen Experiment. Sagen Sie, dass eine Kugel den Schauspieler getroffen hat. Die Spielregeln sehen vor, dass der Spieler X Gesundheitspunkte abzieht und die Kugel verschwindet.
  • AI-Updates. Manchmal sollten die computergesteuerten Schauspieler entscheiden, was zu tun ist. Nach links oder rechts gehen? Finde einen Weg zu einem schönen Ort. Eine Waffe abfeuern.
  • Eingabesteuerung. Aktualisieren Sie den Player-Darsteller entsprechend den auf der Tastatur gedrückten Tasten.
  • Szenengraph aktualisieren. Dies kann darin bestehen, eine Animation um einen Schritt voranzutreiben oder die Benutzeroberfläche zu aktualisieren, um anzuzeigen, dass der Spieler jetzt 10 Punkte weniger Gesundheit hat. Das Spiel soll nur gut aussehen und sich gut anfühlen.

Wo fängst du an

Die Grundvoraussetzung für ein Grafikspiel ist das Programmieren von Grafiken. Stellen Sie sicher, dass Sie ein Fenster öffnen und einen Ball hineinziehen können.

Ich nehme an, Sie können eine Art Unterricht machen. Bilden Sie eine Kugelkategorie. Es hat die folgenden Mitglieder: x, y, deltaX, deltaY. Alle sind ganze Zahlen und in Pixelmaßstäben. Schreiben Sie nun diese Schleife.

forever, do this {
  start measure time (in milliseconds)
  //physics part
  add deltaX to x
  add deltaY to y
  if x is bigger than the screen width, assign -deltaX to deltaX
  if y is bigger than the screen height, assign -deltaY to deltaY
  if x is less than 0, assign -deltaX to deltaX
  if y is less than 0, assign -deltaY to deltaY

  //paint
  paint the ball at x, y
  stop measuring time, assign this to workTime
  make the thread sleep for (25 - workTime) milliseconds
}

Dadurch springt der Ball über die Fenstergrenzen. Es ist noch kein Spiel , sondern eine physikalische Simulation. Wenn Sie das Physik-Update für Bälle in die Ballklasse schreiben, können Sie problemlos mehrere Bälle hinzufügen. Speichern Sie sie in einer Liste und aktualisieren und malen Sie sie für jeden Rahmen.

Sie können ein Paddel (simulieren Sie die Physik und steuern Sie es mit der Maus oder der Tastatur) und ein Spielziel hinzufügen, z. B. den Ball daran zu hindern, die linke Wand zu erreichen. Wenn das Spiel mit der Zeit immer mehr Bälle hinzufügt, wird der Schwierigkeitsgrad zunehmen. Du hast ein Spiel.

Warum für (25 - workTime) Millisekunden schlafen ? Wenn Sie dies tun, wird die Simulation mit einer konstanten Geschwindigkeit von 40 Aktualisierungen und Farben pro Sekunde ausgeführt. Es wird ziemlich glatt sein. Wenn Sie den Schlaf-Teil überspringen würden, würde die Animation ruckeln und 100% der CPU beanspruchen. Auch die Geschwindigkeit des Balls würde von der Geschwindigkeit der Maschine abhängen, die ihn laufen lässt. Jetzt beträgt die vertikale Geschwindigkeit des Balls 40 * DeltaY Pixel pro Sekunde.

Revolverheld
quelle
2

Nehmen Sie Ihr Konsolenprogramm, das Mathe leistet, und lassen Sie es dann, wenn Sie eine richtige Antwort eingegeben haben, einige Konfetti abschießen ... Es ist zu einem Spiel geworden (Jeder außer mir spielt als Kind Math Blaster? :)).

Was die Art und Weise angeht, wie Computer für die Erstellung von Spielumgebungen entwickelt wurden, kann es manchmal ein bisschen schwierig sein, den Kopf herumzureißen, aber es kommt auf die Anwendung des menschlichen Verständnisses der Welt um sie herum an. Spiele verwenden die gleichen mathematischen, physikalischen und naturwissenschaftlichen Methoden, um sich zu definieren, wie wir sie auf die Welt um uns herum anwenden, um zu erklären, wie sie funktionieren.

Die Sim-Spiele sind ein gutes Beispiel für real bis virtuell. Vor langer Zeit habe ich ein Interview mit dem Mann hinter den Sim-Spielen gelesen und fast alle, mit Ausnahme von Sims, sind aus der Lektüre eines Themas entstanden, das versucht, die Welt um uns herum zu erklären. Dann habe ich mich mit mathematischen Formeln beschäftigt und sie in eine virtuelle Umgebung gebracht um es darzustellen. SimCity zum Beispiel entstand aus dem Versuch, die Grundlagen der Wirtschaft zu simulieren.

Was die Besonderheiten betrifft, wie Sie eine 3D-Spielumgebung erstellen, Physik hinzufügen, einige Audiodaten hinzufügen und einen Benutzer mit ihr interagieren lassen. Genau dafür ist diese Site und viele andere hier und wären unmöglich Fassen Sie dies zu einer genaueren Antwort zusammen.

Letztendlich beschreibe ich Videospiele als sehr schnell begrenzte Datensatzdatenbanken. Sie konzentrieren sich stark auf relationale Daten und schnellen Datenzugriff. Ich meine, wenn Sie alle 60 Sekunden einen Frame rendern, verarbeiten Sie potenziell große Datenmengen sehr schnell, basierend auf der Beziehung, in der sich der Spieler im Spiel befindet zu allen anderen vom Spiel verfolgten Daten :)

James
quelle
Lol, "Videospiele als sehr schnelle Datenbanken mit begrenzten Datenmengen" tragen wahrscheinlich nur zur Verwirrung bei.
michael.bartnett
1

Was Sie verstehen müssen, sind Matrizen. Sie untermauern Spiele. Wenn Sie die Potenz von Matrizen verstanden haben, werden Sie sehen, wie sich Spiele auf einfache Mathematik reduzieren.

Sie nehmen eine Eckpunktposition im Spielraum ein. Sie projizieren es mit einer Matrix auf den Bildschirm (finden Sie die Bildschirmkoordinaten). Sie interpolieren einige Pixel zwischen ihm und seinen Nachbarscheitelpunkten und sind fertig. Das ist natürlich eine außerordentlich große Vereinfachung, aber die Grundlagen der Rasterung sind überhaupt nicht komplex, sobald Sie Matrizen erstellen.

DeadMG
quelle