Grundlagen Client-/ Serverkommunikation für Games

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

SeroSoft

Betreff: Grundlagen Client-/ Serverkommunikation für Games

BeitragFr, Nov 09, 2007 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen,
mich würde mal interessieren wie das grundsätzlich funktioniert mit der Client-/ Serverkommunikation bei Games. Nehmen wir mal das Beispiel World of Warcraft (weil mir gerade kein besseres einfällt). "Ein" Server der die Daten von den ganzen Clients beim spielen verwaltet. Was werden da überhaupt so an Daten b.z.w. Infos hin und her geschickt? Und was muss so ein Server alles können? Da ich auf diesem Gebiet noch ein Anfänger bin und echt null Ahnung davon habe wie sowas abläuft wäre ich über jede Info sehr dankbar. Fakt ist bei dem Beispiel(WoW), dass das Spiel ja rein online gespielt wird. Der Server muss also Login verarbeiten wobei ich das als kleinstes übel sehe. Muss man sich das im Spiel so vorstellen das die ganzen Maps auf dem Server vorhanden sind? Woher weiß mein Client wo ich mich gerade aufhalte? Woher weiß ein anderer Client wo ich mich gerade befinde? Dann sind da ja noch Gegner die sind ja auch Serverbasierend? Items die mein Char trägt im Inventar hat oder ähnliches. Ansich stell ich mir das als sehr große Datenmengen vor die über eine normale DSL-Leitung laufen müssen. Kann mir vielleicht jemand einen Einblick verschaffen um das Ganze besser zur verstehen?

MfG
Sero
Core2Duo E6600, 8 GB Corsair DDR2 800, Geforce 8800 GTX, Mouse: G5, Keyboard: G15, 2x 400 GB Samsung 16 MB Cache, 16000er T-Com Flat
 

klepto2

BeitragFr, Nov 09, 2007 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Als erstes muss ich sagen, das ich nicht die große Ahnung habe wie das ganze für ein MMORPG aussehen müsste. Aber lass dir gleich gesagt sein, mit einem einzelnen DSL Server werden wohl nicht mehr als max 100 Personen gleichzeitig spielen können.

zb: WOW : soweit ich weiß sind es im Prinzip mehrere Server die jeweils verschiedene Zonen verwalten. Die daten werden gepackt und dann per UDP (sollte bei einem ORPG so sein) versendet. Mit den Items läuft das folgendermaßen: Jedes Item hat eine simple eindeutige ID, wenn der Client von WOW jetzt diese ID auswertet schaut er als erstes in einer Datenbank auf deiner Festplatte (*.wdb) nach ob er die Daten bereits besitzt und verwendet diese. Sollte die ID nicht bekannt sein, so sendet er eine Anfrage an den Server, der wiederum schickt seine Antwort mit den daten (wenn ID gültig). Diese Daten benutzt nun der Client und speichert diese in seiner Datenbank.

Allgemeine Schritte die ich machen würde:
- Überlegung welche Daten übertragen werden müssen: (Position, Ausrichtung, Aussehen, div: Befehle, etc.)
- Als nächstes sollte man sich ein Protokoll für die Kommunikation zwischen Server und Client überlegen.
Da sollte halt die Reihenfolge der Befehle, Anmeldung und allgemeines Format geregelt sein.
- Das Programm schreiben und hoffen das man vorher keine Fehler gemacht hat Wink

Wenn ich es noch finde, kann ich dir gerne einen kleines Chat system schicken, welches ich aus neugierde über Netzwerk gemacht habe. Sowieso würde ich als einstieg einen Chat empfehlen. Diesen dann vielleicht erweitern, so das man zb: mit einer Figur rumlaufen kann, etc.

cu klepto2
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu
 

Dreamora

BeitragFr, Nov 09, 2007 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei einem MMO wie WoW gibt es nicht einen Server.
Das ist ein Severcluster mit mehreren Servern.
Dazu zählen 3 (soweit ich weiss) Server für die Verwaltung der Weltzonen, verschiedene Instanzenserver, ein Login Server und ein Datenbankserver



