MMORPG ohne großen Server?
-
@rüdiger:
Klar alle erhalten ein paar Zertifikate und schon ist alles sicher. Sag mal, von was träumst du eigentlich nachts...
Nur mal 2 Situationen:
-
Spieler A kommt online und behauptet: Ich habe Item XYZ im Inventar. Auf keinem anderen Client, der online ist, gibt es ein Profil von Spieler A mit Item XYZ. Was passiert jetzt?
-
Spieler A besiegt Gegner X (Wir nehmen mal an, alle Clients sind sich schonmal einig, das X wirklich tot ist). Er behauptet, dafür n Punkte zu erhalten. Meine lokale Rechnung ergibt m Punkte. Plötzlich kommt Spieler B und behauptet, n Punkte für die Aktion sind korrekt. Was passiert jetzt?
Da aller Client Code und Daten offen beliebig manipulierbar bei den Spielern liegen, kann sowas jederzeit passieren. Dann kannst du dein "Web of Trust" knicken. Einmal Bullshit-Bingo für mich! Nichts, aber auch gar nichts ist praktisch gelöst, in dem du irgend so Buzzwords in die Runde wirfst. Hobbyentwicklung eines P2P-MMORPG ist echt schon potenzierter Schwachsinn, einfach mal zwei "tolle" Sachen zusammengeworfen, von Typen mit NULL Plan.
Gruß, TGGC (\-/ has leading)
-
-
schrieb:Man kann ja auch "in der Nähe" mit "am nähesten in dieser Richtung" ersetzen, dann kann auch mal viel leerer Platz dazwischen sein.
Stimmt, daß wäre der nächste Gedankenschritt. Aber wie findest du den nähesten Client in einer Richtung X? Vergiß nicht, daß die Spielwelt mindestens 2D sein sollte. Du müsstest also aus deiner aktuellen Position und deinem Richtungsvektor den nähesten Client in dieser Richtung finden.
Dabei ist der Begriff "nähester" sogar ein größeres Problem als Du denkst. Auf einem Vektor ausgehend von deiner Position können sich schließlich mehrere Clients befinden und die Reihenfolge in der Du diese Clients findest steht in keinem Verhältnis zu deren Eentfernung von Dir. Du mußt also tatsächlich erst alle Clients auf dem vektor finden um dann den ermitteln zu können wer die geringste entfernung zu Dir hat...
Auch das läuft wieder auf einen "Fullscan" aller clients hinaus.
schrieb:vorraus
schreibt man voraus
danke, sowas sollte ich eigendlich selber wissen

