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

41

03.03.2012, 13:56

Zitat

1. Spieler loggt sich ins Spiel ein.
2. Spielserver kennt die letzte Position des Spielers und fragt welche zone einen punkt beinhaltet der die Koordinaten x, y und z hat.

Bei SecondLife können sich glaube ich so ca. 20 Personen auf einem Fleck aufhalten. Blöde sind die auch nicht, also sagen wir mal du kommst auf 30-35 Personen für eine Zone.
Wenn du eine After-Work-Party hast, wird deine Zone sich auf eine Fläche von weniger als 30x30 Metern bewegen :)
=> Wenn das mitten in einer ich sag mal "Innenstadt" ist, werden ziemlich häufig viele Leute diese Zone durchqueren - und damit a) das Limit sprengen aber vor allem b) die Zone wechseln.

=> Punkt 2 wird mehrmals während des Spiels ausgeführt.
Speziell in irgendwelchen Spielen mit Allianzen, Gilden etc. wird es häufig vorkommen, dass eine Gruppe von Leuten sich relativ schnell über Zonengrenzen hinwegbewegt - und dann gerne im Kampf auch mal immer wieder hin und zurück.
Deswegen macht es vllt. auch durchaus Sinn, wenn sich Zonen überlappen könnten.

Obige Ausführungen laufen wie gesagt unter "Extreme Zustände" :)

Zitat


Und da die Zonen immer Rechtwinklig sind wird das ganze noch deutlich vereinfacht.

Eigentlich nicht. Wie oben schon gefragt: Hast du dir schon nähere Gedanken dazu gemacht, _wie_ genau eine Zone wächst bzw. schrumpft und wie die Umgebung das ausgleichen will? Speziell: solche Zonen sollen über Monate laufen, nicht über Stunden. Sprich die Verformungen werden ziemlich ... obskur, wenn du nichts dagegen unternimmst.
=> überlappende Kugeln/Kreise sind einfacher zu berechnen und haben kein Problem mit Verformungen über die Zeit

Zitat

Wieviel Rechenzeit das allerdings braucht weiß ich nicht aber sicher muss die aktualisierung je nach Systemauslastung geschehen.

Vermutlich wirst du dafür letztlich einen eigenen Prozess abstellen, vllt. auch auf einem extra System. Schließlich soll das ja unabhängig von den Zonenauslastungen ständig laufen und der weiß am besten, wohin man die allgemein verschieben muss, damits im globalen System besser wird.
Aber ich gebe dir Recht: Objekte bei obskuren Formen zu verschieben und dann noch die Umgebung anzupassen wird sicher ... lustig :P


@3: Ich glaube mir is noch nicht ganz klar, welche Aufgabe du den Zonen genau überträgst. Bisher hatte ich die Vorstellung, die würden _alles_ in ihrem Bereich verwalten? (alle Objekte und deren Handlungen bzw. Veränderungen)


@Chromanoid:
Ehrlich gesagt habe ich dein Beispiel mit dem Hotspot nicht ganz verstanden :X
Der Radius einer Instanz wird mit anwachsender Nutzerzahl in der Nähe implizit kleiner, da mit wachsender Nutzerzahl mehr andere Instanzen näher an die Instanz rücken und der Radius = 3/4 des Abstandes zur nächsten Instanz ist.

Eigentlich könnten wir für die Diskussion nen neuen Topic aufmachen oder? Ist wohl einer ein Spin-Off ^^


MfG

42

03.03.2012, 18:22

Ich glaube dann habe ich deine Idee noch nicht so richtig verstanden. Ich dachte du würdest fixe Radii einstellen. Unter diesen Umständen hätte ich folgendes Problem gesehen: Stell dir vor du hast einen schönen großen Spielerhaufen. Jetzt willst du die Arbeit schön gleichmäßig auf zwei Server verteilen. Ziel ist nun die Spielergruppe auf zwei Server möglichst optimal aufzuteilen. Das sollte bei deinem Ansatz sowie ich ihn verstanden habe, auch gut funktionieren. Nun stell dir das Problem bei z.B. fünf Servern vor. Könnte es nicht passieren, dass sich die Server dann so wie bei der Augenzahl fünf eines Würfels anordnen? Der Spielerhaufen wäre dann in der Mitte der fünf und vor allem der mittlere Server würde die meiste Arbeit abbekommen. So hab ich mir das jetzt jedenfalls bildlich vorgestellt.

