Plattformspiele (Jump ’n’ Run Games) Teil 4

Damit der Spieler die Bewegung der Spielfigur (des Charakters) 
kontrollieren kann, muss der Computer erkennen können, welche
Tasten der Spieler bewegt. Um das zu veranlassen, wählen wir
im STEP-Event von "obj_player" STEP aus und wählen im "control"
TAB wieder die ACTION "Execute Code".
Wir schreiben in den Editor:

key_right = (keyboard_check(vk_right));
key_left = (keyboard_check(vk_left));
key_jump = (keyboard_check(vk_space));

Dadurch wird Folgendes erreicht:
In der ersten Zeile wird abgefragt, ob der Spieler die Taste
(vk_right) drückt. Die Antwort ist entweder 1 bei JA, oder 0
bei NEIN.In der zweiten Zeile wird abgefragt, ob die Taste
(vk_left) gedrückt wird. Bei JA wird -1 als Wert zurück 
gegeben oder 0 bei NEIN.
Man kann die beiden Werte für die horizontale Bewegung
in einer Variablen zusammenfassen:
move = key_right + keyleft;
Als Ergebnis erhalten wir entweder -1 oder +1 oder 0.
Damit können wir der Variablen für die horizontale Bewegung
einen Wert geben:
hsp = move * walkspeed; 
Drückt der Spieler die linke Pfeiltaste, bewegt sich der
Charakter um 4 Pixel nach links (-1 * 4).
Drückt der Spieler die rechte Pfeiltaste, bewegt sich der
Charakter um 4 Pixel nach rechts ( +1 * 4).
Drückt der Spieler keine Taste, bleibt der Charakter am
Platz.
Nun kümmern wir uns um die vertikale Bewegung.

Plattformspiele (Jump ’n’ Run Games) Teil 3

Zunächst müssen wir die Bewegung des Charakters nach rechts und
links betrachten. Diese horizontale Bewegung findet auf der
x-Achse des Koordinatensystems statt. Der Charakter bewegt sich
auf dem Bildschirm nach links, wenn x ein negatives Vorzeichen hat,
z.B. -4. Er bewegt sich nach rechts, wenn x ein positives Vorzeichen
hat, z.B. +4.
Die Zahl gibt an, um wie viele Pixel nach rechts oder links der
Charakter bewegt wird. Je höher die Zahl, desto größer die 
Geschwindigkeit, mit der der Charakter sich bewegt.
Um diese Zahl zu speichern, benötigen wir eine Variable, also
einen Platzhalter, mit dem wir die Zahl speichern und auf sie
zugreifen können. In diesem Beispiel gebe ich dem Platzhalter für
die horizontale Geschwindigkeit den Namen "hsp" für horizontal
speed.
Im CREATE-Event von "obj_player" wähle ich im TAB "control" die
ACTION "Execute Code" und schreibe in den Editor:
hsp = 0;
Das gleiche gilt für die Bewegung auf der y-Achse, auf der der
Charakter auf und ab bewegt wird. Hat das y ein negatives Vorzeichen,
z.B. -4, bewegt sich der Charakter nach oben. Hat das y ein positives
Vorzeichen, z.B. +4, bewegt sich der Charakter nach unten.
Den Platzhalter für die vertikale Geschwindigkeit nenne ich in dem
Beispiel "vsp" für vertikal speed und schreibe in den Editor:
vsp = 0;
Die Geschwindigkeit, mit der der Charakter sich bewegen soll,
speichere ich ebenfalls im CREATE-Event von obj_player ab mit der
Variablen, die ich in den Editor schreibe:
walkspeed = 4;
Zum Schluss benötige ich noch eine Variable, die die Schwerkraft
(Gravitation) angibt, die auf den Charakter einwirkt. Je niedriger 
die Schwerkraft ist, desto höher kann der Charakter springen.
Wie auf dem Mond ;O)):
In dem Beispiel gebe ich in den Editor ein:
grav = 0.5;   
Im CREATE-Event von obj_player steht jetzt Folgendes:

hsp = 0;
vsp = 0;
walkspeed = 4;
grav = 0.5;

Plattformspiele (Jump ’n’ Run Games) Teil 2

