Serverkapazität?
-
Hi,
hier das Szenario:
Landschaft kann große Stadt sein, kann jedoch aber auch nen kleines Dorf sein.
Wie schwer ist es, ziemlich viele Menschen sich darauf im Multiplayer befinden zu lassen (vom technischen aspekt her) ??Sprich man lässt jetzt gaannzz viele leute auf der map rumlaufen..
(das spiel wäre jedoch kein ego shooter im normalen sinne)Vielen Dank
-
Es kommt IMHO eigentlich nur darauf an wieviele Daten du synchroniseren musst und was dein Server damit macht.
Wenn du bloß Position und Ausrichtung der Personen vermitteln musst und sinnvolleweise UDP benutzt und sonst nichts kannst du wahrscheinlich tausende rumlaufen lassen.
Soviel die Server-Netzanbindung und -Leistung eben hergibt.
-
Ok,
also es passieren auch noch andere ding in dieser welt!
das heisst es kann zum beispiel ein neues objekt erschaffen werden.
solche ding müssen auch gesynct werden.
-
für sowas wie objekt erschafung, chat usw. nimmt man dann meißt tcp als sekundärkanal.
aber an sich ist bei massenansammlungen meißt die leitung der limitierende faktor. die breit die sein mußt, kannst du leicht ausrechnen.
syncaufwand=anzahl_spieler*anzahl_vom_spieler_gesehene_spieler*bytes_per_sichtbaren_user
bzw
du hast 2000 leute auf dem server
jeder hat ca 200 in der sichtbaren umgebung
position,richtung,geschwindigkeit bekommst du auf 8byte2000*200*8
wären ca 25mbit
nun überlegst du dir wie oft ein sync benötigt wird, bei shootern könnte ich mit 6/sekunde leben, bei rpg vielleicht 1/sek und bei nem 3dchat vielleicht 0.2/sek
und syncaufwand*sync_pro_sek ist dann die bandbreite, bei dem shooter also ca 150mbit effektive leistung.
natürlich gibt es dann noch genre bezogene spezialitäten, bei rpgs z.b. dass spieler sich setzen können und so ihre position bei anderen spielern nicht aktualisiert wird. so könntest du dann ne million sitzender leute realisieren
rapso->greets();
-
ok,
also ego shooter hab ich deshalb eingegrenz, da man in meinem szenario zwar auch leut übern haufen schiessen kann, das aber nicht primär aufgabe bzw. gang und gebe ist.Aber euren Aussagen entnehm ich, das das Handling der Userzahl an und für sich erst mal nur von der Bandbreite bestimmt wird richtig?
-
das kommt zwar drauf an, was du noch an berechnungen durchführen möchtest, aber an und für sich ist die bandbreite meistens das größte problem zumal du die restlichen dinge oft auf die clients verlagern kannst. (z.b. collisiontests)
rapso->greets();
-
Alles klar sehr gut,
ja das hatte mich mir auch schon gedacht, vieles kann auf den client ausgelagert werden.tag/nacht zyklus (einmal bei connect zeit holen) resetliche berechnung vom client etc.
Wie löst man denn so eine massive anzahl an spielern am besten?
ich meine, ich nehme noch mal das bespiel der stadt.ich brauch doch nun wirklich nur wissen was in einem umkreis von mir passiert oder?
Es muss doch dann immer nur Daten für einen Radius übermittel werden!?
Man braucht ja nicht wissen was am anderen Ende der Stadt abgeht...seh ich das richtig? Oder müssen trotzdem diese punkte übermittelt werden? eigentlich doch nicht..
-
ja, natürlich, nur daten die ein client bemerkt sollten übertragen werden, rest darf void sein.
radius ist dabei eine möglichkeit, man kann auch gebiete in zellen aufteilen und nur objekte innerhalb sichtbarer zellen werden geupdated (portalculling), je nachdem was man macht, kann mal der eine, mal der andere algorithmus für weniger traffic sorgen.
rapso->greets();
-
Wobei das wohl ein großer Spagat ist was man vom Server und was vom Client berechnen lassen kann. Ich denk da an die lieben Cheater etc.
Hol ich mir z.B. einmal die Zeit beim start vom Server, könnte ich beim Client einen "immer-tag-cheat" einbauen. Wenn jetzt die Tageszeit Auswirkung auf die Sichtweite z.B. hat, wäre dass dann schon nicht mehr so fein.
-
eigentlich sind die meißten multiplayer spiele deswegen verschlüsselt, dürfte nicht so einfach werden da was zu taggen oder so.
rapso->greets();
-
In den aktuellen Game Programming Gems (4) is'n Artikel über Skalierung von Servern mit riesigen Playeranzahlen.
-
und deshalb könnte man ja immer gewisse sachen auch zwischendurch mal nachladen. (sprich kontrolle ob die werte stimmen)
Das cheaten dürfte in meinem Szenraio das kleinste problem sein, da die wichtigsten sachen dann eh auf dem server liegen würden..