Vorweg: Wenn du Client - Server Kommunikation lernen willst, versuch das besser anhand von FPS.
Dies aus 2 Gründen:

1. FPS Network ist einige Welten einfacher als MMO (es gibt kein gut und schlecht bei MMO, das kommt jeweils sehr aufs Spiel an. Deswegen ist es auch so unsäglich schwer ein gescheites Networking für ein MMO zu schreiben, da es eine höchst komplexe Sache ist, auch wegen der Kommunikation zwischen den Servern im Cluster)

2. Für FPS Networking gibt es viele verschiedene Artikel und auch OpenSource Spiele wo man reingucken kann wenn man etwas darüber rausfinden will. Wenn du eine "simple" Netzwerk Library suchst um etwas anhand ihrer Tutorials zu lernen: http://enet.cubik.org/
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

WEBLink

BeitragDo, Nov 22, 2007 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.blitzbasic.com/en/c...?code=1398



Schau dir das an. Kann ich dir nur empfehlen. Hab selbst dadurch viel gelernt über Server und Clientkommunikation.

Edit:


Argh, sry hab nicht gesehen das es im BM Fotum war. Aber vielleicht hilft es dir ja dennoch.

BtbN

BeitragDo, Nov 22, 2007 22:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ichs richtig in erinnerung habe, setzt WoW nur auf TCP. Kann aber auch sein, dass sie TCP für alles nehmen, und die Bewegung per UDP machen, da ausser der Bewegung alles nicht verloren gehen darf.
 

Dreamora

BeitragDo, Nov 22, 2007 22:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Man kann auch in UDP erreichen das nix verloren geht. ENet zb unterstützt das inklusive sequenced speicherung, das heisst die packete werden auch in der richtigen reihenfolge auf der anderen seite ausgewertet, was häufig wichtig ist.

Da WoW mit einem Ping von 50-100ms spielbar ist, zweifel ich daran, dass positionsupdates TCP sind, trading und so wären hingegen durchaus möglich und grössere Datenpackete wie das oben mit dem item werden wohl direkt via TCP geschickt.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

BtbN

BeitragFr, Nov 23, 2007 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde ja gerne mal Wireshark mitlaufen lassen, während ich rumrenne und sonstwas mache. Aber das mögen die garnicht und ich wäre schneller gebannt, als ich gucken könnte.
 

Dreamora

BeitragFr, Nov 23, 2007 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
schau in die netzwerk logs deines Routers, da siehst du auch was gelaufen ist Smile *nicht die packete aber die protokolle und ports, was ausreichend ist*
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

BtbN

BeitragFr, Nov 23, 2007 21:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, finde nix dergleichen in meinem Router.


Ps.: http://www.google.com/search?q=Fritz+box+Netzlogs
Man beachte den Alternativ-Vorschlag.
 

Dreamora

BeitragFr, Nov 23, 2007 23:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut Fritz zeug kann man auch nicht Router nennen, das ist einfach eine auf DSL modifizierte Version der auf den Cablenetzen genutzten "Bridges" ... Smile

Sind in der schweiz nicht verbreitet, da niemand die Dinger anbietet Wink
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

BtbN

BeitragFr, Nov 23, 2007 23:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Würd ich nicht so sagen, ich find, die Fritz!-Boxen sind mit die besten Router dies momentan gibt.
Vorallem weil man so viel damit machen kann und sie Softwaretechnisch quasi unkaputtbar sind.
Hab Fritz seit ich DSL hab, und bin voll zufrieden. Hab halt nur noch nie sowas wie ein Netzlog dadrin entdeckt, und ich denke, das gibts da auch nicht.
 

Dreamora

BeitragFr, Nov 23, 2007 23:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja irgendwelche Log Files die die Verbindungen aufzeichnen, angriffe etc halt ... dort steht dann normalerweise auch was für dinge durchgelassen wurden
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

