2016-04-16 12 views
0

JS noob hier .. Ich versuche, mit einem barebones Multiplayer Turnbased Kartenspiel zu kommen. mit meinem aktuellen Coding-Wissen kann ich nach dem folgenden Pseudocode implementieren.2 Spieler Turnbased Spiel Logik

Ich habe 3 Dateien, index.html, multiplayer.php, gameStatus.txt.

index.html: 
     player one clicks ready button, which sends 1 to multiplayer.php. 
     player two clicks ready button, which sends 1 to multiplayer.php. 
     every 1 sec, repeater() checks if "twoPlayerFound" is returned from multiplayer.php. 
      if "twoPlayerFound" is returned, 
       then console.log("two players are online, game begins..") 
      else 
       console.log("waiting for another player to join..") 

    multiplayer.php: 
     when 1 is posted from index.html, php checks gameStatus.txt 
      if gameStatus.txt has 0 
       then overwrite gameStatus.txt 0 with 1; 
      else if gameStatus.txt has 1 
       then overwrite gameStatus.txt 1 with 2; 
       send to index.html "twoPlayerFound" 

    gameStatus.txt: 
     either has 0,1, or 2 

Q1. Wie kann ich gameStatus.txt automatisch auf 0 zurücksetzen, wenn die Spieler nicht mehr online sind.
Q2. Was wären die Probleme bei der Verwendung dieser Implementierungen? Q3. Ist dies der richtige Weg Multiplayer-Spiel-Setup

Dank des Denkens ..

+0

Hallo ... Wenn Sie versuchen, Codierung zu lernen, ist der Ansatz ein bisschen in Ordnung. Aber wenn Sie versuchen, eine "voll funktionsfähige" Echtzeitanwendung zu erstellen, ist es meiner Meinung nach besser, Ihre Zeit in etwas wie [socket.io] (http://socket.io/) zu investieren. –

Antwort

2
  • Q3 - Ich glaube nicht, dies eine gute Möglichkeit ist es, einen Multi-Player-Spiel-Setup zu implementieren, warum? Überprüfen Sie die Antworten für Q2.
  • Q2 - Ihre Datei kann nicht alle komplexen Szenarien verarbeiten, die während der vollständigen Implementierung des Spiels auftreten könnten.

Ein Beispiel: ‚Wie ich automatisch gameStatus.txt auf 0 zurückgesetzt, wenn die Spieler nicht mehr online sind‘ (ja, das ist dein Q1), um dieses Problem zu lösen, sollten Sie für jeden Spieler einen Zeitstempel halten und update Timestamp jedes Mal, wenn der Spieler den Server kontaktiert und halten Sie eine Schleife, um diese Zeitstempel im Auge zu behalten und den Spieler zu beseitigen, der Sie in letzter Zeit nicht kontaktiert hat. Um dies zu implementieren, müssen Sie einige ID zu Ihrer Spieler und so weiter zu halten ...

Denken Sie auch darüber nach, wie Sie dieses Setup skalieren könnten, Szenarien wie: Mehr als 2 Personen, die Verbindung zu Ihrem Server an einmal versuchen Leute, mit Leuten zu spielen, die sie mögen.

Ihr Spiel fühlt sich auch netzwerkhungrig an. Was Sie versuchen, ist AJAX Polling.

Meine Vorschläge? Für Client-Seite, verwenden Sie WebSockets in HTML5, versuchen Sie auch, etwas über socket.io zu recherchieren. Die meisten Leute würden nodejs für das Backend empfehlen, aber Sie können auch PHP verwenden. Sie sollten auch eine Methode wählen, um Sitzungen für Benutzer und den Spielstatus zu implementieren (diese Auswahl ist sehr abhängig von Ihrem Backend-Tech-Stack).

Verwandte Themen