In Plattformspielen gibt es zwei Basisobjekte, die man für das Spiel braucht:
den Charakter, der vom Spieler kontrolliert wird, und ein Blockobjekt, das
als Boden benutzt wird, auf dem der Charakter laufen kann. Das gleiche
Blockobjekt wird auch für Wände benutzt, die der Charakter nicht passieren
kann. Für diese beiden Objekte benötigen wir Sprites (Grafiken, die auf den
Bildschirm gezeichnet werden).
Im Game Maker („Game Maker Studio 2“) erstellen wir ein Sprite
für den Charakter. Dafür zeichnen wir einen einfachen Ball, den wir mit 
"spr_player" bezeichnen. Für das Blockobjekt zeichnen wir ein schwarzes Viereck
"spr_wall".
Die beiden Sprites nutzen wir, um zwei Objekte zu erstellen:
Zunächst ein solides Objekt "obj_wall" mit dem "spr_wall".
Das Objekt hat keine Events oder Actions.
Dann ein "obj_player" mit dem "spr_player".
Als nächstes müssen wir dem Spieler ermöglichen, den Charakter ("obj_player")
zu bewegen. 
Damit das geschehen kann, müssen wir die Bewegung des Charakters definieren.
Der Charakter muss genau oben auf den Boden gezeichnet werden, damit es so
aussieht, als würde er darauf herumlaufen. Er darf nicht im Boden stecken oder
durch ihn hinab sinken. Wenn der Charakter springt oder fällt, muss er korrekt
auf der nächsten Plattform landen. Es gibt eine Vielzahl von Möglichkeiten, den
Charakter gehen, springen und fallen zu lassen. Verschiedene Plattformspiele
benutzen verschiedenen Methoden.
In unserem Beispiel benutzen wir drei Tasten, um die Bewegung des Charakters
zu kontrollieren:
- durch Drücken der linken Pfeiltaste (left_arrow_key) wird der Charakter 
  nach links bewegt.
- durch Drücken der rechten Pfeiltaste (right_arrow_key) wird der Charakter 
  nach rechts bewegt.
- durch Drücken der Leertaste (space_key) springt der Charakter nach oben  
obj_ball        obj_wall  

Plattformspiele (Jump ’n’ Run Games) Teil 1

Jump 'n' Run Games sind sehr verbreitet. In so einem Spiel sieht man
die Szene von der Seite und der Spieler kontrolliert den Charakter, 
den er in der Welt des Spieles bewegt. 
Die Spielewelt besteht aus Plattformen, auf denen der Charakter laufen, 
springen und abwärts fallen kann, von einer Plattform zur anderen. 
Der Charakter kann Leitern und Seile benutzen, um verborgene Plätze zu 
erreichen. Auf den Plattformen gibt es Objekte, die der Charakter 
sammeln, und Gegner, denen er ausweichen kann, oder die er beseitigen 
muss (das geschieht oft, indem der Charakter dem Gegner auf den Kopf 
springt oder auf ihn schießt). Es gibt Schalter, die man drücken muss, 
um andere Passagen zu öffnen. Das Spiel verlangt vom Spieler, dass er 
die Geschicklichkeit im Umgang mit der Tastatur verbessern muss, damit 
er über gefährliche Areale springen kann. In einigen Plattformspielen 
sieht man den ganzen Level auf einmal, aber in den meisten Spielen sieht 
man ihn nur teilweise um den Charakter herum. In solch einem Fall ist 
es eine zusätzliche Herausforderung, den Weg zu finden.
Ein gutes Plattformspiel zu entwickeln ist nicht einfach. Es gibt drei 
wichtige Aspekte, die man beachten muss:
- die Bewegung des Charakters muss natürlich wirken.
- man muss interessante Variationen für Monster, Hintergründe etc. erfinden
- man muss die Level so gestalten, dass es Spass macht zu spielen 
  und der Schwierigkeitsgrad zunimmt.
In diesem Tutorial erkläre ich, wie man ein einfaches Plattformspiel mit
dem "Game Maker Studio 2" erstellt.

Hinweise

Die von mir genannten Bücher erklären die Entwicklung von Spielen mit der
Software Game Maker Version 8.0
Die Ressourcen (Sprites, Sounds etc.) zu den Beispielen kann man im Internet
herunterladen unter der Adresse

The Game Maker’s Apprentice

für „The Game Maker’s Apprentice“

und

The Game Maker’s Companion

für „The Game Maker’s Companion“

Ich erkläre die Entwicklung der Spiele mit der Software „Game Maker Professional (v.1.4.9999)“.

Game Maker Studio

Die Anfänge der Videospiel-Bewegung sind vollkommen an mir vorbei gegangen. 
Aber als ich mir in den 90-ger Jahren einen Computer zugelegt habe, bin ich 
ziemlich schnell in den Bann dieses umstrittenenen Vergnügens geraten. 
Ich erlebte schnell, dass es grossen Spass machte, Videospiele zu spielen,
und wollte lernen, selber Spiele zu programmieren.
Dabei stieß ich immer wieder auf verschiedene Versionen der Software "Game Maker".
Game Maker (GM) ist eine ursprünglich vom Niederländer Mark Overmars entwickelte 
integrierte Entwicklungsumgebung (IDE) zur Erstellung von Computerspielen. 
Bei der Beschäftigung mit diesem Programm waren mir zwei Bücher sehr hilfreich.

"The Game Maker's Apprentice"
Game Development for Beginners
von Jacob Habgood and Mark Overmars

und

"The Game Maker's Companion"
Game Development: The Journey Continues
von Jacob Habgood, Nana Nielsen and Martin Rijks

Ich möchte auf diesen Seiten die Anleitungen und Beispiele für die Spielentwicklung 
ins Deutsche übersetzen, weil ich keine deutschen Bücher gefunden habe, die mir 
geholfen hätten. Ich wünsche allen Lesern viel Vergnügen und bitte um einen freundlichen
Hinweis, falls ich ein Urheberrecht verletzt haben sollte.