Hier mal ein interessantes Video zum Zoning von BigWorld:

Pecadis

Frischling

  • »Pecadis« ist der Autor dieses Themas

Beiträge: 29

Wohnort: München

Beruf: Fachinformatiker für Systemintegration

  • Private Nachricht senden

43

04.03.2012, 01:02

Also ich finds ehrlich gesagt prima wie sich meine fragen so weit auswirken. An dieser stelle schon mal danke =D.

@dispy nein ich denke das gehört noch zum thema weil es sich ja um Netzwerke und Datenbanken geht sowie um die lastverteilung .. eventuell passe ich die Überschrift noch an.

@Chromaoid Ich stimme dir da zu. Wie weiter vorn schon beschrieben habe ich einfach das mit den überlappenden Zonen (so interpretiere ich mal deine Neutrale Zone) ausgelassen. Natürlich braucht man später solche Zonen, da sonst der übergang recht ruppig wäre für den Spieler.
Zu dem Proxy: Ja das hatte ich auch schon so geplant bzw als idee deswegen war vom Spiele>r<-Server die rede und nicht dem Spiele-Server. Grob dargestellt ist die Kommunikationskette in etwa:

Client-> Spielerserver (kann mehrere Clients verwalten) -> Zonen -> Datenbanken

Zitat

@3: Ich glaube mir is noch nicht ganz klar, welche Aufgabe du den Zonen
genau überträgst. Bisher hatte ich die Vorstellung, die würden _alles_
in ihrem Bereich verwalten? (alle Objekte und deren Handlungen bzw.
Veränderungen)
Je länger ich nun über das Problem nachdenke desto klarer wird mir dass es unsinnig wäre eine Zone alles in sich zu Verwalten. Es werden einfach zu viele Objekte. Ursprünglich hatte ich mir das so gedacht dass eine Zone alles in sich Verwaltet. Je näher ich mir alles überlege desto unsinniger wird es die Objekte (wo viele Statisch sein werden) immer zwischen den Zonen herumzuschieben.

Höchstwahrscheinlich müssen dann einzelne spezialisierte Zonen bestehen (ähnlich wie bei eve-online) die für ihre Zwecke taugen. Ich habe mal ausgerechnet was im Worst-Case fall an Objekte entstehen würden (ohne Spieler).. die zahl beläuft sich auf etwa 1,6 Milliarden Objekte, wobei der Löwenanteil (etwa 1,3 Milliarden) vom Spieler her kommen kann, ch glaube aber dass der großteil dieser objete anders gelöst werden kann.. also werden "nur noch" mindestens 300 Millionen Objekte Verwaltet werden müssen.(wenn ihr meine Mindmap mit meinen derzeit gesammelten ideen sehen wollt schickt mir bitte ne pn)

Also müsste man theoretisch mehrere Zonen-Ebenen erstellen die für diverse aufgaben Spezialisiert sind z.b. Zone 1 kümmert sich um den Markt (wie schon mal erwähnt) Zone 2 dass Mobs gespawnt werden und rumlaufen Zone 3 um Planeten usw. Aber selbst wenn die Zonen sich so weit in den Aufgaben aufeilen kann es dennoch passieren dass Zonen überlasten ... Also ich denke dass diese idee mir den sich ändernden zonen doch wohl keine gute idee ist sondern dass man das objektgebunden machen müsste. Also quasi dass die "Map" allen bekannt ist und nur noch die Objekte mitgeteilt werden müssten. So käme es dann das die Lastverteilung einfacher geht und man nicht groß überlegen muss was wohin und wie weit usw. muss. Also wäre die Konkrete aufgabe der server nur die jeweiligen positionen der Objekte mitzuteilen und deren Verhalten zu Steuern. Die Karte selber muss ja nicht simuliert o.ä. werden. Nun ich mir ein (meiner ansicht nach) genialer einfall gekommen der die last optimal verteilen sollte.

