Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

21

22.03.2011, 22:51

Das kann ich mir so eigentlich nicht vorstellen, denn das würde heißen: Sobald der Host das Spiel verlässt, wird jemand anders Host. Und wenn dieser jemand eine Firewall aktiviert hat oder hinter einem Router sitzt, wird das nichts mit Hosting und die Partie ist beendet

Also ich kenne durchaus Spiele, bei denen es so ist. Ich glaube es war bspw. Siedler 3(bin mir aber sehr unsicher) aber da war es dann eben so, wenn der Host das Spiel verlassen hat, kam dann die Meldung: "Neuer Host wird gesucht" und dann ist plötzlich ein anderer Spieler Host. Also dieses Konzept gibt es durchaus, allerdings dachte ich nicht, dass das immer noch gang und gäbe ist. Denn das würde in der Tat ggf. Probleme mitbringen.
Bei den aktuellen Blizzard-Spielen gibt es ja aber ohnehin keine LAN-Modi mehr, so dass sich ein solches Problem erübrigt. Denn online gibt es natürlich extra Server, die sich darum kümmern. War das nicht das Problem von Call of Duty: Modern Warfare 2? IRgendwie gab es dort keine dedizierten Server mehr und somit waren die Spieler dann ihr eigener Host und das gab irgendwie nur Chaos und Probleme.

22

22.03.2011, 23:17

Diablo und Warcraft 3 sollten eigentlich nicht auf Battlenet Servern laufen, ansonsten kann ich mir nicht vorstellen, warum über Internet spielen manchmal so ein Problem ist. Schließlich muss man gelegentlich Ports aktivieren damit das ohne Probleme klappt. Ich würde sagen das zumindest bei Warcraft 3 die Battle.net Server nur dazu da sind um per STUN o.Ä. die NATs der Spieler zu überbrücken und die Spieler miteinander zu vernetzen. Sobald dann ein Spieler wegbricht besteht das Problem von Firewalls also gar nicht mehr... Zumindest im LAN Modus können ja Spieler in beliebiger Reihenfolge das Spiel verlassen. Daher ist jeder Spieler ein potentieller Server und muss daher auch den kompletten Spielzustand vorhalten.

Bei Diablo gibts ja Realm Games, die werden sicher von BNET gehostet, alle anderen Spielarten sollten ausschließlich über Spieler PCs laufen (bis auf erste Verbindung über BNET Lobby Server)

Bei http://us.blizzard.com/support/article.x…articleId=21109
steht unten, dass Spieler die Spiele selbst hosten. Allerdings ist wohl Warcraft 3 das einzige der Spiele, die von Spielern hinter NATs gehostet werden können.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Chromanoid« (22.03.2011, 23:26)


Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

23

22.03.2011, 23:39

@Chromanoid Also das was du da schreibst widerspricht größtenteils meinen Wissenstand.

Also nach meinem Kenntnisstand ist es so:
-die offiziellen Spiele werden alle vom Battlenet gehostet
-die "eigenen" Spiele werden von den Spielern selbst gehostet (was auch von deiner Quelle unterstützt wird es denn steht explizit drinne: "Allow port 6112 TCP in (hosting custom games)", nicht umsonst gibt es da tausende "can i host"-Spiele)
-WC3 und viele Blizzardspiele nutzen rein TCP. Da ist ein "punchtrough" kaum machbar bis unmöglich. Ein punchtrough wird hauptsächlich bei UDP durchgeführt.
-i.A. wird im Falle eines ausfalls des Servers ein neuer Server erwählt. Manchmal führt dies zu einem split oder wenn keiner die Ports offen hat zu einem Abbruch des Spiels.
-Ports "aktivieren" (genauer Forwarden) ist nur notwendig, wenn man selbst ein Server stellen möchte und hinter einem Router o.ä. (halt NAT) sitzt. Ansonsten ist es halt notwendig bei einer entsprechenden Firewall die Ports freizugeben.
WC3 ist definitiv nicht das einzige Spiel was beim Hosten die Ports entsprechend geforwarded haben muss (z.b. Diablo2 "Allow port 4000 TCP out and in (hosting open games only)").
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Nox« (22.03.2011, 23:58)


24

23.03.2011, 00:20

Der Unterschied bei Wc3 zwischen offiziellen und eigenen Spielen war mir nie wirklich bewusst, da ich fast ausschließlich TD und Ähnliches gespielt habe. Damit hast du wahrscheinlich recht was die offiziellen Spiele angeht.

Eigentlich widerspricht mein Post deinem Wissenstand doch nur bezügl. der offiziellen Spiele oder? Beim "eigene Spiele" Rest hast du doch prinzipiell das gleiche wie ich geschrieben? Für Tcp gibts glaube ich auch punchthrough Verfahren - sowas werden die doch wohl einsetzen sonst würden die doch nicht schreiben "Warcraft III is the only Blizzard Title that currently supports multiple players hosting games behind NAT." oder was vermutest du hinter der Aussage?
edit: bezügl. punchthrough wirst du wohl auch recht haben, ich nehme an, dass es selbst mit port fowarding pobleme bei hosting mit mehreren parteien hinter NATs gibt (daher die Aussage auf der Seite, dass das nur bei Wc3 möglich ist). damit sind die BNET server für eigene Spiele scheinbar wirklich nur lobby server.

Wie läuft das eigentlich bei selbsterstellten Karten bei SC2, wird die dann evt. erst auf den Server geladen oder ist der Server so ausgelegt, dass die Map im Grunde keine Rolle spielt? Hast du da ne Idee?

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »Chromanoid« (23.03.2011, 00:36)


Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

25

23.03.2011, 01:19