BtbN

BeitragFr, Nov 23, 2007 23:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Scheint es nicht zu geben, könnte man aber mal als vorschlag an AVM senden.
Problem was ich dabei sehe ist, dass die kleine Kiste nicht sonderlich viel Speicher bietet, und das Log nicht sonderlich lang sein könnte.

So, jetzt hat der Thread entgültig nix mehr mit dem zu Tun, wozu er ursprüunglich gedacht war.
 

HamsterTrainer

BeitragMi, Dez 12, 2007 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Smile

Lass dir bloss nich einreden das für ORPG'S, UDP besser ist.

Fast alle Großen MORPGS benutzen TCP weil:
1. Sichergestellt werden MUSS das die Daten auch ankommen.
2. Es nicht wirklich auf Geschwindigkeit ankommt. ( zumal TCP auch gar nich viel langsamer ist )
3. TCP viel einfacher zu handlen ist Smile

Ja klar es gibt Methoden ,auch bei UDP sicherzustellen , das alles ankommt. ( und auch in der richtigen Reihenfolge )
Nur ist dann der Geschwindigkeitsvorteil verloren ... und man kann gleich TCP nehmen.
 

Dreamora

BeitragMi, Dez 12, 2007 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
HamsterTrainer hat Folgendes geschrieben:
Smile

Lass dir bloss nich einreden das für ORPG'S, UDP besser ist.

Fast alle Großen MORPGS benutzen TCP weil:
1. Sichergestellt werden MUSS das die Daten auch ankommen.
2. Es nicht wirklich auf Geschwindigkeit ankommt. ( zumal TCP auch gar nich viel langsamer ist )
3. TCP viel einfacher zu handlen ist Smile

Ja klar es gibt Methoden ,auch bei UDP sicherzustellen , das alles ankommt. ( und auch in der richtigen Reihenfolge )
Nur ist dann der Geschwindigkeitsvorteil verloren ... und man kann gleich TCP nehmen.


Wenn du das UDP netzwerk schreibst stimmt das vielleicht.
Wenn du professioneller erstellte Libs nimmst, ist das totaler Blödsinn, sorry.

ENet zb hat alles was TCP hat mit dem Unterschied das es 15-20ms latency hat, statt 100-120ms

Und in Blitz ist TCP besonders nutzlos für echtzeit, denn solange die TCP nachricht nicht angekommen ist, bleibt dein Spiel vollständig stehen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

HamsterTrainer

BeitragMi, Dez 12, 2007 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm....unter Blitzbasic könnte das stimmen.

Aber unter Blitz sollte man TCP ja auch nicht benutzen.
( weil es eben Blockt )

Aber mit Blitz wird man ja auch bestimmt kein ORPG schreiben wollen ?

Es ging hier in dem Thread ja auch um "Grundlagen".

UDP ist nunmal so schnell , weil UDP diese Sicherheitsmechanismen NICHT HAT !
Wenn man die Sicherheitsmechanismen wieder einbaut ?
Wieviel schneller ist UDP dann noch ?

Ich hab beides ausprobiert , und bei TCP überwiegen die Vorteile.
Und da fast alle "großen" ORPG's TCP benutzen ..kann es ja nicht schlecht sein. *fg*

z.B.
WOW
Lineage2

Für ein ORPG ist die Latenzzeit nich wirklich so wichtig < 150 reicht völlig aus.

P.S. hab grade mal einen Test gemacht Client--->Server ( Dedizierter Server bei Strato )
max. Latenz von 50 ms ( ein Move Packet ).
 

Dreamora

BeitragDo, Dez 13, 2007 0:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Selbst wenn du alles wieder einbaust (was du nicht für alle Nachrichten brauchst, zb position modification muss net ordered oder guaranteed sein), ist UDP immer noch schneller.

