Gamux Game Entwicklung  
     

Left Nav Mit Facebook verbinden Registrieren Lexikon Lexikon Interessengemeinschaften Suchen Heutige Beiträge Alle Foren als gelesen markieren Right Nav

Left Container Right Container
 

Zurück   Gamux Game Entwicklung > Computerspiele programmieren > Netzwerkprogrammierung

Antwort
 
Themen-Optionen Ansicht
Alt 13.07.2008, 18:41   #1 (permalink)
Benutzer
 

Standard Anleitung für P2P und Server Client Netzwerk

Hi,
ich bin zwar neu hier aber hoffe trotzdem, dass ihr mir bei meinem Problem helfen könnt.
Und zwar suche ich zwei verschiedene Anleitungen. Die erste soll für ein Server 2 Client Prinzip sein.
Als Beispiel nehmen wir einen CounterStrike Server.
Dabei werden die Daten(Positionen des Spielers, usw...) an den Server übertragen und sind für alle zugänglich.
Gleichzeitig holt der Client alle Daten der anderen Spieler vom Server und setzt diese im Spiel um.

Die andere Anleitung wäre ein P2P Netzwerk. Dabei geben alle Server die Daten an andere weiter.

Danke schonmal für eure Antworten
CompStop ist offline   Mit Zitat antworten An Facebook senden
Werbung
Alt 13.07.2008, 20:54   #2 (permalink)
Erfahrener Benutzer
 

Standard

Du solltest evtl. erwähnen in welcher Sprache du das haben willst.

Außerdem verstehe ich nicht ganz, wo das Problem des Ganzen ist. Wenn man mit dem senden von Daten umgehen kann, kann man auch sowas ungefähr umsetzen.

- Jeder Spieler braucht ne Unique ID
- X/Y/Z Daten alle 0,X Sekunden an den Server senden (sofern es eine Änderung der Position gab)

Das ist das ganze Prinzip.


P2P hast du falsch beschrieben. P2P bedeutet Peer to Peer (Client zu Client). Demach solltest du das nochmal etwas genauer erklären, was du dort möchtest.

Sn0opy ist offline   Mit Zitat antworten An Facebook senden
Alt 13.07.2008, 22:00   #3 (permalink)
Benutzer
 

Standard

Mein Problem liegt an der Übertragung der Daten uan den Server sowie das empfangen.

Also praktisch: Wie sende ich die Daten mit möglichst hohen Performence an den Server, wie speichert man diese am besten auf dem Server und wie bekommst man die Daten vom Server wieder.
CompStop ist offline   Mit Zitat antworten An Facebook senden
Alt 14.07.2008, 15:52   #4 (permalink)
Pixelschieber
Benutzerbild von Sebastian
 

Standard

Wenn es sich um kleine Bewegungen handelt, die nicht oft passieren kannst du es mit PHP lösen.
Dazu musst du jedem Spieler erstmal eine ID zuweisen. Bei jedem Schritt rufst du dann eine Datei auf welche so aussieht:

mache_schritt.php?iplayerid=2&x=5&y=27
Die Werte x und y sind die Koordinaten welche übergeben werden.

Zusätzlich lädst du alle 0,x Sekunden folgende Datei vom Server:

andere_player.php?playerid=2

Es handelt sich dabei um eine xml-Datei welche wie folgt aufgebaut ist:
HTML-Code:
<player>
<id>1</id>
<x>3</x>
<y>11</y>
</player>   
<player>
<id>5</id>
<x>4</x>
<y>6</y>
</player>
Diese XML Daten musst du dann nur noch auswerten und in deinem Spiel umsetzen.

Allerdings ist diese Variante sehr serverlastig.

Vllt gibt es ja noch einen der weiß wie WoW, CS:S und Co das regeln.
Sebastian ist offline   Mit Zitat antworten An Facebook senden
Alt 14.07.2008, 23:43   #5 (permalink)
Benutzer
 

Standard

So habe ich das ganze ja noch gar nicht betrachtet.
Das wäre wohl mit Sicherheit die einfachste Möglichkeit an das ganze heranzugehen.

