# Multiplayerspiel programmieren... welche Klassen sind geeignet?



## moccajoghurt (10. Okt 2011)

Hallo,

für eine Studienarbeit möchte ich ein 2D-Game programmieren, dass im Arcade-Mode (Beispiel: Street Fighter, Tekken, ...) gespielt wird.
Der Client wird vom Rechner aus gestartet (kein Applet) und die Darstellung läuft über ein JPanel.
Die grafische Umsetzung sollte weniger Probleme bereiten, allerdings stehe ich bei der Netzwerkprogrammierung vor vielen Rätseln.

Offene Fragen sind noch:
Wie sorge ich dafür, dass Client A und B immer den selben Datenstand haben?
Wie übertrage ich die Steuerungsdaten am besten?
Benutze ich einen Server als Zwischenstation oder soll die Verbindung direkt zwischen den Clients aufgebaut werden?

Wäre sehr dankbar für ein paar Tipps oder Tutorials, falls jemand welche kennt.

Gruß moccajoghurt


----------



## SlaterB (10. Okt 2011)

naja 'Multiplayerspiel java tutorial' bzw. vergleichbares in Suchmaschinen eintippen eben,
kommt z.B. 
Blake's Coding Blog: Multiplayer Game Basics
raus, falls Englisch keine Hürde darstellt, im einfachen Bereich gibts aber vielleicht auch noch deutsches


----------



## Firephoenix (10. Okt 2011)

Hi,
ansonsten zu den Clients:
Ich würde das trotzdem als Server aufbauen, und den lokalen Spieler auf sich selbst connecten lassen.

Dann musst du nicht 2 unterschiedliche Clients bauen, sondern hast einfach nur einen lokalen Server, auf den sich 2 Clients verbinden, einer halt per Netzwerk, der andere lokal.
Gruß


----------



## SlaterB (10. Okt 2011)

'2 unterschiedliche Clients', wie sähe das denn aus, wäre dann nicht einer von denen der Server?
wenn dann würde man die sicher exakt gleich aufbauen, beide quasi Server und Client, beide mit Möglichkeit selber die Verbindung zu starten,
z.B. nach Usereingabe


----------



## Firephoenix (10. Okt 2011)

Damit meinte ich 2 unterschiedliche Arten Spieler zu betrachten, also einmal als Spieler der direkt mit dem Spiel interagiert und einer der über Sockets "dazugeschaltet" wird. Da bekommt man nämlich direkt 2 unterschiedliche Stellen die man bei Codeänderungen warten muss - daher mein Vorschlag einen Server und nur Clientverbindung - das Endprogramm würde wie von dir gesagt beide Komponenten enthalten, so dass jeder User wahlweise Client oder Server sein kann.
Gruß


----------



## c_sidi90 (10. Okt 2011)

Mal Simpel ausgedrückt ist der Client welcher das Netzwerkspiel (Multiplayer) aufmacht der Server und Client gleichzeitig. Somit muss jeder Client mit einer Serverklasse ausgerüstet sein, welche beim Host aktiviert wird (Serverthread). So hab ich das mal  gelöst. Wohl die einfachste Art dein Vorhaben aufzubauen.


----------



## moccajoghurt (12. Okt 2011)

Das Game Basics Tutorial hat mir sehr geholfen und das Grundgerüst für den Server steht. Kennt jemand einen Webhost auf dem man Java-Dateien wie meine Server-Klasse laufen lassen kann?


----------



## Marcinek (12. Okt 2011)

Hi,

ist es den heutzutage als Student nicht möglich via Google und SUFU selbst an informationen zu kommen?

Das mit dem Hosten der JAVA Applikationen wird in diesem Monat ca 100 mal schon diskutiert.

Gruß,

Martin


----------



## moccajoghurt (12. Okt 2011)

Naja soviel konnte ich nicht finden. Einen gratis Host für Java-Anwendungen konnte ich nicht finden (abgesehen von der Google AppEngine, die aber leider nicht die jdbc unterstützt, welche ich gerne verwenden würde, weil eine SQL-Server Nutzung für das Projekt empfohlen wird).
Wenn jemand einen kennt, wärs also nett wenn er mir einen zeigen könnte, oder den Thread linken könnte in dem das besprochen wurde.


----------



## Marcinek (13. Okt 2011)

Hallo,

die Google App Engine hat einen myssql dienst nun. Du kannst die üblichen Methoden nutzen um drauf zuzugrefen aber via ORM.

Gruß,

Martin


----------



## Kr0e (14. Okt 2011)

Die AppEngine ist nicht für Spiele geeignet. Es werden nur maximale Verbindungsdauern von 30sek unterstützt. Außerdem ist die MySql Lösung, sobald sie isch nicht mehr in der Testphase befindet, kostenpflichtig. Du kannst aber Google's BigTable lösung nehmen, ist zwar keine relationale DAtenbank, aber sollte durchaus reichen...


----------