Seis nur wegen der Tatsache dass du unter Windows bloss 10 TCP verbindungen haben kannst weils halt ein Stream ist, während UDP verbindungslos ist.
Oder anders gefragt: warum meinst du sind P2P Protokolle alle UDP basierend?


Und doch man kann mit Blitz ein ORPG und sogar MMORPG machen können, vielleicht sagt dir ja Freeworld etwas oder auch Realm Crafter?
Wenn nicht empfehle ich das Mal anzusehen.

Nur weil vieles nicht gemacht wird, heisst das nicht das man es mit Blitz nicht kann.
Ein ORPG / MMORPG ist einfach ein massives Projekt, das geht im Rahmen eines Hobbyprojektes nicht ansatzmässig.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Hummelpups

BeitragDo, Dez 13, 2007 2:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann habs damals auch noch mal Another World, mit sicherheit das bisher geilste MMO was ich
spielte was aus Blitz entstand, leider glaube ich lange tod.

ENet ist ne schicke sache,ja, im grunde muss man am ende doch abwägen was nun besser und
was zu vernachlässigen ist. Ein vernünftiger Hybridmodus ist wohl die richtige Wahl!

IMurDOOM
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus
 

Dreamora

BeitragDo, Dez 13, 2007 9:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Für den Patcher ist TCP sicher eine super Wahl, weil da ein Stream von grossem Vorteil ist.

In einer anderen Sprache könnte man TCP sogar für die wirklich wichtigen Daten nutzen.
Bei Blitz jedoch ist TCP keine Lösung für mehr als einen Patcher wegen des Blocking Verhaltens, da müsste man eine externe Library nutzen die beides hat und non-blocking arbeitet.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

HamsterTrainer

BeitragDo, Dez 13, 2007 12:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora hat Folgendes geschrieben:


Seis nur wegen der Tatsache dass du unter Windows bloss 10 TCP verbindungen haben kannst weils halt ein Stream ist, während UDP verbindungslos ist.


10 Verbindungen ?
ist das ne blitz beschränkung ?
Normalerweise kann ich soviele Verbindungen machen wie ich will ( wenn ich soviele Ports hab Smile

Dreamora hat Folgendes geschrieben:

Oder anders gefragt: warum meinst du sind P2P Protokolle alle UDP basierend?

P2P ist zwar eine ganz andere Baustelle aber:
Aufgrund der Architektur eine P2P Netzwerke ist es einfacher über UDP.
Da in einem P2P Netzwerk viel mehr Verbindungen benötigt werden wie TCP erfstellen kann ( wenn du du 10 Millionen "peers" in einem P2P hast, kommst du mit ca. 65000 TCP Ports nicht weit )

Dreamora hat Folgendes geschrieben:

Und doch man kann mit Blitz ein ORPG und sogar MMORPG machen können, vielleicht sagt dir ja Freeworld etwas oder auch Realm Crafter?
Wenn nicht empfehle ich das Mal anzusehen.


Realmcrafter kenn ich Smile Demo Installiert .... ein bischen getestet und wieder gelöscht. ( kann man vieleicht für einen 3D Chat benutzen ...aber mehr auch nicht )

Freeworld sieht Interessant aus ...werd ich mal ausprobieren. ( wenn es kostenlos ist )


Dreamora hat Folgendes geschrieben:

Nur weil vieles nicht gemacht wird, heisst das nicht das man es mit Blitz nicht kann.
Ein ORPG / MMORPG ist einfach ein massives Projekt, das geht im Rahmen eines Hobbyprojektes nicht ansatzmässig.


Alleine kann man sowas nicht hinbekommen da gebe ich dir recht.
Aber mit einem kleinen Team ..wäre sowas schon möglich.
Da könnte man schon was nettes hinbekommen ,nur leider ist die Langzeitmotivation selten gegeben , so das ein Team spätestens nach 3 Wochen auseinanderfällt.

Ich sehe sowas fast jeden Tag ... da ich "zufällig" Autor des "WorldSphere" Frameworks bin. *fg*

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group