Allerdings wird das ganz wohl schnell sehr serverlastig, weshalb ich noch weitersuche.

Ich habe noch ein bisschen gegoogelt und bin auf SOAP gestoßen. Meint ihr das wäre eine gute Alternative?

Gibt es ein kleines OS Multiplayergame wo man sich angucken kann wie man es gut realisieren kann?
CompStop ist offline   Mit Zitat antworten An Facebook senden
Alt 15.07.2008, 21:28   #6 (permalink)
Erfahrener Benutzer
 

Standard

Warum schickst du nicht einfach Plain-Text. Beispiel für Positionsangabe:

pos_123x312x56

pos_ benutzt du einfach als Identifier für die Positions, sofern du noch andere Dinge senden möchtest. Die 3 Zahlen dahinter als x/y/z.

Ist weniger Serverlastig als XML oder SOAP

Sn0opy ist offline   Mit Zitat antworten An Facebook senden
Alt 15.07.2008, 21:55   #7 (permalink)
Benutzer
 

Standard

Zitat:
Zitat von Sn0opy Beitrag anzeigen
Warum schickst du nicht einfach Plain-Text.
Und genau hier steckt mein PRoblem.
Wie soll ich das als text/plain an den Server schicken?
CompStop ist offline   Mit Zitat antworten An Facebook senden
Alt 16.07.2008, 20:31   #8 (permalink)
Erfahrener Benutzer
 

Standard

Ich geh nun einfach mal ganz dreist von AutoIt aus:

TcpSend("pos_123x312x56")

Und schon wirds als Plaintext gesendet. Immerhin hast du uns noch nicht die Sprache genannt in der du das Ganze schreiben willst.

Sn0opy ist offline   Mit Zitat antworten An Facebook senden
Alt 16.07.2008, 22:18   #9 (permalink)
Benutzer
 

Standard

Zitat:
Zitat von Sn0opy Beitrag anzeigen
Und schon wirds als Plaintext gesendet. Immerhin hast du uns noch nicht die Sprache genannt in der du das Ganze schreiben willst.
Das ganze soll in C++ geschrieben werden.

Der TcpSend("pos_123x312x56") alleine bringt mir auch nicht viel. Sendet der Benutzer damit an den Server? Wie verarbeitet der Server dann den Befehl(mit welchem Befehl kann ich das gesendete auslesen?)
CompStop ist offline   Mit Zitat antworten An Facebook senden
Alt 18.07.2008, 19:20   #10 (permalink)
Erfahrener Benutzer
 

Standard

Mein Beispiel war nun auf AutoIt bezogen. Wie du Daten sendest und empfängst musst du selbst wissen in C++

Das ganze funktioniert so:

- Client hört auf TCP Port X Daten ab, bzw. wartet auf sie
- Server tut das Selbe
- Client sendet nun Plaintext über TCP Port X an IP Adresse X (den Server)
- Server sieht auf seinem Stream, dass User Y seine Koordinaten gesendet hat
- Server weiß nun wo User Y ist und kann das in seine Datenbank eintragen
- Ein anderer Client fragt nun die Datenbank über TCP Port X ab mit Befehl getplayerpositions (o.ä.)
- Server sieht dies auf seinem Stream und sendet User Z die Datenbank mit den Spielerpositionen-
- Client verarbeitet dies und setzt die Spieler auf die entsprechenden Positionen der Map

Done. TCP / UDP Tutorial für C++ solltest du eigentlich im Netz finden.


Hab nichts zu tun, ich code nun ma Server und 2 Clients in AutoIt und stell es on.


Geändert von Sn0opy (18.07.2008 um 19:25 Uhr).
Sn0opy ist offline   Mit Zitat antworten An Facebook senden
Antwort

Themen-Optionen
Ansicht

Forumregeln
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Client zu Server TCP Beispiel Sn0opy FAQ und Tutorials 5 05.11.2008 17:41


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:01 Uhr.


Style Copyright by Wrestling Forum
Content Relevant URLs by vBSEO 3.3.0