MMORPG ohne großen Server?



  • .... schrieb:

    Ich bin kein großer Fachmann, aber ich würde sagen, dass die nur sehr begrenzt möglich sein, da dann ja jeder Pc 1000 eingehende Connections hätte und auch gleichzeitig zu 1000 anderen verbunden wär.

    Es muss ja nicht jeder Client mit allen Clients verbunden sein

    .... schrieb:

    Und das mit dem cheaten. Jeder hätte seinen Character auf der eigenen Festplatte gespeichert. Diesen zu modifizieren wäre nur eine Frage der Zeit.

    Kannst den Character ja auf mehreren anderen Clients speichern oder mit starker Kryptographie schützen.



  • Ich weiß ja nicht, da wäre es doch wesentlich einfacher nen Server zu erstelllen.



  • .... schrieb:

    Ich weiß ja nicht, da wäre es doch wesentlich einfacher nen Server zu erstelllen.

    Ob du jetzt einen Server ständig laufen lässt und da noch eine extra Software für programmierst, oder die Verwaltung komplett in das Programm integrierst ... Ich denke fast, da währe letzteres noch einfacher.



  • Ein Server muss aufjedenfall her, woher sollen die Clients den wissen, wo sich die anderen Clients befinden?
    Außerdem schluckt sowas bei großen Games dann unnötig viele Ressourcen. Ein Freund hatte mal einen Ragnarock-Server(oda wie des heißt) laufen, der hat dann >1,5 GB Ram geschluckt. Bei nur einem Client müsste das doch dann theoretisch alles beim Client laufen, da würden ne menge nicht mitspielen können.
    Würde das nicht auch noch irgentwie unmengen lags verursachen?



  • Man sollte wenigstes irgendwo ne Datenbank im Netz haben wo das wesenlichste gespeichert wird, wie z.B. Charactere



  • Und wenn die Character bei mehreren gespeichert sind und die dann zufällig net on sind, kann man dann net spielen??



  • Jay schrieb:

    Ein Server muss aufjedenfall her, woher sollen die Clients den wissen, wo sich die anderen Clients befinden?

    naja, eine dezentrale verzeichnisstruktur mit einem minimalserver (der nur fleißig adressen merkt und verteilt) auf www.das-spiel-mit-ohne-server.net sollte reichen.

    ich find' die idee von einem dezentralen mmorpg übrigens extrem cool 🕶. will das nicht einer von euch c0d0rn mal schnell implementieren? :xmas1:

    die charaktere und anderen daten sollten aber tatsächlich irgendwie zentral als hash gesichert werden, wenn man keine unannähmlichkeiten haben will. es ist auch vermutlich nicht so einfach, das ganze stabil zu machen so dass wenn ein rechner abschmiert, der gerade server war, nicht alles zusammenbricht.



  • ... schrieb:

    Und wenn die Character bei mehreren gespeichert sind und die dann zufällig net on sind, kann man dann net spielen??

    Man muss halt für eine hohe Redundanz sorgen 🙂



  • rüdiger schrieb:

    ... schrieb:

    Und wenn die Character bei mehreren gespeichert sind und die dann zufällig net on sind, kann man dann net spielen??

    Man muss halt für eine hohe Redundanz sorgen 🙂

    hmm, heißt also jeder bekommt eine andere Software? Wie soll dann so ein Spiel gestartet werden, wenn der 1. Client nur einen Teil des gesamten Spiels hat? Ich denke, jeder sollte, wenn man schon so ein Spiel macht, eine Kopie der gesamten Software bekommen. Oder man richtet "Master-Clients" ein, die dann die gesamte Kopie haben und auch darüber Updates gezogen werden, wo wir dann wieder bei den Servern wären 😛
    Wenn jeder nur einen Teil des Programms bekommt, dann muss ja auch irgentwo ein Count mit der häufigkeit des Vorkommens verschiedener Pakete laufen, damit nich jeder z.B. das "Programm 1" hat. Über diesen Counter werden dann über den Downloadserver(^^) die verschiedenen Teile des Spiels verteilt.
    Achja der Counter muss ja auch auf einem Server laufen (:



  • Jay schrieb:

    rüdiger schrieb:

    ... schrieb:

    Und wenn die Character bei mehreren gespeichert sind und die dann zufällig net on sind, kann man dann net spielen??

    Man muss halt für eine hohe Redundanz sorgen 🙂

    hmm, heißt also jeder bekommt eine andere Software? Wie soll dann so ein Spiel gestartet werden, wenn der 1. Client nur einen Teil des gesamten Spiels hat? Ich denke, jeder sollte, wenn man schon so ein Spiel macht, eine Kopie der gesamten Software bekommen. Oder man richtet "Master-Clients" ein, die dann die gesamte Kopie haben und auch darüber Updates gezogen werden, wo wir dann wieder bei den Servern wären 😛
    Wenn jeder nur einen Teil des Programms bekommt, dann muss ja auch irgentwo ein Count mit der häufigkeit des Vorkommens verschiedener Pakete laufen, damit nich jeder z.B. das "Programm 1" hat. Über diesen Counter werden dann über den Downloadserver(^^) die verschiedenen Teile des Spiels verteilt.
    Achja der Counter muss ja auch auf einem Server laufen (:

    Geht ja um die Daten einzelner MMORPG-Mitglieder, also nicht um konkrete Spiele-Daten.

    Aber vermutlich wäre es besser die Daten über Kryptographie abzusichern, als über die Verteilung.



  • @Jay
    naja, "ohne server" heißt ja vermutlich, dass das spiel komplett auf den clients berechnet wird. die notwendigkeit eines zentralen ip-verteilers/verwalters haben wir vorhin schon festgestellt, und um den kommt man auch nicht umhin, wenn man z.b. eine einheitliche mmorpg-welt haben will. es ist aber in dem sinne kein server, da das spiel an sich nicht drauf läuft.
    und es wäre wohl sinnvoller, jedem client dieselbe software zu geben. durch eine ausgeklügelte verwaltungstechnik sollte es nun möglich sein (oder auch nicht...) dass sich die clients untereinander einigen, wer für welchen (geographischen) bereich zuständig ist: wenn sich dort mehrere spieler aufhalten, dann verwaltet der entsprechende die kommunikation/synchronität etc. wenn sich viele spieler anhäufen, müsste man natürlich irgendwie lastaufteilung machen, was sicher nicht so einfach ist.
    man könnte natürlich auch ein komplett dezentrales netz machen, wo jeder client auch ein server ist, seine eigenen (zufällig generierten oder benutzererstellten) levels anbietet, die aber mit anderen levels anderer benutzer verbunden sind. das bringt natürlich ziemliche probleme mit sich (was passiert z.b., wenn einer den netzstecker zieht? gibt's dann das level nicht mehr? -> unpraktisch. sicherheitsrisiken wären dann auch noch.)



  • ... schrieb:

    Und wenn die Character bei mehreren gespeichert sind und die dann zufällig net on sind, kann man dann net spielen??

    Ich würde den Character bei dem entsprechendem Client und bei ein paar anderen die per Zufall bestimmt werden speichern. Ist also immer wenigstens eine Version vorhanden und fals eine weitere Vorhanden ist kann man ja vergleichen um Cheater zu finden. Ist nicht sicher, dass immer jeder gefunden wird, doch die Wahrscheinlichkeit sollte hoch sein.

    Ich würd die Computer in einem Ring verbinden. Dann müsst der Client der dem Ring beitreten will nur eine Hash vom Character rund zu schicken. Jeder Client im Ring stimmt dann entweder für den Beitritt, dagen oder enthält sich. Fals es mehr dafür oder gleich viele wie dagenen dann darf der Client der Rund beitreten.

    Somit würde man auch dem Problem aus dem Weg gehen, dass ein Client einen anderen blockiert dadurch, dass er absichtlich fälschlich einen Character als falsch erkennt.

    Periodisch und beim Logout würde dann der neue Hash rund geschickt. Die anderen Clients löschen den alten Hash und bestimmen per Zufall ob der neue gepeichert wird oder nicht.

    Gegen Absturz sind solche Ringe jedoch nicht stabil. Vielleicht bei jedem Client die Ips der paar nächsten Clients speichern.

    Viel mehr als Pokermultiplayer kann ich mir auf diese Weise aber aus Bandwidthgründen nicht vorstellen. Nicht rundenbasiert wird meiner Meinung nach nicht gehen. Ein sehr einfaches RPG wäre vielleicht auch noch drin.



  • Damit dieses Zufallsprinzip aufgeht benötigt man doch von Anfang an eine große Anzahl an Spielern, oder Spieler die immer eingeloggt sind, sonst könnte es ja passieren, dass man sich einloggen will und keiner den Spieler kennt, da alle die den Spieler kennen offline sind.
    Würde die Spielerdaten Zentral verwalten, da ein zentraler Ansprechpunkt sowieso da sein muss und die Last dafür wäre auch nichts im Vergleich zu einem richtigen Server in einem c/s System.

    Halte das ganze aber trotzdem für unrealistisch mit der derzeitigen Bandbreite.



  • @Larko:
    Wieso stellst du die Frage eigentlich - bloss interesse, oder willst du sowas programmieren, und hast keinen geeigneten Server dafür? IMHO ist ein zentraler Server die einzig brauchbare Möglichkeit. Was der dann alles übernimmt ist eine andere Sache. Also ob der z.B. auch die ganze Auswertung übernimmt, also berechnet wer wieviel Damage nimmt etc. - das muss z.B. nicht sein.

    Es hat auf jeden Fall viele Vorteile wenn es einen Rechner gibt der im Prinzip "alles weiss", also weiss welche Spieler sich z.B. so nahe sind dass sie ich sehen müssen etc.

    Ich kann und will nicht behaupten beweisen zu können dass es ohne Server nicht geht, aber ich stelle es mir verflixt kompliziert vor. Vor allem dass dann auch noch alles deterministisch und mit halbwegs annehmbaren Latenzzeiten über die Bühne geht.

    ----

    Wenn du sowas selbst programmieren willst, und keinen Server hast der mehr als 10 oder 20 Spieler verdauen kann, würde ich trotzdem vorschlagen fang einfach an, und zwar MIT Server, denn so schnell wirst du nicht in die Verlegenheit kommen mehr als ein paar Spieler supporten zu müssen. Und mit ein wenig Geschick lässt sich normalerweise irgendwo was anmieten, das Geld kannst du ja ggf. über die Spieler organisieren.



  • Jay schrieb:

    Ein Server muss aufjedenfall her, woher sollen die Clients den wissen, wo sich die anderen Clients befinden?

    muss nicht sein. Napster verwendete auch keine Server, und funktionierte trotzdem (und man konnte trotzdem mit anderen Clients Daten austauschen)

    Außerdem schluckt sowas bei großen Games dann unnötig viele Ressourcen. Ein Freund hatte mal einen Ragnarock-Server(oda wie des heißt) laufen, der hat dann >1,5 GB Ram geschluckt. Bei nur einem Client müsste das doch dann theoretisch alles beim Client laufen, da würden ne menge nicht mitspielen können.

    Na ja.... wenn 1 Server 100 oder mehr Leute bedient, muss der schon was leisten. Wenn du allerdings auf jedem Client was machst, dann muss jeder einzelne Client viel weniger tun, und braucht damit wesentlich weniger Power. Im Prinzip wuerds ja ausreichen, wenn jeder Client 1 anderen bedient. Dann hat jeder Client einen anderen, der ihn bediehnt.
    Man kann auch soweit gehen, dass jeder Client 2 andere Leute bediehnt. Das sollte die Rechner auch nicht in die Knie zwingen, die Bandbreite sollte auch noch kein Thema sein und man hat Redundanzen (jeder wird von 2 Clients bedient). Wie so ein Protokoll konkret ausschauen soll, darueber kann sich wer anderes gedanken machen 😉



  • Beim Filesharing hast du den Riesenvorteil zeitlich ziemlich ungebunden zu sein.
    Klar will man möglichst schnell fertig werden, aber wenn es ne Stunde mehr dauert isses auch fast egal.
    Bei einem Spiel oder etwa einer Webseite ist dies nicht der Fall, deswegen setzt sich freenet usw (für legale Inhalte 😉 )auch nicht so richtig durch.

    Wobei dem, der ein ein p2p mmorpg erschafft, sicher einiges an Ruhm und Geld gewiss ist.
    Das man es gegen Cheater absichern kann zeigt ja auch etwa freenet wieder, aber man muss einfach sagen, die Internetverbindungen sind schon für das normale Browsen zu langsam(juhu, ich bin nach 5 Minuten fertig udn kann die Webseite ansehen), für mmorpgs wird es noch viel viel krasser, also wird das wohl noch ein paar Jahre dauern.

    Und für jeden der es hinbekommt ein mmorpg zu erschaffen ist ein Server das geringste Problem, besonders bei heutigen Serverpreisen.

    Was halt geht ist das Spiel über Instanzen etc laufen zu lassen, also fünf Spieler treffen sich in einer Stadt die auf einem zentralen Server liegt und ziehen dann los um in einem Level zu kämpfen, wo ausser ihnen niemand ist.
    Inventar usw dann noch über Server verwalten, Rest übernehmen die Clients.
    So reicht dann ein Bruchteil der Serverleistung und die Spieler sind immer noch an dich gebunden und müssen zahlen.



  • folgender fall:

    jemand cheatet sich auf seinem rechner einen char zusammen und "überzeugt" seinen client, dass dieser char legal wäre. dabei hält er sich an gültige regeln. er simuliert also beispielsweise ein spieldauer von 30 tagen und setzt den charakter auf einen bestimmten level.

    jetzt verbindet er sich mit anderen rechnern und diese bekommen die info über den charakter verwendet. sie kennen ihn nicht und wollen deshalb überprüfen, ob es sich um einen legalen char handelt. logischerweise wird kein anderer "server" diesen charakter kennen, ausser dem server des cheaters.

    wie soll mit so einem charakter nun verfahren werden? mir fällt keine methode ein, wie ohne dedizierte server, die immer verfügbar sind, eine solche überprüfung sicher gemacht werden könnte.



  • Die Frage war ja "ohne großen Server"

    Ein par Daten wie eben die Charaktere können dann ja abgespeichert werden. Das Spiel soll halt einfach auf den Clients und nicht auf dem Server selbst laufen.



  • Mal was anderes. Ich spiele ganz normal ohne cheaten. Mein Charakter ist auf meinem und weiteren 4 Rechnern drauf. Zur Zeit sind aber nur 2 der weiteren Rechner Online. Jetzt zocke ich, mein Charakter verbessert sich bekommt neue Gegenstände, was weiß ich. Am nächsten Tag gehe ich wieder online und will spielen. Diesmal sind aber die beiden anderen Rechner online, die wärend meiner letzten Onlinerunde offline waren. Was passiert?



  • Helium schrieb:

    Mal was anderes. Ich spiele ganz normal ohne cheaten. Mein Charakter ist auf meinem und weiteren 4 Rechnern drauf. Zur Zeit sind aber nur 2 der weiteren Rechner Online. Jetzt zocke ich, mein Charakter verbessert sich bekommt neue Gegenstände, was weiß ich. Am nächsten Tag gehe ich wieder online und will spielen. Diesmal sind aber die beiden anderen Rechner online, die wärend meiner letzten Onlinerunde offline waren. Was passiert?

    Alle Clients müssen ihre Chars untereinander Synchronisieren. Müsste sowieso passieren, damit z.B. die gleiche Quest nicht 2x erfüllt wird. D.h. sobald ein neuer Client connected, erhält er ein Update mit allen Informationen. Solange die Userbase nicht riesig ist, sollte so ein Update im 1 - 10 MByte Bereich liegen, was noch akzeptabel ist. Sonst müsste man halt ein "Supernode"-Konzept einführen oder so.

    Damit ist auch thordk's Problem gelöst.


Anmelden zum Antworten