-
schue schrieb:
Dabei ist der Begriff "nähester" sogar ein größeres Problem als Du denkst. Auf einem Vektor ausgehend von deiner Position können sich schließlich mehrere Clients befinden und die Reihenfolge in der Du diese Clients findest steht in keinem Verhältnis zu deren Eentfernung von Dir. Du mußt also tatsächlich erst alle Clients auf dem vektor finden um dann den ermitteln zu können wer die geringste entfernung zu Dir hat...
Auch das läuft wieder auf einen "Fullscan" aller clients hinaus.
Nein, du suchst nicht, sondern läst es dir sagen. Das Spiel fängt mit ganz wenigen Spielern an, jetzt kennt jeder jeden. Wenn es mehr werden, interessieren mich die die nicht mehr in meiner Nähe sind nicht mehr. Aber ein anderer, der näher dran ist, der kennt sie noch und wenn ich zu diesem hin gehe, dann sagt er mir sie.
Was natürlich ein viel größeres (unlösbares) Problem ist, dass jeder sich seine eigene Version compilieren kann, wenn der Sourcecode offen ist. Dann kann man sich z.B. eine Version machen, in der man nützliche Daten sieht die andere Spieler nicht sehen können (was ist in diesem Versteck, wieviel X hat Y...).
-
schrieb:Nein, du suchst nicht, sondern läst es dir sagen. Das Spiel fängt mit ganz wenigen Spielern an, jetzt kennt jeder jeden. Wenn es mehr werden, interessieren mich die die nicht mehr in meiner Nähe sind nicht mehr. Aber ein anderer, der näher dran ist, der kennt sie noch und wenn ich zu diesem hin gehe, dann sagt er mir sie.
Damit verlagerst Du das Problem, aber löst es nicht. Einfaches Beispiel: Wir nehmen drei Clients A, B und C die auf einer Linie stehen, aber relativ weit voneinander entfernt. es gibt noch mehr Clients in der Nähe von A und C, aber keiner der zwischen A und C steht ausser halt B. A dropped nun die Information über C weil dieser weit genug entfernt ist und C macht das gleiche, eben weil A weit genug entfernt ist. Soweit, sogut.
Jetzt bewegst sich A auf B zu und wenn A nah genug an B heran ist sagt B ihm, das da noch C ist. Soweit Ok.
Was aber wenn auch B sich in der Zwischenzeit bewegt hat und nciht mehr zwischen A und C steht? Wenn A sich dann Richtung C bewegt nähert kommt keine Info von B, weil B ja mittlerweile ganz woanders ist und möglicherweise selber C gedropped hat. Und schon geht C verloren.
Um das zu verhindern müßte B wissen, das A und C sich nicht mehr kennen und in dem Moment, wo B nicht mehr zwischen A und C ist die beiden wieder miteinander bekannt machen. Dafür mütße B aber Informationen über die Verbindungen von A und C haben...
-
nehmen wir an, A befinde sich in einer umgebung U. da wir keinen zentralen server haben, liegt U auf einem weiteren client C. C ist nun der server für alles, was in U stattfindet, und bestimmt, wer welche informationen braucht. C besitzt auch informationen darüber, wer die angrenzenden umgebungen von U verwaltet, und reicht diese an die clients weiter, die die umgebung verlassen. bedingt durch unsere architektur gibt es natürlich einschränkungen bezüglich der größe von U, und der anzahl der verbundenen clients. es bleibt auch die frage, ob es sinnvoll ist, dass ein client die umgebung verwaltet, in der sich sein spieler befindet, oder ob dies unabhängig sein soll.
-
nachtrag: ich hab's jetzt nicht gelesen, aber wem gerade langweilig ist: (bei mir geht aber nur die google-cache-version)
das scheint zumindest in die richtung zu gehen.
-
TGGC schrieb:
- Spieler A kommt online und behauptet: Ich habe Item XYZ im Inventar. Auf keinem anderen Client, der online ist, gibt es ein Profil von Spieler A mit Item XYZ. Was passiert jetzt?
Wie ich schon sagte, es werden keine Profile auf anderen Rechnern gespeichert.
- Spieler A besiegt Gegner X (Wir nehmen mal an, alle Clients sind sich schonmal einig, das X wirklich tot ist). Er behauptet, dafür n Punkte zu erhalten. Meine lokale Rechnung ergibt m Punkte. Plötzlich kommt Spieler B und behauptet, n Punkte für die Aktion sind korrekt. Was passiert jetzt?
Der Spieler bekommt ja die Daten von anderen Rechnern, mit eben einem Zertifikat. Nimmt er nun andere Daten, dann hat er kein Zertifikat dafür. Aber es ist wirklich eine gute Frage was passiert, wenn die beiden Kontroll-Hosts unterschiedliche Daten liefern. Vielleicht löst man das einfach über das Web-of-Trust und nimmt die Daten von dem Client, dem man mehr "vertraut". Solche Fehler können da ja mit in die Bewertung einfließen.
-
Ich klinke mich jetzt hier aus, denn es wird unrealistisch:
Welche zentrale Stelle soll denn feststellen welche Clients vertrauenswürdig sind? Die von den 10 Cheatern, die also Party zusammenarbeiten oder die von den 3 Schulfreunden die ganz ehrlich zocken? 10 zu 3 Stimmen...der Cheater gewinnt.
Zertifikate sind auch Murks...Soll man bei denn unzähligen von eigenenden Meldungen jedes mal auch noch neben der Kontrolle für die eigene Relevanzprüfung deren Zertifikate übertragen und berechnen...Wer nah und wer weit ist kann man ja noch relativ einfach klären (Vector berechnen und Größe vergleichen), aber für wieviele Rechner?
Wenn du keine Profile auf andern Rechnern speichern willst...doch n Server?
Oder jedes mal durchs Netz jagen?Rüdiger, stell doch einfach mal ein komplettes Konzept für so ein Netz zusammen. Einzelne Schlagwörter ins web werfen und die als durchführbar definieren ist etwas too simple!
Schreib doch mal in das nächste Posting welcher Rechner in welchem Fall was tun muß und dann können wir Bitgenau mal den WorstCase und ein realistisches durchschnittliches Kommunikationsvolumen berechnen. Aber so wie's jetzt läuft bringt der Thread nix!
-
jucks schrieb:
Games are different from previous P2P applications that
focus on the harnessing of idle storage and network band-
width, including storage systems [12], [33], [11], content
distribution [9], [20] and instant messaging [26]. Games
utilize the memory and CPU cycles of peers to maintain
the shared game state. Three potential problems must be
addressed to make this approach fully applicable in practice:
• Performance—games have frequent updates, that must
be propagated under certain time constraints. Further-
more, peers have limited bandwidth since they are
located at the edge of the network.
• Availability—replicating game states to improve avail-
ability has two potential problems. First, once a peer
goes offline, its state quickly becomes stale and the
replica becomes invalid. Secondly, because of high
update frequency, maintaining a large set of replicas
is a potential performance bottleneck.
• Security—both the prevention of account thefts and
the prevention of cheating during game play should
be considered. Distributing game states to the peers
increases the opportunities for cheating.
This paper discusses the first two problems in detail.
Our design prevents account thefts, the problem most im-
portant to the game industry, by centralizing the account
management at the server, and only distributing game states
to the peers. Although cheat-prevention is a major concern
for online games [4], it is a separate issue from the basic
performance and availability of P2P gaming. We will make
note of instances where cheat-prevention has influenced
our design, but the details and particulars are a subject of
ongoing and future work.
-
Wenn sich jeder alles ercheaten kann, warum sollte man ueberhaupt spielen? f'`8k
AutocogitoGruß, TGGC (\-/ has leading)
-
Alternativ könnte man auf das erzocken von Items etc zur Verbesserung der Charakterwerte und Profile gleich verzichten und mehr einen auf Rollenspiel machen.
Sprich man kann auf seinem Rechner schon sein Aussehen usw verwalten, aber wenn man sich da halt nen coolen Helm "erhackt", sieht man halt nur etwas besser aus(und wenn jeder damit rumrennt gibts eh was besseres)
.Kann mir eh keiner sagen, dass ein Eisenhelm so viel weniger gut schützt als ein goldverzierter Polsterhelm der heiligen Stärke mit dem Juwel des reinen Herzens oder so... zumindest muss es nicht so sein und man kann genausogut halt nur ein reicher Schnösel sein, dem man halt seinen Helm mit Kopf drin wegnimmt und gut is.
-
Das Cheaten ist IMHO noch ned mal das gravierendste problem ...
Wenn man nen "dummen" server hat, hat man eigentlich immer viel Communication ueber die netzwerk schnittstelle ...
Und das im verhaeltniss zur anzahl der jeweiligen User.
Nen MMOPRG mit 100000 playern gleichzeitig auf einer Instanz /stadt sind. gibts ned. Einige arbeiten mit zonen ... einige mit so wandernden Blasen je nach position des Spielers ...Hat man nen Intelligenten Server, kriegt der client nur infos was er zu sehen hat und was nicht ... und der server kann filtern welche ereignisse von anderen playern (emotes, bewegungen etc) bei einem spieler ankommen und welche nicht.
Ist der server eher dumm, muss er immer alle daten einer "Zone" an alle player(clients) schicken ... der aufwand an netzwerk multipliziert sich also ...Wenn man nun mal schaut wie son rechenzentrum aufgebaut ist, was das fuer ne anbindung hat etc ... wird man schnell dahinter kommen wo der flaschenhals ist ... rechenleistung kann man eher relativ simpel aufbauen, einfach neue server hinstellen ... aber die Bandbreite des Rechenzentrums mal eben aufbohren iss nich. Wobei man bei bandbreite nur die die nach ausen geht sehen sollt, intern laessst sich natuerlich viel mit internen loesungen ... 5x gigabit Ethernet an einem cluster / server etc machen, wenn das zeugs eh im selben raum steht ...
Und bei nem gutgehendem MMORPG kommt man da sicher schnell an die kapazitaeten. Also die meisten "richtigen" MMORPGS optimieren mit Prio 1 auf den Netcode, dann erst auf die benoetigte rechenleistung.
Denk mal wenn man naiv rangeht und nen MMORPG proggt dazu nen dez. server in nem rechenzenter mietet mit vielleicht ner 100Mbit anbindung ans Inet iss man ohne intelligente Filterung vielleicht so bei ner niederen zweistelligen Zahl an CLients schon mal am Max, dann wirds mehr als laggy ....
Sei denn man schraubt die features runter, so das ehher nen pacman mit 100 playern rauskommt ^^ Glaub das waer scho zu realisieren ^^
Ciao ...
-
RHBaum schrieb:
pacman mit 100 playern rauskommt ^^ Glaub das waer scho zu realisieren ^^
also ich würde multiplayer-nethack spielen

