Version 2.0!
Features
Tutorials
Files
Glossary
Projects
Contact
Links
Message Board
Extras
LuckyCam
Old News
Sign Guestbook
View Guestbook
VB Horoscope
VB Photo Album
.
ATTENTION READERS! Lucky's VB Gaming Site is no longer active. For updated game programming information and tutorials, please visit The Game Programming Wiki!

Einführung in DirectPlay    (Anmerkung des Übersetzers)

So, du willst also ein Multiplayer-Spiel programmieren, wie? Nun, dann bist ja hier richtig. DirectPlay macht uns die Sache so leicht wie es nur geht.Serielle Verbindung, Modem, IPX (LAN) und TCP/IP (Internet) - DirectPlay beherrscht alle Protokolle, und du wirst kaum Unterschiede in ihrer Handhabung feststellen. Schnall dich an, es geht los!

Der Weg zu DPlay führt über acht Stationen: Initialisierung, Auflisten der Verbindungstypen, Verbindung herstellen, Spiel starten bzw. einem Spiel beitreten, Spieler erstellen, Spiel beginnen, Nachrichten über den Spielverlauf verschicken/empfangen und Terminieren der Verbindung.
Eine kurze Beschreibung der aufgeführten Bereiche:

Initialisierung - Wie bei allen anderen Funktionen von DirectX müssen auch hier einige verschiedene Objekte initialisiert werden. Wie du sehen wirst ist das recht einfach.

Auflisten der Verbindungstypen - Ein "Verbindungstyp" ist so etwas wie ein Treiber der es DPlay erlaubt mit anderen Instanzen von sich selbst auf Remote-Systemen (anderen Computern mit DPlay) zu kommunizieren und  interagieren. Die vier Standardtypen sind Serielles Kabel, Modem, IPX und TCP/IP. Es ist möglich eigene Verbindungstypen zu erstellen, aber das würde den Rahmen dieses Tutorials sprengen. :-)
Im übrigen sollten diese vier Standardtypen gut genug für jeden Multiplayer-Programmierer sein!!!
Wenn die Verbindungstypen aufgelistet wurden können sie dem Benutzer in verschiedenen Wegen angezeigt werden (z.B. in einem Listenfeld oder durch schöne hübsche Bildchen - der Übersetzer) um das Erkennen des gewünschten Typs zu erleichtern.

Herstellen einer Verbindung - Nur weil ein Verbindungstyp aufgelistet wird heißt es noch lange nicht dass dir Verbindung auch hergestellt werden kann! Vielmehr wissen wir dann nur, dass der Treiber für diesen Typ installiert ist. Auch wenn du nicht an einem LAN angeschlossen bist, kann dir der Verbindungstyp IPX angezeigt werden! Wenn der Benutzer also einen Verbindungstyp auswählt mußt du versuchen, ob die Verbindung hergestellt werden kann und den Benutzer das Ergebnis (Erfolg/Misserfolg) mitteilen.

Ein Spiel starten/Einem Spiel beitreten - Angenommen, die Verbindung konnte hergestellt werden, können wir nun fortfahren ein Spiel zu "Hosten" oder einem laufendem Spiel beitreten ("Join" - 'Join' heißt auf Englisch so viel wie beitreten, 'Host' bedeuted so viel wie 'Gastgeber' oder 'bereitstellen').
Jede Möglichkeit muss einen eigenen Weg nehmen. Wenn wir ein Spiel hosten,  müssen wir ein s.g. "Session Objekt" ('Session' = Sitzung, Spiel) erstellen, verschiedene Parameter festlegen wie z.B. die maximale Anzahl der Spieler und den Namen der Session. Um einem Spiel beizutreten, müssen wir erst alle verfügbaren Sessions, die mit unseren ausgwählten Verbindungstyp laufen, auflisten und dem Spieler die Möglichkeit zur Auswahl geben.

Spieler erstellen - Nachdem wir ein Spiel gestartet haben oder einem beigetreten sind, müssen wir einen Spieler (auch "Player") erstellen, den wir als unsere Identität im bevorstehendem Spiel benutzen werden. Wir müssen wieder einige Parameter festlegen, wenn wir den Spieler initialisieren, und das Ergebnis im Programm auffangen und verarbeiten.

Spiel starten - Wenn genug Spieler mit dem Spiel verbunden sind, kann das Spiel gestartet werden. Das ist mehr eine Formalität als eine Bedingung von DPlay. Wenn der Spieler erst einmal mit dem Spiel verbunden ist, kann er schon Nachrichten von/an jeden anderen Spieler senden/empfangen. In Spielen mit einer festgelegten Anzahl von Spielern ist es wichtig, das "Joinen" von anderen Spielern zu unterbinden, um zu verhindern das irgendwelche Spieler mitten in ein laufendes Spiel platzen.

Nachrichten während des Spieles - Wurde das Spiel gestartet, können Nachrichten ("messages") an alle oder einem Teil der beteiligten Spieler gesendet werden. Das Format dieser Nachrichten kann selbst festgelegt werden und an alle Gegenheiten des speziellen Programms angepasst werden. Außerdem beeinflußt eine Vielzahl von Optionen die Geschwindigkeit und Verlässlichkeit der Nachrichten.

Terminierung - Wenn ein Spieler aus einem DPlay-Spiel aussteigt, ist es wichtig die verknüpften Objekte richtig aufzulösen, sonst wird die Spielinterne Terminierungsnachricht nicht gesendet. Vielleicht nimmt dir DirectX selbst diese Arbeit ab, aber vertrau lieber nicht darauf!
 

Denk daran, dies ist nur eine Erklärungsversuch für den Aufbau von DPlay, aber es sollte als Basis genügen, auf der du dein Wissen aufbauen kannst. Achte darauf wie Verbindungstypen, Spiele und Spieler interagieren - dann ist es gar nicht so schwer.

Jetzt aber los! Hier geht's zum Tutorial für die Initialisierung (Download des Quellcodes!)