wie Sie zwei Personen auf Ihrer Website verbinden

8

Es gibt ein Spiel namens Verbosity (es ist ein Spiel mit einem Zweck) und es ist auf diesem Link
www.gwap.com

im Spiel verbinden sie zwei Spieler zufällig, um miteinander zu spielen, das Spiel ist, dass player1 seinem Partner (player2) ein Wort beschreiben sollte und player2 das Wort guutes.
Ich versuche eine Website zu erstellen, die so etwas macht, aber ich frage mich 1- wie kann ich zwei Spieler zufällig verbinden, damit sie zusammen spielen können, obwohl sie keine registrierten Benutzer sind (sie sind nur Gäste der Webseite)?
2 - wie man sie im privaten Spiel spielt, ich meine, dass jeder zwei Spieler ihr eigenes Spiel spielt?
3- Was müsste ich verwenden? Ist es genug, ASP.Net zu verwenden? Brauche ich Silverlight? Danke

    
Ruba 21.03.2012, 07:28
quelle

6 Antworten

3

Nach meinem Verständnis haben wir zwei logische Einheiten:

Spiele: involvieren Interaktivität zwischen zwei Spielern in privatem

Spieler: Besucher (anonym) einer Website

Ich werde mit den Spielern anfangen, weil es einfacher ist. Ein Besucher landet auf Ihrer Website und es besteht die Notwendigkeit, ihn (eindeutig) zu identifizieren. Die einfachste Lösung ist eine Guid, die als Session-Parameter oder als Session-Cookie (mein Vorschlag) verwendet werden kann. Guid ist kein NULL-fähiger Typ, also wird Guid von 32 Nullen unser undefiniertes Guid sein.

Wenn Sie Ihre GUIDed-Besucher haben, benötigen Sie eine Schlüssel / Wert-Sammlung, die sie mit Spielen verbindet.

Szenario 1: Jeder Besucher kann jeweils nur ein Spiel gleichzeitig spielen. Ein Wörterbuch & lt; Spieler, Spiel & gt; kann den Job machen und Besucher, die keine Spieler sind, können leicht verfolgt werden (Spiel = undefined Guid)

Szenario 2: Jeder Besucher kann gleichzeitig ein Spieler für viele Spiele sein. Ein Wörterbuch & lt; Spieler, Liste & lt; Spiel & gt; & gt; ist die Lösung, aber game = undefinedGuid wird List.Count = 0

Jetzt sehen wir, was Sie mit Spielen machen können. Zuallererst können Sie GUIDs verwenden, um Ihre Spiele zu identifizieren. Dies bedeutet, dass das Wörterbuch Ihres Spielers Dictionary & lt; Guid, Guid & gt; für Szenario 1 oder Wörterbuch & lt; Guid, List & lt; Guild & gt; & gt; für Szenario 2. Offensichtlich benötigen Sie eine Schlüssel / Wert-Sammlung für die Spiele, sagen wir in Form von Dictionary & lt; gameGuid, gameDetails & gt ;. GameDetails muss eine Klasse sein, die die notwendigen Informationen enthält, die die Interaktivität zwischen den Spielern definieren können. In anderen Welten muss diese Klasse die Rolle jedes Spielers beinhalten (Rolle 1: derjenige, der fragt oder Rolle 2: derjenige, der rät) und die Nachrichten, die sie als Schlüssel / Wert-Sammlung austauschen, wobei Schlüssel der Spieler Guid und Wert ist eine Zeichenfolge Nachricht.

Um zusammenzufassen, benötigen Sie zwei statische Wörterbücher, die in Ihrem global.asax definiert sind, eine für die Spieler und eine für die Spiele. Sie benötigen auch eine GameDetails-Klasse, die dieser ähnelt (Grundkonzept-Implementierung):

%Vor%

Das Hinzufügen und Entfernen von Spielern ist ebenso einfach wie das Spielen (Spieler sind mit Spielen verbunden).