Also alle Objekte sind auf eigenen Servern und werden da verwaltet.
Von jedem Objekt gibt es einen Punkt den der Server kennt.
Nun gibt man jedem Server eine Minnimal-Größe ein also quasi einen Minnimum-bereich wie klein er maximal sein darf und jeder server hat in einer Matix die unverrückbar ist seinen platz.
Jetzt muss der Server nur noch die objekte makieren die signifikant außerhalb seines bereiches liegt.
Jetzt sucht der Server zu jedem dieser Objekte einen passenden Server indem er in der Umgebung des Objektes Fragt "wer hat denn noch Kapazität frei?" Wenn sich in der nähe (muss nicht direkt ein Server sein der wirklich diese Position hat) ein server findet dann wird das objekt transferiert wenn keine Kapazitäten frei sind dann behält er sie und verwaltet sie weiter.

Konkret an einem Beispiel:
1. Spieler meldet sich an
2. Spieler wird einem beliebigen freien Server zugewiesen
3. Server optimiert daraufhin seine position in der map wenn möglich.

Der Vorteil meiner ansicht nach ist dass dann bei abfragen des Spielers "wer ist in meiner nähe?" nicht alle server befragt werden müssen sonder nur die Server deren Bereich der entferntesten objekte auch in den bereich des suchbereiches des spielers treten. Auch hat dass dann den weiteren vorteil dass keine übermäßigen zonenwechsel stattfinden müssen da jeder server ja nur seine schäfchen verwalten muss. Im fall von großen ansammlungen in einem Bereich sind auch alle server gleich belastet.

Ich denke das wäre so die beste möglichkeit um viele Spieler und objekte zu verwalten, da es nun nicht direkt auf die position des Spielers ankommt und Zonenwechsel nur durchgeführt werden wenn es optimal erscheint.

Was denkt ihr so darüber? Wo könnten da schwachstellen entstehen bzw wo seht ihr schwachstellen?

Mfg
Pecadis

(ich hab den text jetzt glaub ich in 5 stunden geschrieben :D)

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Pecadis« (05.03.2012, 21:10)


ArthurII

Treue Seele

Beiträge: 132

Wohnort: Aachen

Beruf: Student

  • Private Nachricht senden

44

06.03.2012, 20:57

also ich habe mal ein paar Monate als Dev bei einem WoW-Privatserver-Projekt mitgewirkt. Da gibt es quasi eine große Reverse-Engineerte Server-Software die alle verwenden. Und ich kann euch sagen, dass das auf MySql aufsetzte.
Ich weiß natürlich nicht wie sich das jetzt in Bezug auf 20.000 Nutzer skaliert, da selbst auf den großen Freien vll. so maximal 1000-1500 Leute unterwegs waren.
Ich bin nicht verrückt - nur verhaltensoriginell!
Project-Seite: Aura

Pecadis

Frischling

  • »Pecadis« ist der Autor dieses Themas

Beiträge: 29

Wohnort: München

Beruf: Fachinformatiker für Systemintegration

  • Private Nachricht senden

45

06.03.2012, 21:14

Hallo ArthurII

Ich habe im Internet auch mal herumgeschaut wieviele personen maximal auf einen offiziellen WOW server gleichzeitig drauf passen aber genaue Zahlen gibt es leider nicht. Das höchste was da stand war 50000 über einen Monat .. aber da steht nicht dabei wie es verteilt ist usw.

Kannst du mir sagen ob der Privatserver nur ein einzelnes Gebilde war oder ein verbund aus mehreren Rechnern?

Mfg
Pecadis

46

06.03.2012, 21:22

@ArthurII & Pecadis: Könntest ihr mir dazu die Quellen nennen? Soweit ich mich erinnere sind auf einem Shard in WoW max. vielleicht ca. 5000 (drei Nullen nicht vier) online. Ich habe eben auch mal recherchiert und kaum Informationen über PCUs bei privaten Servern gefunden. Ich denke 1500 User sind eher die Anzahl der registrierten aktiven Benutzer und nicht der gleichzeitig online spielenden Benutzer, aber da lasse ich mich natürlich auch gerne eines besseren belehren. Eve Online und Second Life haben laut http://mmodata.blogspot.com/ die größten Welten mit den meisten Spielern die gleichzeitig online sind.