-
Viiiiel interne Bandbreite schafft man z.B. ganz einfach durch Verwendung eines Blade-Servers

-
Also der Thread hier...ist echt zum totlachen! :->
Die Idee ein MMORPG über die Clients und ohne Server lösen zu wollen ist - sorry- SCHWACHSINN!!!
Nicht nur dass es technisch nicht möglicht ist sondern weil es so auch nicht funktionieren kann.1. wie soll ein Client x die IP von einem Client y wissen, wenn sich diese nirgendwo einloggen?!?!? Die Clients browsen sich bestimmt nicht von IP 1.1.1.1 bis 255.255.255.255 durch um zu sehen ob da einer gerade DIESES Spiel am laufen hat
2. FileSharing funct, weil es einen SERVER gibt an welchem du dich einloggst...sonst müsste man hier auch alle IP-Adresses des Internets nach dem Tool abfragen

3. Ohne Server gehts nicht... die Clients müssten sich zumindest an einem Server einloggen, damit er die IP an andere weiter geben kann.
Die Charakter-Daten MÜSSEN dann ebenfalls auf dem Server liegen...es macht NULL Sinn diese auf xxx Clients mit xxx unterschiedlichen Ständen abzuspeichern. Hinzu kommt ja noch die Möglichkeit der Manipulation der Daten4. Ohne dass ein Server die Daten hin und her schiebt geht es doch nicht!
Ein User mit 1 MBit DSL (128 KBit Upload) kann u.U. 5 oder 10 ander mitbedienen...das wars dann aber auch...laufen dann immer nur xx Leute durch die Gegend...mit Pings, welche in die Sekunden gehen können (je nach PC-Leistung der entsprechenden leute)...5. Server müssen nicht Schrankhoch sein!! Man kann mit einem Dual-Core AMD/Intel mit 4/8 GB RAM anfangen und später, wenn mehr Spieler da sind, dann die Welt auf mehrere Server aufteilen (4, 6, 8, 10....)
6. Ein Dual-Core Rechner mit 4 GB kostet nicht mal 1000 € mit vier 300er Platten (2 je gespiegelt!)
Standleitung und Traffic kann ich nichts zu sagen, weil ich mich damit noch nicht beschäftige7. In der Anfangsphase - die je nach Anzahl und Motivation 2 bis 5 Jahre mind. dauert - reicht auch ne normale 6 MBit DSL Leitung und ein Alter 2 Ghz PC...)
8. Wenn man für das Spiel nur 5 EUR verlangt, bekommt man fast alle der Spieler, welche sich überlegten WoW oder Ryzom oder sonst was zuzulegen, aber keine >12 EUR im Monat zahlen wollen/können
9. Weiß ich das alles, weil ich mich seit längerem mit dem Thema beschäftige und diese Woche selbst ein MMORPG mit einem kleinen Team anfange
10. Fettich

