MMORPG ohne großen Server?



  • Sicher, aus kommerzieller Sicht macht eine Server-Lösung Sinn. Aber wenn man ein freies oder nicht kommerzielles MMROPG entwickeln will, ist ein Server eben nicht finanzierbar! (Der Unterschied ob ein Nutzer im Internet 10€ oder 0.10€ zahlt ist zur Zeit eben deutlich kleiner, als der Unterschied zwischen 0€ und 0.10€ ...)

    Vor allem kann ein P2P-Netz auch richtig groß werden, da die "Server-Leistung" mit jedem Client wächst, während bei einer Server-Lösung die "Server-Leistung" mit jedem Client schrumpft.

    MancheLeute schrieb:

    TsPaddy schrieb:

    Also mal ganz ehrlich: WAS SOLL DAS BRINGEN?
    Ihr redet nur über das "wie"...was ich vermisse ist das "warum"!

    Manche Leute haben einfach Spass daran neue Ideen zu durchdenken und neue Probleme zu lösen.

    Warum sollte es weniger Aufwand sein Serversoftware zu schreiben, die eine ordentliche Lastverteilung macht und tausende von Usern versorgen kann, als das ganze für Clients zu programmieren?

    👍



  • Der TsPaddy hat da schon Recht. Es gibt keinen wirklichen Grund sowas zu entwickeln, weil es andersrum ja bewiesenermaßen besser funktioniert.

    Gruß, TGGC (\-/ has leading)



  • TGGC schrieb:

    Es gibt keinen wirklichen Grund sowas zu entwickeln, weil es andersrum ja bewiesenermaßen besser funktioniert.

    Echt? Wer hats wo bewiesen? Gibts schon ein P2P MMORPG das nicht funktioniert?

    Natürlich ist es für Firmen einfacher an das Geld der Spieler zu kommen, wenn sich alle bei einem zentralen Server anmelden müssen, aber das heißt ja deswegen nicht, das die andere Methode technisch schlechter ist.

    Was ist denn der unterschied zwischen einem Client und einem Server? Sind auch beides nur Rechner, einer von beiden kann möglicherweise mehr Power haben. Die Clients müssen aber auch nicht 5000 User, sondern nur 50 bedienen.



  • wie wärs den so ein p2p mmorpg hier im forum zu machen? das wird doch bestimmt nen spaß 😃
    ein thread, in dem alles steht wies funzen soll und dann werden immer threads für module/funktionen etc. aufgemacht und jeder kann seine lösung reinposten, dann bekommt man garantiert von irgenteinem ne ziemlich gute lösung. bei der community hier wirds denke ich nicht so lange dauern, wenn man ein gutes konzept entwickelt und die planung gut ist.



  • So einfach ist das nicht ein großes Projekt durchzuziehen. Da braucht man schon ein gutes Team das ein Jahr oder länger richtig zusammen arbeitet und nicht nur ein paar Forenmitglieder, die hier etwas Code posten und dann das Programm zusammen kopieren. Die meisten die es hier wirklich drauf haben, haben auch noch etwas anderes zu tun (studieren, arbeiten...).



  • Richtig...die sitzen und schreiben Client-Server Lösungen (sorry, konnte ich mir nicht verkneifen...grins).

    Zu den Serverpreisen:
    Wenn ein Spiel mehr Spieler erreicht, als man mit 3 Servern bedienen kann, dann bringt es auch genug Geld um die drei Server zu finanzieren.
    Bis zu 3 Servern kann man Hobbyprojekte auch selber finanzieren (oder wollt ihr nicht sagen, dass einige von euch im Monat mehr Kohle für Kippen ausgeben als so ein Server kosten würde?).
    Bitte nicht vergessen:
    Mit dem Code ist es nicht getan!
    Ich zum Beispiel mache beruflich 3D Sachen und mein Maya kostet mal eben 10k (mach auch VFX Sachen). Die kleine Version kostet trotzdem mal eben 2500.- und mit Max kommt man nicht billiger weg!
    Also: Irgendwie müssen halt Models auch erstellt werden (und da reichen in einem MMORPG nicht 2 Häuser und 3 Figuren), und da wird die Luft für n freies Projekt schon dünn. Es sieht also entweder sehr dünn aus oder kostet Geld in der Herstellung (oder die Leute erwarten wenigstens Kohle nach dem Release).

    Wer jetzt sagt, er könne ein MMORPG ohne Kohle erstellen, der ist meiner Meinung nach im falschen Genre und Publisher werden für P2P Systeme die keine wirklichen Exploitschutzfunktionen bieten nicht erwärmen lassen.

    Aber zurück zu meiner Ur-Frage:
    WOZU EIN P2P System?
    Wenn ein Rechner erst mal zig andere Kisten abfragen muß um zu wissen wer für ihn zuständig ist, kann man Dead Reckoning vergessen. Wenn Spieler sich bewegen, werden die Accounts wild rumgereicht, etc...
    Beim Client-Server System gibts dafür Server-Grids und gut ist die Nummer!
    Eine Welt, die so nicht machbar ist, ist es erst recht nicht mit P2P!



  • TsPaddy schrieb:

    Richtig...die sitzen und schreiben Client-Server Lösungen (sorry, konnte ich mir nicht verkneifen...grins).

    Was willst du uns damit sagen? Das die einfach was fertiges nehmen können. Toll. 🙄 Das ist vom Himmel gefallen und deshalb gab es da keine Probleme die gelöst werden mussten im gegensatz zu einer P2P Lösung.

    Zu den Serverpreisen:
    Wenn ein Spiel mehr Spieler erreicht, als man mit 3 Servern bedienen kann, dann bringt es auch genug Geld um die drei Server zu finanzieren.
    Bis zu 3 Servern kann man Hobbyprojekte auch selber finanzieren (oder wollt ihr nicht sagen, dass einige von euch im Monat mehr Kohle für Kippen ausgeben als so ein Server kosten würde?).
    Bitte nicht vergessen:
    Mit dem Code ist es nicht getan!
    Ich zum Beispiel mache beruflich 3D Sachen und mein Maya kostet mal eben 10k (mach auch VFX Sachen). Die kleine Version kostet trotzdem mal eben 2500.- und mit Max kommt man nicht billiger weg!
    Also: Irgendwie müssen halt Models auch erstellt werden (und da reichen in einem MMORPG nicht 2 Häuser und 3 Figuren), und da wird die Luft für n freies Projekt schon dünn. Es sieht also entweder sehr dünn aus oder kostet Geld in der Herstellung (oder die Leute erwarten wenigstens Kohle nach dem Release).

    Wer jetzt sagt, er könne ein MMORPG ohne Kohle erstellen, der ist meiner Meinung nach im falschen Genre und Publisher werden für P2P Systeme die keine wirklichen Exploitschutzfunktionen bieten nicht erwärmen lassen.

    nachgefragt schrieb:

    Natürlich ist es für Firmen einfacher an das Geld der Spieler zu kommen, wenn sich alle bei einem zentralen Server anmelden müssen, aber das heißt ja deswegen nicht, das die andere Methode technisch schlechter ist.

    Aber zurück zu meiner Ur-Frage:
    WOZU EIN P2P System?
    Wenn ein Rechner erst mal zig andere Kisten abfragen muß um zu wissen wer für ihn zuständig ist, kann man Dead Reckoning vergessen. Wenn Spieler sich bewegen, werden die Accounts wild rumgereicht, etc...
    Beim Client-Server System gibts dafür Server-Grids und gut ist die Nummer!

    Werden bei den Client-Server Systemen die Accounts rumgereicht?

    Es ging außerdem nie darum ein solches P2P MMORPG hier herzustellen, sondern darum ob es technisch mögich wäre.

    Aber wozu über was neues nachdenken, machen wird unser Wasser halt überm Feuer warm (nicht Dampflok, es gibt ja Füße und die funktionieren gut).



  • Wollte damit nur sagen, dass wenn es keinen wirklichen Grund gibt sowas zu tun, man das Rad nicht unbedingt neu erfinden muß.

    Bei Client-Server Systemen, die als ServerGrid laufen werden die Accounts unter den Servern rumgereicht...um genauer zu sein, es werden die Positionen, das Inventory und die Vitalwerte. Ergo hat jeder Server nur die Spieler zu verwalten, die er auch bedient. Über solche Servergrids können die Welten dann eine nahezu beliebige Größe erreichen.
    Alle Weitergaben von Spielerdaten von Server zu Server läuft auf einem lokalen Netzwerk, also mit sehr geringen Latenzen und in der Regel dann auch über 1000MBit Netze (kostet ja auch nix mehr). So können also sogar große Menschenansammlungen (oder Orkansammlungen oder meinetwegen auch Goblins) von mehreren Servern gleichzeitig verwaltet werden. Die einzige Limitierung besteht im Flaschenhals zu den Usern, woraus folgt:
    Größte Menschenansammlung die auf einer Stelle sein kann = Max. Durchsatz der möglichen Statusänderungen der Spieler die das DeadReck-System verwalten kann...
    ->Kein Overhead zwischen den Spielern, keine Doppelt verwalteten Accounts, Keine Möglichkeit die weitergereichten Daten zu manipulieren!



  • TsPaddy schrieb:

    Bis zu 3 Servern kann man Hobbyprojekte auch selber finanzieren (oder wollt ihr nicht sagen, dass einige von euch im Monat mehr Kohle für Kippen ausgeben als so ein Server kosten würde?).

    Nö, sicher nicht.

    Ich zum Beispiel mache beruflich 3D Sachen und mein Maya kostet mal eben 10k (mach auch VFX Sachen). Die kleine Version kostet trotzdem mal eben 2500.- und mit Max kommt man nicht billiger weg!

    Wenn du das beruflich machst, dann ist das sicher auch ein vernünftiger Preis. Sehe aber nicht, wie das mit Hobby-Projekten oder Server-Kosten zusammen hängt.

    Wer jetzt sagt, er könne ein MMORPG ohne Kohle erstellen, der ist meiner Meinung nach im falschen Genre und Publisher werden für P2P Systeme die keine wirklichen Exploitschutzfunktionen bieten nicht erwärmen lassen.

    Wenn man einen Publisher hat, hat man ja auch genug Geld um einen oder mehrere Server zu betreiben.

    Aber zurück zu meiner Ur-Frage:
    WOZU EIN P2P System?
    Wenn ein Rechner erst mal zig andere Kisten abfragen muß um zu wissen wer für ihn zuständig ist, kann man Dead Reckoning vergessen. Wenn Spieler sich bewegen, werden die Accounts wild rumgereicht, etc...
    Beim Client-Server System gibts dafür Server-Grids und gut ist die Nummer!
    Eine Welt, die so nicht machbar ist, ist es erst recht nicht mit P2P!

    Warum machst du dir eigentlich so viel Sorgen darum. Bring doch entweder vernünftige Gründe, anstelle direkt gegen die Idee zu flamen. Das ist ziemlich sinnlos und interessiert im Grunde auch niemanden.

    TsPaddy schrieb:

    Wollte damit nur sagen, dass wenn es keinen wirklichen Grund gibt sowas zu tun, man das Rad nicht unbedingt neu erfinden muß.

    Aber das "Rad" gibt es erstens noch nicht und zweitens muss man das Rad ab und zu neu erfinden oder fahren heutige Autos noch mit geschlagenen Stein-Rädern rum, weil man meinte es sei unnötig das Rad neu zu erfinden?

    aber bitte eröffne einen neuen Thread, wenn du über den Sinn diskutieren willst oder bring Beiträge zur Technik eines solchen Systems. Wie man ein MMPORG mittels eines Netzwerks von Servern am besten realisiert wird, ist wohl eher weniger interessant für den Thread.



  • Hi Rüdiger:

    Mit Serverkosten hängt das wie folgt zusammen:

    Keine Grafik, kein Anständiges MMORPG (oder willste ConsolenMMORPGs wieder einführen?).
    Grafik kommt nicht aus dem Nix. 3D Tools sind nicht umsonst.
    (Und jetzt erzähl mir nicht du willst mit POV und nem zusammengezimmerten Bones/Jointseditor ran).

    Wenn man nun die Kosten für die 3D Software dagegenhält (sagen wir mal 3 Perosnen mit der kleinsten Version von C4D, was natürlich nicht wirklich das Tool der Wahl sein sollte) biste immernoch mit richtig Kohle dabei!

    Da spielt dann ein Server mit 50.- pro Monat nicht wirklich die Rolle. Und den durch alle geteilt (du + die 3 Grafiker = 12,50 im Monat). Es hat also direkt was mit der Grafik zu tun. Wer nichtmal einen Server mit 50 p.M. bezahlen kann, der kommt auch zu keinem Grafiktool und damit ergo auch zu keinem MMORPG!
    Ich kenne Publisher und nur weil du denen heute mit einem Server kommst geben die dir kein Geld mehr für ein Spiel. Ne Lauffähige Demo, die nicht grade im Anfangsstadium steht, ist mittlerweile Minimum!
    Und um nun auf deine Wortklaubereien einzugehen: Das Rad ist immernoch rund.
    Alle Änderungen betreffen heute die Lauffläche, das Material, etc...aber das Rad ist und bleibt rund!

    Und nun zu den Gründen dagegen (P2P):
    -Keine Überprüfbarkeit der Spielerdaten!
    Wenn alle Computer, die den Fortschritt eines Spielers bestätigen können, offline sind, hängt der Spieler mit seinem Charakter (weil der sagen wir mal nicht schlafen kann und sich mal Nachts einlogged).
    Was nun: Zulassen und nachher evtl wieder streichen wenn er faket?
    Was wenn er ne weile (3 Wochen wegen Urlaub) nicht spielt und die anderen jetzt die Lust verloren haben zu spielen? Wer kann Daten noch bestätigen?
    Was wenn der erst unter vorbehalt läuft und dann die Werte aberkannt bekommt? Was ist mit dem Superduperschwert das er mit seinen neuen Fähigkeiten geschmiedet hat? Kriegt das Spieler XY nun aberkannt, da er das vom unbestätigten Spieler für 5000 Gold gekauft hat, das Schwert aber nicht hätte existieren dürfen? Was ist mit Spieler Z? Der hat gegen Spieler XY im Duellring verloren, weil dem die Klinge einen übergezogen hat und so 10000 eingebüßt. Bekommt der die zurück? Glaub mir, dass ist ein Punkt den Spieler aller Coleur bis aufs Mark aufregt und der die Admins schnell mit Mails überflutet.

    Punkt 2: Der Netzwerkoverhead.
    Wenn die Spieler ihre Accounts, Positionen, Items, etc mit anderen Spielern abgleichen müssen um ihre Existenz zu rechtfertigen gehen schnell mehr Pakete für sowas durchs Netz, als fürs Spiel um das Problem von oben zu beheben.

    Punkt 3: Exploitbarkeit
    Man kann die Daten, die an die anderen Spieler gesendet werden nicht wirklich verschlüssen, da die sonst ja nicht die Gültigkeit bestätigen können. Also wieder Tür und Tor offen für Datenklau und Exploits..."HA, SPIELER XY IST IN QUADRAT 7 UNTERWEGS UND HAT 5000 GOLD DABEI...QUADRAT 7...LOL IST N PvP BEREICH...NIX WIE HIN UND DEM DAS ABNEHMEN!!!"...tolle Lösung.

    Punkt 4: Verteilen wie bei Napster
    Hat einer von euch damals mal Napster benutzt? Da kommen dann neue Quellen nach 10 min. Plötzlich hinzu...ups...der Stand ja die ganze Zeit neben mir und ich hab den nicht gesehen, weil mein System nicht upgedatet war...auch Murks...

    Punkt 5: Updates
    Die müssen beim Spiel auch noch unters Volk gebracht werden.

    Ich könnte jetzt endlos so weitermachen...ergo P2P ist nix für MMORPGs...
    Das funzt vielleicht noch im LAN aber nicht im iNet.
    Wie gesagt...alles Gründe, die dagegen sprechen, wo sind nun die Gründe dafür oder die Entkräftung der Gründe dagegen (bitte dann aber mit entsprechenden Zahlen, das es keinen wesentlichen Netzwerkoverhead gibt). Bei einem Spieler hab ich z.B.
    3Floats für Pos.
    3Floats für Bewegungsvektor
    min 11 Byte (je einen für Haare, Gesicht, Statur, Helm/Hut, Kleidung, Harnisch, Schuhe, Handschuhe, Waffe, Schild, Ellenbogenschoner)
    20 WORD = Inventory von 20 Teilen
    long für Geldstücke
    long für SpielerID
    Char 20 für Namen
    = 31Byte (Kleidung und Name)
    = 2 Long (Geld und SpielerID)
    = 20 Word (Inventory)
    = 31 + 8 + 40 Byte = 79Byte im harmlosesten Fall...noch nix dolles.
    Ziel dieses P2P soll aber sein, die Spielermaxgrenze aufzuheben = Sagen wir mal 1000000 Spieler. Das wären dann Über kurz oder lang 75,34MB die bei den Spielern aufschlagen. Da man ja nicht weiß, wer noch online ist müssen die Spieler quasi erst mal alle Pakete die sie bekommen speichern. Also müssen sie diese auch regelmäßig abgleichen. Für WOW Verhältnisse wären das schon 340MB und das sind immernoch keine MMORPG-Größen, die nicht mir Client-Server lösbar wären.
    Dazu kommt noch, dass diese Werte ja nicht einmal übertragen werden, sondern andauernd...also immer wenn sich was ändert...und selbst wenn man nicht alle Spieler aufhebt, dann muß man trotzdem den Teil, den man verwaltet andauernd aktuell halten und sei es nur die Positionierung!
    Und wenn dann grade ein Update von 1MB kommt, wärend man sich mit eine Horde Monstern kloppt...gute Nacht!
    Client Server Systeme senden dir nur die User und Gegner, die in deiner Aura sind. Das ist dann verkraftbar! Aber das ist für ein System (P2P) in dem renundante Daten (schon ein Wort was unbehagen bereitet) pflicht sind, nicht anwendbar ist!



  • TsPaddy schrieb:

    (Und jetzt erzähl mir nicht du willst mit POV und nem zusammengezimmerten Bones/Jointseditor ran).

    Nö, ich will ja auch gar nichts. Mir geht es nur um das Netzwerk-Protokoll. Vielleicht hat er ja eine Maya-Kopie von seinem Arbeitgeber oder benutzt eben doch freie Werkzeuge. Mir im Grunde egal.

    Ich kenne Publisher und nur weil du denen heute mit einem Server kommst geben die dir kein Geld mehr für ein Spiel. Ne Lauffähige Demo, die nicht grade im Anfangsstadium steht, ist mittlerweile Minimum!

    Du brauchst ja auch erst einen richtigen Server, wenn du das Ding veröffentlichen bzw. Beta testen willst...

    Und um nun auf deine Wortklaubereien einzugehen: Das Rad ist immernoch rund.
    Alle Änderungen betreffen heute die Lauffläche, das Material, etc...aber das Rad ist und bleibt rund!

    Das Spiel bleibt ein Spiel

    Und nun zu den Gründen dagegen (P2P):
    -Keine Überprüfbarkeit der Spielerdaten!
    Wenn alle Computer, die den Fortschritt eines Spielers bestätigen können, offline sind, hängt der Spieler mit seinem Charakter (weil der sagen wir mal nicht schlafen kann und sich mal Nachts einlogged).
    Was nun: Zulassen und nachher evtl wieder streichen wenn er faket?
    Was wenn er ne weile (3 Wochen wegen Urlaub) nicht spielt und die anderen jetzt die Lust verloren haben zu spielen? Wer kann Daten noch bestätigen?

    Der Charakter erhält Zertifikate von den Mitspielern. Die Zertifikate lassen sich dann von den anderen Spielern überprüfen, selbst wenn der Zertifikats-Ersteller nicht Online ist. Dazu muss man nur die Schlüssel weit verteilen. Durch ein Web-of-Trust kann man dann sogar gefälschte Spieler aufdecken.

    Punkt 2: Der Netzwerkoverhead.
    Wenn die Spieler ihre Accounts, Positionen, Items, etc mit anderen Spielern abgleichen müssen um ihre Existenz zu rechtfertigen gehen schnell mehr Pakete für sowas durchs Netz, als fürs Spiel um das Problem von oben zu beheben.

    Ja, aber da sehe ich kein großes Problem. So viel Daten mehr sind das auch nicht. Außerdem nimmt die Leistung der Internet-Anbindungen stetig zu.

    Punkt 3: Exploitbarkeit
    Man kann die Daten, die an die anderen Spieler gesendet werden nicht wirklich verschlüssen, da die sonst ja nicht die Gültigkeit bestätigen können. Also wieder Tür und Tor offen für Datenklau und Exploits..."HA, SPIELER XY IST IN QUADRAT 7 UNTERWEGS UND HAT 5000 GOLD DABEI...QUADRAT 7...LOL IST N PvP BEREICH...NIX WIE HIN UND DEM DAS ABNEHMEN!!!"...tolle Lösung.

    Die Informationen werden ja von anderen Rechnern kontrolliert. Jeder Rechner stellt im Grunde den Kontrolleur für zwei (oder mehr, je nach Aufwand) weitere Spieler da.

    Punkt 5: Updates
    Die müssen beim Spiel auch noch unters Volk gebracht werden.

    Wie gesagt, man verteilt die Updates und ab einem bestimmten Datum kann man sich dann nur verbinden, wenn man das Update hat.

    Ich könnte jetzt endlos so weitermachen...ergo P2P ist nix für MMORPGs...

    Bitte mach weiter. Bisher habe ich kein unlösbares Problem gesehen.

    Das funzt vielleicht noch im LAN aber nicht im iNet.
    Wie gesagt...alles Gründe, die dagegen sprechen, wo sind nun die Gründe dafür oder die Entkräftung der Gründe dagegen (bitte dann aber mit entsprechenden Zahlen, das es keinen wesentlichen Netzwerkoverhead gibt). Bei einem Spieler hab ich z.B.
    3Floats für Pos.
    3Floats für Bewegungsvektor
    min 11 Byte (je einen für Haare, Gesicht, Statur, Helm/Hut, Kleidung, Harnisch, Schuhe, Handschuhe, Waffe, Schild, Ellenbogenschoner)
    20 WORD = Inventory von 20 Teilen
    long für Geldstücke
    long für SpielerID
    Char 20 für Namen
    = 31Byte (Kleidung und Name)
    = 2 Long (Geld und SpielerID)
    = 20 Word (Inventory)
    = 31 + 8 + 40 Byte = 79Byte im harmlosesten Fall...noch nix dolles.
    Ziel dieses P2P soll aber sein, die Spielermaxgrenze aufzuheben = Sagen wir mal 1000000 Spieler. Das wären dann Über kurz oder lang 75,34MB die bei den Spielern aufschlagen. Da man ja nicht weiß, wer noch online ist müssen die Spieler quasi erst mal alle Pakete die sie bekommen speichern. Also müssen sie diese auch regelmäßig abgleichen. Für WOW Verhältnisse wären das schon 340MB und das sind immernoch keine MMORPG-Größen, die nicht mir Client-Server lösbar wären.

    Wie gesagt, es muss ja nicht jeder Client alle Daten-Pakete bekommen, sondern nur die für ihn interessanten. Da ändert sich ja nichts, nur weil du keinen zentralen Server hast.

    Dazu kommt noch, dass diese Werte ja nicht einmal übertragen werden, sondern andauernd...also immer wenn sich was ändert...und selbst wenn man nicht alle Spieler aufhebt, dann muß man trotzdem den Teil, den man verwaltet andauernd aktuell halten und sei es nur die Positionierung!
    Und wenn dann grade ein Update von 1MB kommt, wärend man sich mit eine Horde Monstern kloppt...gute Nacht!
    Client Server Systeme senden dir nur die User und Gegner, die in deiner Aura sind. Das ist dann verkraftbar! Aber das ist für ein System (P2P) in dem renundante Daten (schon ein Wort was unbehagen bereitet) pflicht sind, nicht anwendbar ist!

    wie gesagt, jeder Client hat ~2 Clients die er kontrolliert. Mehr hat man also auch nicht zusätzlich. Bei den Dimensionen von denen wir hier sprechen, sollten 2 Clients mehr also nichts ausmachen.

    btw. sind die Ganzen Probleme die du hier aufzeigst in dem Thread schon mal gelöst worden. Hättest du erst den Thread gelesen, anstelle rumzustänkern, dann müssten wir hier nicht alles drei oder vier mal durchgehen.



  • rüdiger schrieb:

    Bitte mach weiter. Bisher habe ich kein unlösbares Problem gesehen.

    [...]

    Wie gesagt, es muss ja nicht jeder Client alle Daten-Pakete bekommen, sondern nur die für ihn interessanten. Da ändert sich ja nichts, nur weil du keinen zentralen Server hast.

    Dann erklär mal wie genau ein Client herausfinden soll welche anderen Clients für ihn gerade interessant sind, damit er nur mit diesen Datenpakete austauscht.

    Erst einmal mußt Du definieren, woran ein Client denn erkennt ob ein anderer Client für ihn interessant ist. Definieren wir es der Einfachheit einmal nur über den Faktor der Entfernung. Alle Clients die innerhalb der Spielwelt also in einem bestimmten Radius um meinen Client herum stehen sind für mich interessant, sonst könnte ich sie ja nicht sehen.

    Um aber herauszufinden ob denn ein Client diese Bedingung erfüllt oder nicht muß ich zuerst die Position von allen Clients herausfinden. Da sich Clients permanent bewegen muß ich alle Positionsdaten von allen Clients bekommen und das perament denn ich kann nie wissen wann welcher Client in meine Sichtbarkeitsradius kommt.

    Sicher könnte man das Optimieren indem man nur die Positionsdaten austauscht und weitergehende Char-daten nur dann austauscht wenn der Spieler nah genug herangekommen ist. Aber selbst dann ist die Paketgröße einer Spielerposition so ca im Bereich von 30 Byte. Rechnen wir mal mit einem Positionsupdate pro Sekunde macht das bei 1000 Spielern schon einen Grundumsatz von 30kb/s Up und Down.

    Dabei ist es unerheblich ob ein Client nun seine Positionsdaten an jeden anderen Client verschickt oder ob er das Paket nur an den nächsten Client weitergibt und dieser es dann im Netz herumrouted, der Datendurchsatz bleibt der gleiche pro Client. (Beim Routen steigt nur die Latent an)

    Worauf ich hinauswill ist, daß Du eine gewisse "Grundlast" auf dem P2P Netz hast die im Idealfall nur linear zur Anzahl der Clients steigt. Ich hatte oben mal 30 Byte pro Client und Sekunde angesetzt, aber selbst wenn es nur 3 Byte wären kommen wir damit zu einem rein technischen Problem:

    Der überwiegende Teil der potentiellen Spieler hat DSL-Anschlüsse. Klingt trivial, hat aber eine wichtige Konsequenz: DSL ist asymetrisch. Bei einem 6 MBit-Anschluß ist der Upstream im schnitt 1 MBit/s, das sind 128 kbyte/s. Bei meinen geschätzen 30kb/s pro 1000 Spieler wäre damit bei 4000 Spielern der Upstream eines 6 MBit-Anschlusses voll.

    Und was dann?

    Beim Ansatz mit zentralem Server wird dagegen nur der downstram der Spieler belastet, der Upstream ist verschwindent gering und vor allem konstant, weil er nur seine eigenen Daten zum Server upstreamen muß. Auch kann ein zentraler Server intern die Positionsdaten filtern um einem client dann nur die tatsächlich relevanten Clients zuzuschicken.

    Damit steht die Frage im Raum: Wie willst Du es anstellen daß jeder Client nur Daten von solchen Clients bekommt die für ihn aktuell relevant sind ohne das er dazu regelmäßig die Positionsdaten aller Clients erhalten muß?



  • schue schrieb:

    Damit steht die Frage im Raum: Wie willst Du es anstellen daß jeder Client nur Daten von solchen Clients bekommt die für ihn aktuell relevant sind ohne das er dazu regelmäßig die Positionsdaten aller Clients erhalten muß?

    Larko schrieb:

    Die Idee war nicht, dass jeder mit jedem kommuniziert, sondern nur mit denen in der Nähe.

    1 2 3 4 5 6 7 8

    3 kommuniziert mit 1,2,4,5. Geht er näher zu 4, fragt er diesen wer in dieser richtung noch ist, der sagt ihm 6. Und dann kommuniziert er auch mit 6, dafür mit 1 nicht mehr usw.



  • 1,2,3,4,5 stehen auf einem Fleck, um sie herum ist kein anderer client in der Nähe. Jetzt bewegt sich 3 von der Gruppe weg. Wen fragt er jetzt?

    Mit wem kommuniziert ein Client wenn keine anderen Clients in seiner Nähe sind?

    Wie findet ein neu eingeloggter Client andere Clients in seiner Nähe?

    Was passiert wenn mal 100 Clients auf engstem Raum in der Spielwelt stehen?

    Natürlich klingt die Idee, einfach nur mit den Clients in der Nähe zu kommunizieren auf den ersten Blick einfach, simple und so als ob das funktionieren könnte. Aber das tuen die meisten Ideen wenn man sie nur genügend abstrakt betrachtet. Dabei behaupte ich ja (noch) gar nicht es sei unmöglich.

    Jedoch ist die Kommuniktaion so grundlegend wichtig für ein Morg, daß sie Hieb- und Stichfest funktionien muß. Das Zitat von Larko setzt implizit vorraus das alle Clients einigermassen gleichmäßig über die Spielwelt verteilt sind... Das dürfte aber in der Realität nahezu niemals der Fall sein. Vile eher wird es immer eine Ballung von Clients in bestimmten Regionen geben während gleichzeitig andre Regionen komplett leer sind...

    edit: v***** stehr für v-o-r-r-a-u-s warum das einen badword-Filter trigger k.a.



  • 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.

    vorraus
    schreibt man voraus 😃



  • Erst mal frohes neues Jahr!!!

    Das ist ja was ich meine.
    Es weiß keine Kiste wer grade in seiner nähe ist.
    Dafür muss ja andauernd im bestand der Spieler herumgestochert werden.
    Wenn das nun aber 1000000 Spieler sind und wir an einem harten Tag (sagen wir mal Tag der Arbeit...alle haben frei und sind am zocken) davon 300.000 online haben, und du zum vereinfachen ein Quasi Spieler/Zwischenknoten einrichtest, und der ganze 150 Spieler verwaltet (gehe davon aus du hast mit weniger Spielern pro Knoten gerechnet), hat der sich mit nicht weniger als 2.000 Rechnern auseinander zu setzten, die ebenfalls als Knoten versuchen miteinander zu kommunizieren.
    Wenn die nun nicht alle mit allen verbinden sollen, sondern du weiterreichst, dann gehen wir mal hin und verbinden die Latenzen (120ms mal im Mittel angenommen...du wirst aber fiesere Router vor die Nase bekommen). Die Werte in Klammern sind die Gesamtzeit der Meldund:

    Spieler an Knoten (120ms)
    Knoten an Spieler (240ms)
    Knoten an Nachbarknoten (240ms)
    Nachbarknoten an Spieler (360ms...schon ziemlich oll)
    Nachbarknoten an seinen Nachbarknoten (360ms)
    Spieler in dem 2.Knoten (480ms schon echt schlecht)
    ...
    etc.
    Wie gesagt...das sind jetzt Fälle, bei denen ich mit 150 Rechnern pro Knoten rechne...und das packt kein Client mit asyncronem DSL. Wenn du aber nur Knoten für 5 Rechner aufstellst (wolltest ja Kontrolleur für 2 oder mehr), dann kennen erst 125 Leute deine Daten nach 480ms...

    Da nicht alle Spieler ne direkte Backboneverbindung haben sind deren Leitungen entsprechend langsam. Das bedeutet, zzgl. der Rechenzeit um das Signal zu verarbeiten, das jeder der 150 Spieler die Nachricht schon technisch etwas später bekommt, da sie ja hintereinander weg und nicht simultan raus gehen. Ist zwar auch beim Server so, aber es addiert sich halt alles hoch... und du hast immernoch keine Möglichkeit genannt wie man da mit großen Spieleranzahlen hantieren kann.

    Mach doch einfach mal ein Diagramm wie du dir soein P2P Netzwerk vorstellst, schreib mal Zahlen dran und dann schaun wir mal...
    (Wichtig: Wie Clients untereinander, wie Knoten untereinander, wieviele je Untergruppe...ect).



  • @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:

    1. 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?

    2. 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...


Anmelden zum Antworten