Für WoW scheint mir diese Seite recht interessant: http://www.warcraftrealms.com/activity.php
Das sind vielleicht so um die 1500 Spieler die so in der Regel pro Realm online sind. Ich bezweifel stark das private Server viel mehr als 100 Spieler gleichzeitig schaffen.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Chromanoid« (06.03.2012, 21:29)


Pecadis

Frischling

  • »Pecadis« ist der Autor dieses Themas

Beiträge: 29

Wohnort: München

Beruf: Fachinformatiker für Systemintegration

  • Private Nachricht senden

47

06.03.2012, 21:29

http://www.warcraftrealms.com/eu_realmstats.php?sort=Total

Da habe ich die Zahl gefunden. Wie gesagt da steht nur die anzahl an leuten über level 10 in den letzten 30 Tagen gesehen wurde.

48

06.03.2012, 21:35

Naja innerhalb der letzten 30 Tage ist natürlich was ganz anderes als die Anzahl der Nutzer, die gleichzeitig online sind. "über einen Monat" hatte ich natürlich völlig überlesen :whistling: :)
Wenn man sich http://www.warcraftrealms.com/activity.php?serverid=671 anschaut dann kommt tatsächlich auf einen PCU von ca. 5000.
Auch ganz interessant: http://www.videogamer.com/pc/wow/news/wo…_cpu_cores.html "WoW servers use 75,000 cpu cores [...] 13,250 server blades and 112.5 terabytes of RAM [...] 11.5 million subscribers"

WoW West insgesamt hatte wohl 2009 einen PCU von ca. 1 Mio. Wenn man das jetzt durch die Realmanzahl (ca. 250) teilt kommt man auf 4000 aktiver Nutzer pro Realm.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Chromanoid« (06.03.2012, 21:47)


Pecadis

Frischling

  • »Pecadis« ist der Autor dieses Themas

Beiträge: 29

Wohnort: München

Beruf: Fachinformatiker für Systemintegration

  • Private Nachricht senden

49

06.03.2012, 21:52

hm ich denke das dürfte auch so grob der Schnitt sein. Aber es sind eben ca. 250 Server auf die sich die Spieler verteilen. Ich denk wenn mein Spiel dann tatsächlich 1 Mio Spieler gleichzeitig online sein werden dann habe ich ganz andere Probleme. Und da zeigt sich dann auch erst wie Leistungsstark die Software geschrieben wurde.. und deswegen mach ich mir jetzt auch schon gedanken drum ^^.

ArthurII

Treue Seele

Beiträge: 132

Wohnort: Aachen

Beruf: Student

  • Private Nachricht senden

50

06.03.2012, 21:53

Also ich habe gerade selber versucht meine Zahl zu untermauern, geht aber leider nicht, da der damalige Server inzwischen mit einem anderen Fusioniert ist und sich alles optisch geändert hat.
Wir hatten damals immer so einen Zähler, und der hat im Schnitt zu den Stoßzeiten bei um die 500-700 gestanden und wir waren eher ein mittel großer Server weil halt Deutschsprachig.

Und es war soweit ich mich erinnere ein einzelner Rechner.
Der Root-Server hat immer so etwa 100 € gekostet

Bei Blizzard haben die das aber definitiv auf einem verteilten System. Also da rechnen (laut damaliger Mundpropagnada zwischen den Spielern im TS usw) 5 Rechner einen Realm mit so im Schnitt ca. 3500 Spielern gleichzeitig online.
Über die 3500 Leute waren sich aber alle einig.

Der Code für die Privat-Server ist übrigens offen. Hab da damals mal ein bisschen durchgeguckt und gerade das Boss- und KI-System war schon interessant implementiert: Es war alles in C++ und nicht in irgend einer Script-Sprache wie ich zumindest naiv vermutet hätte. Das war im Grunde auch genau der Part an dem ich mitgearbeitet habe, also Boss-KI nach programmieren.

Hier die Projektseite MaNGOS
hier gibts die Sourcen vom dem Server: Git -> MaNGOS
Ich bin nicht verrückt - nur verhaltensoriginell!
Project-Seite: Aura

Werbeanzeige