-
AlphaRay schrieb:
1. wie soll ein Client x die IP von einem Client y wissen, wenn sich diese nirgendwo einloggen?!?!? Die Clients browsen sich bestimmt nicht von IP 1.1.1.1 bis 255.255.255.255 durch um zu sehen ob da einer gerade DIESES Spiel am laufen hat
Zeroconf, bzw. dessen Wide-Area Erweiterung von Apple. Das sollte es IMHO tun.
AlphaRay schrieb:
2. FileSharing funct, weil es einen SERVER gibt an welchem du dich einloggst...sonst müsste man hier auch alle IP-Adresses des Internets nach dem Tool abfragen

bla, dasselbe wie 1.
AlphaRay schrieb:
3. Ohne Server gehts nicht... die Clients müssten sich zumindest an einem Server einloggen, damit er die IP an andere weiter geben kann.
bla, dasselbe wie 1.
AlphaRay schrieb:
Die Charakter-Daten MÜSSEN dann ebenfalls auf dem Server liegen...es macht NULL Sinn diese auf xxx Clients mit xxx unterschiedlichen Ständen abzuspeichern. Hinzu kommt ja noch die Möglichkeit der Manipulation der Daten
Das ist in der Tat ein Problem, aber das wurde auch schon als solches erkannt und diskutiert ...
AlphaRay schrieb:
4. Ohne dass ein Server die Daten hin und her schiebt geht es doch nicht!
bla, dasselbe wie 1.
AlphaRay schrieb:
Ein User mit 1 MBit DSL (128 KBit Upload) kann u.U. 5 oder 10 ander mitbedienen...das wars dann aber auch...laufen dann immer nur xx Leute durch die Gegend...mit Pings, welche in die Sekunden gehen können (je nach PC-Leistung der entsprechenden leute)...
Das ist ein weiteres Problem, das aber noch nicht wirklich angegangen wurde. Ich muss dir wohl oder übel zustimmen