Es gibt viele andere Dinge, die Sie tun können (dh derjenige, der das Spiel beendet und Sie nach dem Zufallsprinzip einen anderen Spieler zuweisen usw.).

Mehr oder weniger ist dies auch der Weg, um einen asp.net-Chat mit privaten Räumen zu machen. Es kann für Sie hilfreich sein, ein gutes Beispiel eines einfachen asp.net Chat-Skripts zu finden und zu überprüfen, die Logik und die Implementierung zu sehen und sie an die obigen anzupassen. Zusätzlich können Sie das Chat-Skript so erweitern, dass es private Räume unterstützt und zwei Anwendungen anstelle von einer haben.

Ich brauche nicht zu erwähnen, dass asp.net mehr als genug für Ihr Projekt ist. Was Sie beachten müssen, ist, dass Sie, wenn Sie das Recycling des Anwendungspools nicht kontrollieren können, auch eine Persistenzschicht benötigen, sonst könnten Sie Ihre Wörterbücher verlieren.

Wenn Sie mehr Hilfe benötigen, lassen Sie es mich wissen.

    
user1088520 26.03.2012, 21:30
quelle
2

1- Wie kann ich zwei Spieler zufällig verbinden, damit sie zusammen spielen können, obwohl sie keine registrierten Benutzer sind (sie sind nur Gäste der Website)?

Es gibt nichts Magisches an einem registrierten Benutzer. ASP.NET kann den Status anonymer Benutzer verfolgen.

2- wie man sie im privaten Spiel spielen lässt, ich meine, dass zwei Spieler ihr eigenes Spiel spielen?

Sie müssen nur verfolgen, welche zwei Benutzer zusammen spielen. Das ist so einfach wie das Speichern ihrer Sitzungs-IDs

3- Was müsste ich verwenden? Ist es genug, ASP.Net zu verwenden? Brauche ich Silverlight?

Gehen Sie nicht zu Silverlight, Sie brauchen es nicht, um dies zu erreichen, und ich glaube, Microsoft gibt es zugunsten von HTML5 auf. Darüber hinaus beträgt der Marktanteil rund 60%, während Flash bei rund 100% liegt, so dass weniger Menschen dazu in der Lage sein werden Verwenden Sie Ihre Website, wenn Sie die Silverlight-Plug-in-Route aufrufen.

Wie andere bereits gesagt haben, kann Ihre Idee mit einer Kombination aus Client-seitiger AJAX- und ASP.NET-Server-Seite erfüllt werden. Ich empfehle jQuery für Ihre Client-Seite Code, macht es JavaScript und DOM Manipulation ein Kinderspiel.

Eine letzte Sache, schauen Sie sich Ссылка für ein Beispiel an, was Sie ohne Plugins in der heutigen Browser-Technologie erreichen können.

    
Walter Stabosz 29.03.2012 13:28
quelle
1

Ich denke, wenn zwei Personen auf Ihre Website zugreifen, können sie separat auf die Daten zugreifen und das Spiel unabhängig spielen

Um die Anzahl gleichzeitiger Benutzer in einer Site zu steuern, müssen Sie eine Variable für den Anwendungsstatus erstellen und zwei ausgewählte Benutzer-IDs speichern.

Jedes Mal, wenn ein Benutzer versucht, ein Spiel zu spielen, müssen Sie prüfen, ob seine ID in der Variablen des Anwendungsstatus existiert oder nicht, falls es ihm nicht erlaubt ist.

Natürlich musst du viel Code auf

schreiben
  1. Hinzufügen / Löschen der Benutzer-ID zur Variablen des Anwendungsstatus in der Datei Global.ascx
  2. implementiert Authentifizierung, um zu wissen, wer der Benutzer ist, und Benutzerprüfungen.
  3. Wenn Sie möchten, dass sie sich nach einiger Zeit automatisch abmelden (idle / fixed), müssen Sie Code im Session_End Event der Datei Global.ascx schreiben.