Ich kann dir versichern, dass es bei TCP keine Probleme mit NAT gibt, solange man nicht hosten will. Will man selbst ein TCP Service anbieten, so muss der Port entsprechend per Forwarding weitergeleitet werden.

Wie Starcraft 2 das ganze handhabt kann ich dir leider nicht sagen, da ich es nicht besitze und noch keinerlei Berührung damit hatte.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

26

23.03.2011, 02:58

Aber was hat es dann mit dieser Aussage auf sich:
"Warcraft III is the only Blizzard Title that currently supports multiple players hosting games behind NAT."
?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

27

23.03.2011, 03:35

Ehrlich gesagt würde ich dieser Aussage keine besondere Bedeutung beimessen. Das kann gehen von "ein PR-Typ hatte keine Ahnung von Netzwerk" über "Derjenige wusste nicht, dass Diablo 2 es auch kann" bis hin zu "wir fassen es ggf. einfach falsch auf".
De facto kann ich dir garantieren, dass TCP in Verbindung mit NAT kein Problem darstellt (pathologische Fälle mit amoklaufenden router/fw ausgeschlossen). Und wenn du es mir nicht glauben magst, schnapp dir eine Netzwerklib (z.B. syncsys ;) ) deiner Wahl, ein paar Freunde und teste es selbst.

Zur Problemstellung bzw. Designfrage werfe ich einfach mal einen Ansatz in den Raum der komplett contraire ist: "data orientated design". kA ob nur eine nette Idee oder ernsthafte Alternative.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

28

23.03.2011, 13:56

Du meinst sicher "data oriented design" ;o)

Sicher ist data oriented design ein interessanter Ansatz, aber optimal ist er nicht. Wie so oft macht die sinnvolle Verwendung und die Mischung mit anderen Ansätzen das Salz in der Suppe. Nicht alles was objektorientiert ist, ist auch gut durchdacht - Objektorientierung verleitet schnell zu einer extremen Kapselung von jedem kleinen Element in einer eigenen Klasse. Das führt dazu, dass das Programm an Mächtigkeit und damit Komplexität gewinnt, die es in der Regel gar nicht braucht. Dieses Verhalten konnte ich schon oft in meiner Zeit als Tutor beobachten. Entweder konnten die Gruppen gar nichts objektorientiert entwerfen (weil sie keine Kenntnis hatten) oder es wurde schlichtweg übertrieben (weil sie es verstanden haben) und damit viel zu komplex.

Data Oriented Design kann hier eine Alternative bieten sich wieder auf die guten, alten Tage zu besinnen. Allerdings schadet dieses Prinzip wenn es um Erweiterbarkeit und Wartbarkeit geht, da diese prozeduralen Ansätze nur durch explizites eingreifen in den Code zu erweitern sind. BlackBox-Frameworks kann man so auch nur schwer bis gar nicht erweitern oder an die eigenen Bedürfnisse anpassen.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

29

23.03.2011, 14:15

Ich weiß gar nicht wie das bei Warcraft 3 gelöst ist, aber ich schätze mal, da ist jeder "Server" und einige eben Server mit besonderen Aufgaben.

Nein, da gibt's nur einen Server. Das ist der Host.
Das kann ich mir so eigentlich nicht vorstellen, denn das würde heißen: Sobald der Host das Spiel verlässt, wird jemand anders Host. Und wenn dieser jemand eine Firewall aktiviert hat oder hinter einem Router sitzt, wird das nichts mit Hosting und die Partie ist beendet (...)
Ich würde deshalb mal davon ausgehen, dass alle Spiele automatisch von BNET Servern gehostet werden. Oder weißt du da genaueres?

Der Unterschied liegt hier zwischen offiziellen/ladder games und custom games. Custom games werden vom Host als Server gehosted. Fliegt der raus, ist eventuell die Partie vorbei.
Ladder games werden auf Blizzard-Server gehostet und diese sind die game-server. Ich denke aber nicht, dass der Ersteller dieses Topics einen externen Server betreiben will um Multiplayer-Spiele kontrollieren zu können. Daher muss einer der Clients der Server sein. Oder man riskiert halt Hacks von Seiten der Clients.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

30

23.03.2011, 14:21

Ehrlich gesagt würde ich dieser Aussage keine besondere Bedeutung beimessen. Das kann gehen von "ein PR-Typ hatte keine Ahnung von Netzwerk" über "Derjenige wusste nicht, dass Diablo 2 es auch kann" bis hin zu "wir fassen es ggf. einfach falsch auf".
De facto kann ich dir garantieren, dass TCP in Verbindung mit NAT kein Problem darstellt (pathologische Fälle mit amoklaufenden router/fw ausgeschlossen). Und wenn du es mir nicht glauben magst, schnapp dir eine Netzwerklib (z.B. syncsys ;) ) deiner Wahl, ein paar Freunde und teste es selbst.
Glaub ich dir :) ich konnte mir die Aussage einfach nicht erklären (sie war die Basis für meine Vermutung mit dem punchthrough Kram)... Gerade weil es in dem FAQ doch etwas technischer zu geht, glaube ich nicht, dass das da einfach so steht. Naja müsste man wohl mit entsprechenden Einstellungen einfach mal evaluieren. Aber so wichtig ist es ja auch nicht ^^

Bezügl. Thema: Evt. sonst ein Service mit ServiceLocator für solche Sachen wie Feindlichkeitsbestimmung u.Ä. vielleicht auch interessant... http://gameprogrammingpatterns.com/service-locator.html
http://gameprogrammingpatterns.com/component.html ist auch gar keine schlechte Perspektive auf das game object component model.

Werbeanzeige