AlphaRay schrieb:
5. Server müssen nicht Schrankhoch sein!! Man kann mit einem Dual-Core AMD/Intel mit 4/8 GB RAM anfangen und später, wenn mehr Spieler da sind, dann die Welt auf mehrere Server aufteilen (4, 6, 8, 10....)
Und? Es geht einfach um die technische Realisierbarkeit eines p2p-MMORPG Systems. Das es mit Servern funktioniert (egal wie groß oder bezahlbar) ist wohl hinlänglich bekannt...
AlphaRay schrieb:
6. Ein Dual-Core Rechner mit 4 GB kostet nicht mal 1000 € mit vier 300er Platten (2 je gespiegelt!)
bla, dasselbe wie 5.
AlphaRay schrieb:
7. In der Anfangsphase - die je nach Anzahl und Motivation 2 bis 5 Jahre mind. dauert - reicht auch ne normale 6 MBit DSL Leitung und ein Alter 2 Ghz PC...)
bla, dasselbe wie 5.
AlphaRay schrieb:
8. Wenn man für das Spiel nur 5 EUR verlangt, bekommt man fast alle der Spieler, welche sich überlegten WoW oder Ryzom oder sonst was zuzulegen, aber keine >12 EUR im Monat zahlen wollen/können
bla, dasselbe wie 5.
AlphaRay schrieb:
10. Fettich