Lassen Sie mich mehr Details wissen, wenn Sie eine bestimmte Antwort wünschen.

Erstelle eine Klasse GameSession {int gameid; string player1; string player2}

Angenommen, es gibt nur ein Spiel und maximal 2 Benutzer

Benutzerregistrierungsprozess: Wenn ein erster Benutzer auf Ihre Website zugreift, überprüfen Sie den Benutzer, ob er registriert ist, checken Sie seine Benutzer-ID pwd und holen Sie sich seine Benutzer-ID aus Tabelle, wenn er Gast Zufallsschlüssel (guid) generiert oder fragt ihn nach dem eindeutigen Schlüssel (uniquenickname).

Staatliche Verwaltung: Erstellen Sie ein Objekt dieser Klasse, weisen Sie Spiel-ID = 1 zu und weisen Sie player1 = benutzerspezifischen Schlüssel zu. Erstellen Sie eine Sammlung von GameSession-Objekten, sagen Sie GameSessions, fügen Sie GameSession GameSession hinzu Speichern Sie GameSessions im Anwendungsstatus.

Wenn sich ein anderer Benutzer das nächste Mal anmeldet, folgen Sie demselben Benutzerregistrierungsprozess. In GameSessions nach einem leeren Slot (leerer player2) suchen, falls gefunden, diesen Benutzer dem ersten oder ausgewählten leeren Slot von GameSessions zuweisen. Jetzt ist diese GameSession bereit zu dienen.

Speichern Sie das Objekt zurück in den Anwendungsstatus.

Erlaube dem Benutzer das Spiel zu spielen

Schreiben Sie negative Fälle für obige Szenarien.

Auf diese Weise können Sie dies tun.

    
Imran Rizvi 21.03.2012 08:40
quelle
1

ASP.NET serverside und Ajax (javascript) auf dem Client reichen aus, um dies zu erreichen.

Grob gesagt möchten Sie den Client so einrichten, dass der Server in einem bestimmten Intervall nach Informationen abgefragt wird. Der Server antwortet mit Statusaktualisierungen, auf die der Client dann reagiert.

Sie geben den Clients eindeutige Token und der Server verfolgt, welche Token zusammen spielen. Sie möchten eine Datenbank verwenden, um ausstehende Statusupdates in den Spielen zu verwalten.

Beispielkonversation:

Kunde: Treten Sie

bei

Server: Beitreten, Token: 55164145

Client: Aktualisieren Sie 55164145

Server: Leerlauf, "Warten auf Gegner"

Client: Aktualisieren Sie 55164145

Server: Gegner gefunden, "Anonymer Benutzer 31"

Client: Aktualisieren Sie 55164145

Server: Beschreibe "Blume"

Client: Aktualisieren Sie 55164145

Server: Warten auf Beschreibung

Kunde: Submit-Description 55164145, "Pflanze mit Blütenblättern"

Server: Accepted-Description

Client: Aktualisieren Sie 55164145

Server: Warten auf Gegner

Client: Aktualisieren Sie 55164145

Server: Gegner nicht verbunden

Sie bekommen die Idee.

    
Toodleey 27.03.2012 13:45
quelle
1

Verwenden Sie SingleIR, um zwei Benutzer über Javascript im Webbrowser zu verbinden

Ссылка

    
Nitin Sawant 29.03.2012 07:06
quelle
1

Ich würde empfehlen, NodeJS dafür zu verwenden. Goto Ссылка herunterladen und installieren

Es funktioniert jetzt sowohl unter Windows (wo ich es verwende) als auch unter Linux, und Sie können einfach eine relevante Micro-Site erstellen.

Das Online-Buch Ссылка wird Sie sehr schnell auf den neuesten Stand bringen.

    
george calvert 29.03.2012 11:05
quelle

Tags und Links