Online...

      weiss hier jemand eigentlich, warum genau man fürs onlinespielen unbedingt breitband brauchen soll?
      geschickt programmiert reicht imho eine analogverbindung nämlich locker.
      nehmen wir mal als beispiel ein einfaches (leider imaginäres) onlinespiel - zwei konsolen spielen online perfect dark:
      zu beginn muss ein startwert übertragen werden, damit der zufallsgenerator auf beiden konsolen synchronisiert wird. also folge davon kann jede konsole die ki und andere ereignisse für sich selbst berechnen, da das resultat dann auf beiden gleich sein wird (ki ist bekanntlich auch nur eine anwendung des zufallsgenerators). es muss also nur noch übertragen werden, was die spieler gerade drücken.
      pro kontroller reichen da 3 byte aus (1 byte zeigt die position des analogsticks - 8 abstufungen in alle richtungen sollte reichen; 2 bytes zeigen zusammen den status aller knöpfe (bis auf L, das bei pd bekanntlich mit R gleichzusetzen ist)
      das ganze mal 3, da drei kontrollerports abgefragt werden müssen (maximal, da pd nur bis zu vier spieler unterstützt - wären es also vier ports so hätte die andere konsole gar nix mehr hier zu suchen).
      also 9 byte pro abrage. nehmen wir die utopische framerate von 50 fps. öfters als einmal pro frame diese abfrage zu machen lohnt sich nicht. also 50 mal pro sekunde 9 byte senden und und 9 byte empfangen.
      benötigt wird also ein konstanter upstream von 450 bytes (minimal 150 bytes - wenn nur ein kontroller abgefragt werden muss) sowie denselben downstream. verdoppeln wir das vorsichtshalber noch, um einen konstanten datenfluss zu gewährleisten: 900 B/s downstream und 900 B/s upstream im maximalfall also (wobei nie downstream und upstream gleichzeitig den maximalwert einnehmen natürlich).
      sollte doch eigentlich locker reichen, sogar mit gprs übers handy

      hab ich da was falsch berechnet oder sind die entwickler einfach zu blöd für sowas?
      Fine, I'll go build my own signature! With blackjack! And hookers!

      Re: Online...

      Ja du hast was vergessen:
      Da immer mal was verloren geht oder so, macht es keinen Sinn einfach nur die Informationen über die gedrückten Buttons zu übertragen, sondern man muss zu jedem Zeitpunkt die Position, die Blickrichtung, und sogar _alle_ Ausbreitungsrichtungen der Geschosse übermittelt werden (ein Vektor im R³ eben), sonst wird das Spiel zu einem einzigen Chaos.
      EDIT: und auch noch die ausgewählte Waffe, ob man sich duckt etc.
      Merkt man, wenn man ne schlechte Verbindung z.B. bei CS hat: Der andere Spieler laggt rum wie blöd, sprcih in der einen Sekunde ist er hier, in der nächsten dort und es gehen auch immer mal wieder ein paar Kugeln "verloren". (könnte btw. auch die Erklärung sein, warum Darksims cheaten)
      Normalerweise reicht ne Analogverbindung zum onlinezocken ja auch. kA, warum das bei der Xbox nicht geht...vielleicht wollte man nicht noch zusätzlich zum Ethernet ein Modem einbauen?
      Perfect Dark forever!!!

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „k7avenger“ ()

      Re: Online...

      <p><blockquote><font size="1" face="Verdana, Arial">Quote:</font><hr>k7avenger schrieb am 01.01.2004 19:09
      zu jedem Zeitpunkt die Position, die Blickrichtung, und sogar _alle_ Ausbreitungsrichtungen der Geschosse übermittelt werden (ein Vektor im R³ eben),
      und auch noch die ausgewählte Waffe, ob man sich duckt etc.<hr></blockquote></p>

      nun, diese informationen sind allerdings alle berechenbar, wenn man den kontrollerstatus kennt. wie gesagt rechnen alle konsolen alles für sich selbst aus - der zufallsgenerator ist ja synchronisiert.
      oder wozu soll konsole a der konsole b sagen, wo jetzt wer steht, wenn konsole b das ja selbst schon weiss?

      (das ist bei cs und konsorten afaik ja nicht der fall)

      benutzt man ein relativ verlustsicheres protokoll zur datenübertragung, steigert sich das ganze vielleicht auf 1-2kb/s.
      Fine, I'll go build my own signature! With blackjack! And hookers!

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SuchtSim“ ()

      Re: Online...

      Nein ich bin mir ganz sicher, dass nicht die Bewegungen sondern die Positionen übertragen werden. Wenn nämlich nur ein einziges mal ein Packet verloren geht, ist der Spieler bis zur nächsten Positionssynchronation an verschiedenen Stellen. Das erinnert mich an das letzte Physikpraktikum, wo anhand von Simulationen ein bißchen Chaostheorie gemacht wird: Zum Schluss landet der eine Spieler nämlich ganz woanders als ihn der andere sieht.
      Perfect Dark forever!!!

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „k7avenger“ ()

      Re: Online...

      ob bei den verwendeten protokollen die positionen oder die bewegungen übertragen werden, weiss ich nicht.

      aber nehmen wir an, der zufallsgenerator ist auf beiden seiten synchron (neuartiges protokoll also), dann müssten doch sämtliche vom computer gesteuerten oder berechneten ereignisse ebenfalls synchron ablaufen. also warum etwas übermitteln, was der andere schon weiss/bzw. selbst herausfinden kann?
      die einzigen variablen bleiben in dem fall nur noch die spielereingaben. und die sind in so wenig bytes zu fassen, dass auch bei einem weitgehen verlustfreien protokoll (wo sichergestellt wird, dass jedes packet auch korrekt ankommt) das ganze sehr gering sein sollte.
      das ganze wäre dann ziemlich direkt vergleichbar mit dem splitscreensystem und langen kontrollerverlängerungskabeln. nur dass im "online-fall" sämtliche berechnungen halt an zwei orten zugleich ausgeführt werden.

      ich verstehe allerdings, dass der preis für eine geringe bandbreite eine absolut stabile verbindung oder zumindest ein ausgeklügeltes übertragungsprotokoll (vielleicht eine weiterentwicklung des schon recht verlustsicheren tcp?) ist. meinst du das?
      Fine, I'll go build my own signature! With blackjack! And hookers!

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SuchtSim“ ()

      Re: Online...

      Es werden die einzelnen Positionen von der Spielfigur, Hitbox, anderen Objekten, usw. übertragen. So kommt es bei z.B. Ego-Shootern bei schlechten Verbindungen öfters mal dazu das die "Headshot"-Hitbox nicht direkt da ist wo sie sein sollte. Man sollte bedenken das Games wie CS,UT und co. sozusagen reine Online-Games sind und rein dafür optimiert wurden (und trotzdem noch nicht "perfekt" ohne Lags).
      Ich würde mich nämlich sehr über ein einigermaßen vernünftiges Online-Racing Game freuen, was nicht in einer Glück und Ruckelorgie endet :rolleyes:.

      www.warppipe.com hat ja schon ähnliches mit MKDD versucht, immerhin läuft es konstant...mit 20fps :rolleyes:.

      Re: Online...

      Naja, man müsste halt einen - zufällig wird ja dann eigentlich nur noch der Anfangswert übermittelt - Generator entwickeln, der ein vorgegebenes Match abliefert, und das ohne auf die Aktionen der menschlichen Mitspieler einzugehen, denn:
      Würde man ein Protokoll entwickeln, wie du es vorschlägst, würde eine Verzögerung wie sie nicht zu vermeiden ist dazu führen, dass die Spiele für die beiden Spieler nicht mehr synchron ablaufen. Man kann ja schließlich nicht ermitteln wie lange es braucht, bis ein Paket vom Mitspieler bis zum Host braucht. Das wiederrum bedeutet, man müsste jedem Paket einen gewissen Zeitpunkt zuordnen, an dem die Bewegung der Spielfigur durchgeführt werden soll. Dazu müsste man die Uhren der beiden Spieler synchronisieren, und jedem Paket die Uhrzeit mitgeben, wann es abgeschickt wurde. Aber das ist, und da wirst du mir zustimmen, ein ziemlicher Blödsinn

      Zumal, und das hast du überhaupt nicht angesprochen, ist die Übertragung der Position der Spieler usw. auch nicht viel größer als deine Variante mit dem "Positionsgradienten" *g*
      Aus meiner (nicht allzulangen Erfahrung mit Onlinespielen) weiß ich aber, dass es eigentlich nie die Bandbreite ist, die beim Online-zocken das Problem macht, sondern immer der Ping. Ein Ping von 100 ms ist schon ne Quälerei. 80 ist auch nciht toll, unter 60 wirds angenehmer.
      Und jetzt - weil ich grad so schön in Schwung bin - rechne ich noch schnell die minimale Übertragungszeit aus, für den Fall, dass die beiden Spieler sich in zwei maximal entfernten Punkten auf der Erdoberfläche befinden, das natürlich mit der maximalen Informationsgeschwindigkeit c: Da die Glasfaserleitung aber wohl nicht mitten durch gehen wird: 67ms
      Schon durch das verfluchte Prinzip der Konstanz der Lichtgeschwindigkeit wird Onlinespielen erschwert
      Perfect Dark forever!!!

      Re: Online...

      <p><blockquote><font size="1" face="Verdana, Arial">Quote:</font><hr>Burning Death schrieb am 01.01.2004 21:35

      Es werden die einzelnen Positionen von der Spielfigur, Hitbox, anderen Objekten, usw. übertragen. So kommt es bei z.B. Ego-Shootern bei schlechten Verbindungen öfters mal dazu das die "Headshot"-Hitbox nicht direkt da ist wo sie sein sollte. Man sollte bedenken das Games wie CS,UT und co. sozusagen reine Online-Games sind und rein dafür optimiert wurden (und trotzdem noch nicht "perfekt" ohne Lags).
      <hr></blockquote></p>
      ja, das ist die bisher angewandte methode. meine idee ist jedoch völlig anders.

      <p><blockquote><font size="1" face="Verdana, Arial">Quote:</font><hr>
      www.warppipe.com hat ja schon ähnliches mit MKDD versucht, immerhin läuft es konstant...mit 20fps :rolleyes:.<hr></blockquote></p>
      auch nicht zu vergleichen. afaik wird hier auch mehr als nur den kontrollerinput übertragen.

      @k7
      jup, das protokoll würde das ganze verlangsamen. hm. bleiben wir mal bei pd. wenn wir die rate von 50 fps auf 25fps herunterschrauben, würde das niemand merken (pd und fps :D)
      also könnte man jedes packet zweimal durchschicken und nach dem zweiten mal entscheidet die empfängerkonsolen, was damit zu tun ist.
      vielleicht zusätzlich alle 3 minuten ein kontrollpacket, bestehend aus einer checksumme, berechnet aus den aktuellen positionen. sollten die nicht synchron sein, schalten beide konsolen auf pause und synchronisieren sich. dann ein "press start to continue" oder sowas.

      ein zufallsgenerator ist nichts anderes als ein algorithmus, der eien ziemlich zufällig wirkende zahlenfolge ausspuckt. zufällig ist sie aber nicht wirklich. das einzige, was hier etwas an zufall beitragen kann, ist der "zufällig" gewählte startwert der folge (in der regel nimmt man hier einen timerwert, z.b. anzahl sekunden seit 1970 oder sowas).
      startet man zwei zufallsgeneratoren (nach demselben algorithmus natürlich) mit demselben startwert, so erhält man genau dieselbe zahlenfolge.
      und die ki ist auch nur eine anwendung des zufallsgenerators: situation analysieren, liste der möglichkeiten berechnen, eine der möglichkeiten per zufall auswählen (wobei die wahrscheinlichkeit auf bestimmte möglichkeiten je nach ki-stärke verlagert wird).
      ein gleicher startwert führt also, von den spielereingaben mal abgesehen, zu einem absolut identischen match.
      (das ist ja auch meine hauptidee, so bleiben für die übertragung nur noch die spielerdaten übrig und die bots/wasauchimmer wird lokal auf jeder konsole direkt berechnet - es kommt eh dasselbe raus auf beiden seiten)

      schafft es jemand, schneller als 25 mal pro sekunde auf einen knopf einzuhämmern? wenn nein sollte diese rate locker reichen.

      das mit dem ping muss ich mir allerdings noch überlegen. hm..
      Fine, I'll go build my own signature! With blackjack! And hookers!

      Re: Online...

      worauf ich im speziellen hinaus wollte, und weshalb deine Idee nicht praktikabel ist:
      Nehmen wir an, wir haben einen dedicated server. Es müssten - damit dein und mein Spiel absolut gleich ablaufen - für jeden von uns die Informationen über die Aktionen des anderen zum gleichen Zeitpunkt vom Server ankommen => Unmöglich. Daher mein utopischer Vorschlag mit der Uhrzeit.
      Perfect Dark forever!!!

      Re: Online...

      Fragt doch am besten Mal die Entwickler spezieller (SNES) Emulatoren, da ist ein Bomberman Online-Match z.B. kein Problem. Und ich denke mal auch nicht das die Entwickler sich Monate lang mit der Onlinefähigkeit des Emulators beschäftigt haben sondern auch eine recht simple Lösung a la Tasteninput gefunden haben. Na ok ist ja auch nur simples 2D...

      Re: Online...

      <p><blockquote><font size="1" face="Verdana, Arial">Quote:</font><hr>k7avenger schrieb am 02.01.2004 11:00

      worauf ich im speziellen hinaus wollte, und weshalb deine Idee nicht praktikabel ist:
      Nehmen wir an, wir haben einen dedicated server. Es müssten - damit dein und mein Spiel absolut gleich ablaufen - für jeden von uns die Informationen über die Aktionen des anderen zum gleichen Zeitpunkt vom Server ankommen => Unmöglich. Daher mein utopischer Vorschlag mit der Uhrzeit.
      <hr></blockquote></p>
      wozu ein server?
      wir sprechen immer noch von einem simplen onlinespiel zwischen zwei konsolen. direktverbindung?
      Fine, I'll go build my own signature! With blackjack! And hookers!

      Re: Online...

      Ok, dann ist einer eben server und spielt gleichzeitig auf localhost.
      Is ja egal. Das Problem bleibt das gleiche: Du willst ja nichts anderes als die Anfangsbedingungen angeben und dann die Veränderungen übertragen (ist ja fast ne Dgl *g*). Du kannst aber nicht so einfach sicherstellen, dass sich die Spiele gleich entwickeln.
      Deine eigene Bewegung kommt auf localhost sicher schneller an, als beim anderen, und somit sind die beiden Spiele zwangsweise verschieden.

      Um mal wieder etwas zur eigentlichen Frage zu sagen: Es könnte auch sein, dass Billy sicherstellen wollte, dass eine gute I-Net anbindung besteht. Nicht in Hinblick auf Bandbreite, sondern auf routing, und das ist vielleicht in Amerika generell bei DSL besser als bei Analoganschlüssen.
      Perfect Dark forever!!!

      Re: Online...

      nein. wenn man es schon so ausdrückt, dann sind beide sowohl server wie auch client.
      hm. das protokoll müsste die verzögerung einkalkulieren. so dass lokale eingaben gleich stark verzögert werden wohl.
      die frage ist jetzt, ob eine verzögerung von weniger als einem frame überhaupt was ausmacht. müsste man halt durchrechnen
      Fine, I'll go build my own signature! With blackjack! And hookers!