bla, dasselbe wie ... ups

Ich find die Idee gut, aber das größte Problem sehe ich in den heftigen Latenzzeiten.
Allerdings sind AFAIK die Leute von id-Software bei der Implementierung einer p2p Netzwerkfunktion für Doom 3 im lokalen Netzwerk (!) gescheitert ...
-
@AlphaRay: warum lächerlich?
Ist für dich alles lächerlich wo sich jmd. Gedanken darüber macht wie man etwas machen könnte was deiner Meinung nach unmöglich ist?
Und selbst wenn das so ist, kann ich dich vielleicht dazu überreden das das nächte mal entweder garnicht oder etwas freundlicher zu formulieren?
Und nicht einen bereits relativ alten Thread bloss dazu wieder aufzuwärmen damit du in die Welt hinausschreien kannst wie lächerlich er doch ist?Davon abgesehen: ich glaube auch dass es wohl derzeit unmöglich ist sowas vernünftig hinzubekommen, bloss heisst das ja nicht das es auch gleich sinnlos ist sich darüber Gedanken zu machen. Auch wenn diese Überlegungen letztlich bloss dazu führen das man eindeutig beweisen kann das es nicht geht. An dem Punkt sind wir meiner Meinungn nach allerdings noch lange nicht.
-
Zeroconf sieht echt interessant aus. Leider finde ich bei Wikipedia nur die technische Erläuterung, wie das ganze in einem lokalen Netz funktioniert. Interessant wirds aber ja erst, wenn man das ganze global betrachtet. Wie funktioniert das da? Das ganze basiert doch offenbar darauf, dass man sich eine IP Adresse eines bestimmten Adressraums zuweist. Aber wie soll die Auflösung dann übers Internet funktionieren?
-
byto schrieb:
Zeroconf sieht echt interessant aus. Leider finde ich bei Wikipedia nur die technische Erläuterung, wie das ganze in einem lokalen Netz funktioniert. Interessant wirds aber ja erst, wenn man das ganze global betrachtet. Wie funktioniert das da? Das ganze basiert doch offenbar darauf, dass man sich eine IP Adresse eines bestimmten Adressraums zuweist. Aber wie soll die Auflösung dann übers Internet funktionieren?
Merkst du nicht, das ist die gleiche Art Problemloesung, welche hier schon die ganze Zeit betrieben wird. Man benutzt einfach BusswordXYZ, und schon ist das Problem erledigt. f'`8k
Gruß, TGGC (\-/ has leading)
-
byto schrieb:
Zeroconf sieht echt interessant aus. Leider finde ich bei Wikipedia nur die technische Erläuterung, wie das ganze in einem lokalen Netz funktioniert. Interessant wirds aber ja erst, wenn man das ganze global betrachtet. Wie funktioniert das da? Das ganze basiert doch offenbar darauf, dass man sich eine IP Adresse eines bestimmten Adressraums zuweist. Aber wie soll die Auflösung dann übers Internet funktionieren?
Ob Zeroconf funktionieren würde weiß ich nicht. Aber man könnte es ähnlich wie bei GNUtella lösen. Man hat eine oder mehrere Webseiten, auf denen die IPs laufender Nodes gelistet werden. Dann kann sich ein Client diese Liste ziehen und der Reihe durchgehen, bis er eine Verbindung hat.
TGGC schrieb:
Merkst du nicht, das ist die gleiche Art Problemloesung, welche hier schon die ganze Zeit betrieben wird. Man benutzt einfach BusswordXYZ, und schon ist das Problem erledigt.
Sicher, so lange hier keiner ein P2P MMORPG implementieren wird, wirst du das zu allen Vorschlägen sagen. Da hier auch vermutlich niemand die Zeit und Lust hat ein P2P MMORPG zu implementieren, wirst du das wohl die ganze Zeit über posten. Daher sagen wir einfach mal: Du hast es jetzt mehr als einmal gesagt, es wurde wahrgenommen...