Wie implementiere ich "Bullet Time" in einem Multiplayer-Spiel?

29

Ich habe noch nie ein solches Feature gesehen, aber es sollte eine interessante Gelegenheit zum Spielen bieten.

Wie kann ich in einer Multiplayer- / Echtzeitumgebung (FPS) einen Zeitlupen- / Bullet-Time-Effekt implementieren?

Etwas wie eine Illusion für den Spieler, der gerade Zeitlupe spielt. Jeder sieht ihn also "in Echtzeit", aber er sieht, dass sich alles verlangsamt.

Aktualisieren

Eine Randnotiz: Denken Sie daran, dass ein FPS-Spiel ausgeglichen sein muss, damit es Spaß macht. Also ja, diese Bullet-Time-Funktion muss solide sein und dem "Spieler" einen kleinen Vorteil verschaffen, ohne ihn von anderen Spielern abzulenken.

Darüber hinaus besteht die Möglichkeit, dass zwei Spieler gleichzeitig ihre Aufzählungszeit aktivieren.

Außerdem:

Ich werde das in Zukunft umsetzen, egal was es braucht. Und die Idee ist, eine ganz neue Spiel-Engine für all das zu bauen. Wenn das neue Möglichkeiten eröffnet, bin ich mehr als daran interessiert, die Ideen zu hören.

In der Zwischenzeit denken wir hier mit meinem Team auch darüber nach. Wenn unsere Theorie ausgearbeitet wird, werde ich sie hier teilen.

Ist das überhaupt möglich? Die Frage "Ist das überhaupt möglich?" Wurde beantwortet. Jetzt ist es an der Zeit, die beste Lösung zu finden.

Ich behalte die "Antwort", bis etwas außergewöhnlich Gutes auftaucht, wie eine Prototypentheorie mit etwas ähnlichem wie funktionierendem Pseudocode.

Was die Physiker und Philosophen sagen:

Die Links sind für Sie interessant, da die Themen geschlossen sind.

https://physics.stackexchange.com/questions/17118/time-traveling-and-time-dilation-within-a-multiplayer-videogame

https://philosophy.stackexchange.com/questions/1704/besichtigen-jedes-in-slow-motion-aber-in-real-time-sein

Die Bedingungen, über die ich nachgedacht habe, als ich die Frage auf der Physikseite geschrieben habe (kopiert):

  1. Der Spieler hat unter Zeitlupeneffekten den Vorteil, präzisere Aktionen (Schießen, Bewegen usw.) auszuführen, da er alles in einem viel langsameren Tempo sieht.
  2. Seine Aktionen sollten sich in Echtzeit auf die anderen Spieler auswirken.
  3. Die Spieler, die auf unseren betroffenen Spieler schauen, sehen keinen Unterschied, es sei denn, sie können die Aktionen, die er ausgeführt hat, erleben (z. B. Spieler wird angeschossen / betroffen weicht einer Rakete aus).
  4. Wenn der Spieler diesen Effekt verlässt, fährt er einfach im gleichen Tempo wie gewohnt fort. (Wenn dies nicht möglich ist, muss er wahrscheinlich leiden, bis die Zeit wieder synchronisiert ist.)

Hinweise zur Aufzählungszeit (Zeitlupe):

Leider sind die meisten Implementierungen nur für Einzelspieler gedacht

http://www.gamesradar.com/a-videogame-history-of-bullet-time/

Ruckmodus
quelle
3
Dies wurde bereits erfolgreich im MMORPG The Matrix Online durchgeführt. Du hast die Zeit der Kugeln erlebt, als du mit Gegnern gekämpft hast, als du in die "Interlock" -Funktion eingetreten bist. Dies geschah sowohl mit PvE- als auch mit PvP-Gegnern. Alle anderen außerhalb von Interlock sahen "Echtzeit-Geschwindigkeit". Kommentieren statt antworten, weil ich nicht über das Fachwissen oder die Kenntnisse verfüge, um zu erklären, wie sie es gemacht haben. Ich weiß nur, was vom Standpunkt des Spielers aus passiert ist.
FallenAngelEyes
3
Dies war auch in FEAR Combat vorhanden. Im Mehrspielermodus gab es einen Spielmodus namens SloMoDeathmatch. Dies ist ein kostenloses Spiel, wenn ich mich richtig erinnere. Wenn du es also ausprobieren willst, lade es herunter und schau, ob noch ein paar Server übrig sind.
Alextsc
3
Ich glaube nicht, dass die Angabe, dass Sie auf Pseudocode warten, die Antworten erleichtern wird. Sobald das gewünschte Design fest genug ist, sollte der Code offensichtlich sein.
Tetrad
1
Auch "Egal was es braucht" stinkt nach schlechter Designphilosophie. Es scheint, als sollten Sie dies erst tun, wenn Sie (über einen Prototyp oder ein funktionierendes Beispiel in einem anderen Spiel) die Methode, die Sie verwenden möchten, vor dem Fortfahren bewiesen haben.
Tetrad
4
-1 für "Ich behalte die 'Antwort', bis etwas außergewöhnlich Gutes auftaucht, wie ein Prototyp mit etwas ähnlichem wie funktionierendem Pseudo-Code." Sei kein Idiot.
Trevor Powell

Antworten:

22

Es wurde schon einmal gemacht. :) Schauen Sie sich die Spezialisten an , eine Halbwertszeit-Mod mit zwei verschiedenen Powerups.

BEARBEITEN, um die Informationen von zzzzbov unten einzuschließen

Die Art und Weise, wie die Bullet Time in "The Specialists" aus Gameplay-Sicht funktioniert, war, dass der Spieler Powerups erhalten konnte, die eine begrenzte Menge an "Bullet Time" liefern würden. Bei Verwendung einer Blase um den Spieler würde sich die Physik verlangsamen.

Spieler, die weit weg sind, würden sich mit normaler Geschwindigkeit bewegen, aber alles in der Blase (Kugeln, Spieler, Explosionen) würde langsamer werden. Der Spieler, der das Power-Up verwendet hat, würde sich etwas schneller bewegen, sodass er davonlaufen oder mit Stunts Kugeln ausweichen kann.

Jeder andere, der in der "Kugel-Zeit" -Blase gefangen ist, hat immer noch den Vorteil zu sehen, was passieren wird, aber der relative Geschwindigkeitsunterschied zwischen einem gefangenen Spieler und Kugeln bleibt gleich, so dass die Fähigkeit zu reagieren praktisch nicht vorhanden ist.

Spencer Rathbun
quelle
@Tom IIRC, es ist Open Source, also sollten Sie in der Lage sein zu sehen, wie sie es gemacht haben.
Spencer Rathbun
Hmm, eine Google-Suche ergab keine Ergebnisse zum Quellcode. (plus die furchtbare Menge an Informationen über The Specialists: Source wird ebenfalls angezeigt). Hast du einen Link oder so?
Joltmode
@ Tom Ich dachte, es wäre auf ihrer Website, die im Wikipedia-Artikel verlinkt werden sollte. Wenn nicht, haben sie es möglicherweise abgenommen, seit sie vor ein paar Jahren auf die HL2-Engine umgestiegen sind. Möglicherweise müssen Sie den Entwicklern eine E-Mail senden, um Zugriff zu erhalten. Natürlich könnte ich auch abgewaschen werden.
Spencer Rathbun
Ihre Website funktioniert auch nicht ..
Joltmode
5
Ich wollte die gleiche Antwort hinzufügen, bis ich diese fand. Die Art und Weise, wie die Bullet Time in "The Specialists" aus Gameplay-Sicht funktioniert, war, dass der Spieler Powerups erhalten konnte, die eine begrenzte Menge an "Bullet Time" liefern würden. Bei Verwendung einer Blase um den Spieler würde sich die Physik verlangsamen. Spieler, die weit weg sind, würden sich mit normaler Geschwindigkeit bewegen, aber alles in der Blase (Kugeln, Spieler, Explosionen) würde langsamer werden. Der Spieler, der das Power-Up verwendet hat, würde sich etwas schneller bewegen , sodass er davonlaufen oder mit Stunts Kugeln ausweichen kann.
zzzzBov
12

Ich kann mir kein Spiel vorstellen, bei dem es im Einzelspieler-Modus auf sinnvolle Weise zum Mehrspieler-Modus übergegangen ist. Es mag ein paar von ihnen geben, die es gelöst haben, indem sie den Spieler damit beschleunigten, aber diese Art besiegt den Punkt.

Aufzählungszeit ist vorhanden, weil Sie dem Spieler das Gefühl geben möchten, ein schlechter Kerl zu sein. Sie verschaffen dem Spieler einen scheinbar unfairen Vorteil, indem Sie die Wahrnehmung auf höherer Ebene simulieren. Das Endergebnis davon ist, dass die Spieler zielen können, während sie coole Dinge tun, wie aus der Deckung springen und so weiter. Wenn Sie den Player nur beschleunigt haben, während die Aufzählungszeit aktiviert ist, haben Sie weniger Zeit zum Reagieren. Dies ist das Gegenteil von dem, was Sie möchten.

In einer synchronen Multiplayer-Umgebung gibt es wirklich keine Lösung für benutzeraktivierte "Zeitverlangsamungen", die das Gefühl simuliert, das durch die Verwendung in einer Singleplayer-Umgebung entsteht. Wenn sich die Zeit selbst verlangsamt, steigt die Wahrnehmung aller. Insbesondere in einem PC-Spiel, in dem das Zielen mit der Maus im Allgemeinen sofort erfolgt, würde jeder den Vorteil von Zielen mit langsamer Bewegung erhalten.

Wenn Sie diesbezüglich absolut sicher wären, wäre mein Vorschlag, es zu einer Art "Zustand" einer Begegnung zu machen, anstatt es zu einem vom Spieler aktivierten Feature zu machen. Stellen Sie sich einen John Woo-Film vor, in dem es sich um den Guten gegen den Bösen handelt und alles langsamer zu werden scheint, während sie aufeinander schießen. Wenn also eine "Begegnung" beginnt, schalten Sie die Zeitlupe ein und Sie können einige interessante Effekte erzielen. Jungs hüpfen herum und es prallt etwas ab, das von verpassten Schussschlägen in der Luft schwebt, und all das Zeug. Das würde natürlich nur bei einem 1: 1-Spiel wirklich funktionieren. Sie würden den einseitigen Vorteil der Kugelzeit nicht wie in einem Einzelspielerspiel erhalten, aber es könnte ein interessantes Spielerlebnis sein.

Tetrade
quelle
1
Es könnte möglicherweise auf mehr als 1 gegen 1 ausgedehnt werden, indem nur die Leute verlangsamt werden, die sich sehen konnten. Sobald jemand anderes sie sehen würde, verlangsamen Sie auch sie. Auf diese Weise ist jeder andere normal schnell, bis er in einen Kampf gerät.
George Duckett
Sie könnten das Sofortzielproblem umgehen, indem Sie die Abbiegerate begrenzen. Das eigentliche Problem besteht darin, dass in einem korrekten System niemand von dem neuen Referenzrahmen betroffen sein sollte. Das sollte nur den Spieler in der Kugelzeit sehen, der beschleunigt wird.
Jonathan Dickinson
Verlangsame nicht alle. Friere die anderen Spieler ein, bis die Aufzählungszeit fast abgelaufen ist. Sie möchten die Zeit so einstellen, dass die Zeitlinien nach Ablauf der Aufzählungszeit erneut synchronisiert werden.
Martin Sojka
Dies ist die bisher einzige Antwort, die den relevanten Punkt abdeckt: Sie beschleunigen oder verlangsamen die Zeit nicht. Du verlangsamst die Simulationsgeschwindigkeit, damit die Spieler mehr Zeit zum Reagieren und Planen von Zügen haben, die sich in Echtzeit schnell steuern lassen. Damit dies aus spielerischer Sicht funktioniert, müssen alle beteiligten Spieler (die zuschauen oder an der Aktion teilnehmen) verlangsamt werden, und alle nicht verbundenen Spieler (die nicht in der Nähe sind, um die Verlangsamung zu beobachten) fahren mit normaler Geschwindigkeit fort. Wenn Sie nicht jeden verlangsamen, der das Ereignis sehen kann, wird es dumm aussehen.
MrCranky
Bei den Max Payne-Videospielen wird "Bullet-Time" als In-Game-Fähigkeit verwendet. Einige der Star Wars Jedi-Spiele (mit Sicherheit Jedi Knight II) haben auch "Force Speed", was Sie beschleunigt, indem alle anderen (mit Ausnahme eines anderen Force Speed-Benutzers) verlangsamt werden.
KeithS
8

Allgemeine Gedanken

Dies ist ein Problem, das am besten mit der allgemeinen Relativitätstheorie beschrieben werden kann - nehmen Sie zum Beispiel die Tatsache, dass Sie die Auswirkungen der Kugelzeit sehen können, indem Sie mit Ihrem Teleskop auf einen Satelliten blicken (die Ursache für das berüchtigte Neutrino, das sich schneller fortbewegt als das Lichtproblem) - Gleichungen die lösbar sind, existieren unter diesen Bedingungen; Das heißt, es ist völlig möglich.

Ihr Spiel muss in der Lage sein, separate Referenzrahmen zu verarbeiten - soweit ich weiß, würde dies einen Nettoeffekt haben ("Spieler" ist die Person mit aktiver Aufzählungszeit):

  • Die Leute, die den Spieler sehen, würden sehen, dass sie sich extrem schnell bewegen.
  • Der Spieler würde Leute sehen, die sich extrem langsam bewegen.
  • Der Spieler würde sich in Bezug auf alle anderen in die Vergangenheit / Zukunft bewegen.

Zum Glück bedeutet dies, dass ein Spieler in der Bullet Time einen Vorteil gegenüber allen anderen hat. sie können unmöglich auf ihn zielen - es wäre jedoch nicht überzeugend, da der Durchschnittsmensch erwarten würde, keinen erkennbaren Unterschied zu sehen, wenn er die Zeitdilatation beobachtet.

Ich empfehle Ihnen nachdrücklich, dies in der Physik zu veröffentlichen (dies ist ein Spiel, aber Sie benötigen echte theoretische Kenntnisse) und nach Ideen zu fragen, wie Sie den Effekt in einer gleichzeitigen Simulation approximieren würden.

Eine mögliche Lösung, die ich in Betracht ziehen würde, besteht darin, dass die Welt den Spieler einholt (während er sich in die Zukunft bewegt), indem jeder eine progressive Menge (weit weniger als die tatsächliche Aufzählungszeit) der Aufzählungszeit erfährt, die von der weit zurückliegenden Zeit abhängt Zeit) sind sie. Auf diese Weise könnten Sie Zeitunterschiede approximieren, ohne sich tatsächlich mit dem Speichern des vorherigen Zustands usw. befassen zu müssen. Sie müssten diesen Effekt, "Zeitsprung" oder so etwas, irgendwie erklären, weil er physikalisch nicht korrekt ist.

Eine andere Idee ist, die grundlegendsten physikalischen Gleichungen ( s = d/t) zu missbrauchen , wenn ein Spieler in die Kugelzeit gerät, wird alles kleiner - wenn Sie die Größe von allem aus seiner Perspektive halbieren, aber seine Geschwindigkeit entsprechend seinem ursprünglichen Bezugsrahmen beibehalten (effektiv) verdoppeln) die Gleichung wird immer noch ausgeglichen. Warp-Drive-Sequenzen in Weltraumfilmen verwenden diese Raumerweiterung, um den Effekt darzustellen - die Menschen sind es also gewohnt, sie zu sehen.

Tatsächliche Lösung

Ich habe noch weiter darüber nachgedacht. Wenn Sie sich ansehen, wie das Steamworks-Netzwerksystem funktioniert ( hat jemand einen Link? ), Ist der Server um einen bestimmten Betrag zeitlich immer einen Schritt voraus. und jeder Client kennt den 'nächsten' Frame, auf den er interpolieren muss.

Nehmen wir zum Beispiel an, der Server ist allen Spielern 20 ms voraus. Wenn ein Spieler in die Bullet-Time-Phase eintritt, ändern Sie sein Aktualisierungsintervall auf 40 ms (seine Simulation wird in 40-ms-Schritten ausgeführt, und der Server stellt seine Aktionen in 40 ms-Schritten in die Zukunft) um ihn schneller von ihrer Referenz zu bewegen und sie langsamer von seiner zu bewegen. Sobald er die Bullet Time verlässt, haben alle anderen einen Vorteil von 5 ms gegenüber ihm, damit sie aufholen können (dies sind Ihre time reboundzufällig intelligenten Spieler, die die Bullet Time während dieser Aufholperioden spielen ). Es könnte ein bisschen besser aussehen, wenn Sie eine Parabel auf seinen Zeitschritt abbilden - dies verlangsamt die Dinge, stoppt und beschleunigt sie dann allmählich wieder.

Haftungsausschluss: Ich bin kein Physiker, aber ich habe ein praktikables Wissen über die Relativitätstheorie.

Jonathan Dickinson
quelle
4

Ich wollte meine 0,02 US-Dollar hinzufügen, als ich einen Prototyp-Bullet-Time-Modus implementierte, der in Multiplayer-Spielen für Heroes Over Europe funktioniert .

Im Einzelspieler-Modus würde ein Knopfdruck im richtigen Moment die Zeit verlangsamen und das gewünschte Ziel vergrößern. Ich wollte die Zeit im Mehrspielermodus nicht global verlangsamen, um die Funktion zu replizieren (da das Spiel 16 gleichzeitige Spieler unterstützen sollte!), Also habe ich eine "Bubble" -Methode verwendet.

Insbesondere wurde beim Auslösen des Bullet-Time-Modus eine Kugel um das Zielflugzeug erstellt. Die Geschwindigkeit des Zeitablaufs änderte sich in Abhängigkeit von der Entfernung zum Mittelpunkt der Kugel; Die Zeit verschlechterte sich linear von ihrer Oberfläche auf einen minimalen Wert in der Nähe des Zentrums. Die Rate änderte sich auch in Abhängigkeit davon, wie lange die Kugel existiert hatte und wie lange sie noch übrig war, bevor sie "verdunstet" war.

Dies wurde maschinenübergreifend synchronisiert, indem ein Paket gesendet wurde, das eine zukünftige Startzeit für die Blase definierte. Dies ermöglichte es dem Effekt, trotz Latenz synchron zu bleiben. (In ähnlicher Weise würde ein Paket die zukünftige Zeit deklarieren, zu der es enden sollte, wenn der Effekt vorzeitig beendet werden sollte.)

Die Durchlaufzeit war immer funktional definiert: Anhand der Definition einer Kugel, der aktuellen Zeit und einer Position konnte festgestellt werden, wie schnell die Zeit floss.

Damit der Effekt funktioniert, mussten mehrere Spielsysteme an diese "funktionale" Zeitdefinition angepasst werden. Flugzeuge, Kugeln, Raketen und andere Effekte verwendeten jeweils eine Person dt, die durch Aufrufen der entsprechenden Funktion ermittelt wurde. Die meiste Arbeit, um den Prototyp zum Laufen zu bringen, wurde hier verbracht.

Das Ergebnis funktionierte einigermaßen gut: Ein Spieler, auf den die Kugel abgefeuert wird, verlangsamt sich merklich und hat eine (kleine) Chance, sich aus dem Fadenkreuz seines Angreifers und von einem Hagel von Zeitlupengeschossen wegzubewegen. Spieler in der Nähe konnten Flugzeuge und Kugeln in Zeitlupe ausweichen sehen, waren aber ansonsten nicht betroffen.

Beachten Sie, dass der auslösende Spieler ebenfalls verlangsamt wurde, aber dadurch nicht unbedingt benachteiligt wurde: Er hatte eine vergrößerte Ansicht seines Ziels und konnte One-Shot-Kills bei seiner Beute bewirken. Ein anderer Spieler könnte versuchen, Sie in diesem Zustand zu töten (oder zu stehlen!), Aber sein Flugzeug (und seine Kugeln) würden beim Betreten der Blase davon betroffen sein und Ihnen Zeit geben, zu entkommen.

Leider hatten wir keine Zeit, die Funktion für den Mehrspielermodus fertigzustellen und zu verbessern. Daher wurde sie gelöscht. (Einzelspieler behielten die Funktion als "Ace Kill" bei.)

Blair Holloway
quelle
2

Eigentlich keine gute Zeit, aber es könnte Spaß machen:

Was ist mit etwas ähnlichem, wie Braid die Zeit verlangsamt? Dh je näher die Person der Kugelzeit ist, desto langsamer geht es ... und wenn Sie sich außerhalb des Einflussbereichs befinden, fließt die Zeit normal.

... zum Beispiel, wenn Spieler A auf die Kugelzeit geht, bildet sich eine abgestufte Sphäre der "langsamen Zeit" um ihn herum, so dass er richtig zielen kann, sich aber nicht unbedingt schneller bewegen muss - dann müsste Spieler B auf ihn schießen Überprognose, wo die Kugel treffen wird, da sie langsamer wird, je näher sie ihm kommt.

Je mehr ich darüber nachdenke, desto weniger denke ich, dass es funktionieren würde, denn es könnte Spieler A zu einem einfachen Ziel machen (da sein Kopf langsamer wird?) - aber es wäre trotzdem interessant, es in 3D zu sehen.

Seb
quelle
1
Interessant, aber wenn die Kugeln langsamer werden, je näher sie dem Spieler kommen, sollte er ihnen ausweichen können.
Joltmode
Ja, aber wie in Braid verlangsamt sich auch der Spieler selbst - dh die Drehgeschwindigkeit des Spielers könnte immer noch hoch sein, so dass das Blockieren oder der Einsatz von Schilden einfacher wäre, um Kugeln zu vermeiden, aber die tatsächliche Bewegung des Fliegens durch die Luft, um herauszukommen der Weg der Kugeln wäre langsamer ...
Seb
2

Ich weiß, dass dies eine alte Frage ist, aber es fiel mir schwer, das Problem nicht zu erwähnen, da die meisten Antworten die Relativitätstheorie betrafen

Implementiert mit den in der Frage beschriebenen Effekten, ist keine Bullet Time im Multiplayer möglich.

Der Grund dafür ist, wie Relativität funktioniert; Einige von Ihnen hier haben es erwähnt und verstehen offensichtlich die Relativitätstheorie, aber das Problem ist, dass Ihre Modelle falsch eingerichtet sind.

Viele Leute haben "Spieler A's Referenz gegen Spieler B's" in Ihren Antworten verwendet, aber leider existiert keines dieser Dinge wirklich. Ja, Sie haben Spieler, vielleicht sogar viele von ihnen, und ja, sie können ihre Welt steuern und interagieren und haben ihre eigene Perspektive auf das Spiel, aber Perspektive ist kein Bezugspunkt zum Zeitpunkt: Es ist nur ein XYZ-Raum, der in das XY projiziert wird Ebene.

Es gibt nur einen einzigen Bezugspunkt und das ist der Server (oder Host). Es gibt nur eine Sicht auf den physischen Zustand der Welt und somit nur einen Bezugspunkt. Was die Spieler auf ihrem Bildschirm sehen, sind verschiedene grafische Ansichten derselben physikalischen Simulation.

Es ist einfach nicht möglich, einen Spieler zu veranlassen, eine Simulation mit einer Geschwindigkeit und eine andere Simulation mit einer anderen Geschwindigkeit anzuzeigen und keine Desynchronisation durchzuführen. Irgendwo muss etwas geben.

Der Versuch, mehrere Simulationen durchzuführen oder den Server vor den Clients laufen zu lassen, macht einfach keinen Sinn. Der in diesem Beitrag beschriebene Effekt kann nicht ausgeführt werden, ohne den einzelnen Referenzpunkt zu erzwingen oder zuzulassen, dass die Gedanken desynchronisiert werden und den Spielern mitteilt, dass ihre Aktionen nicht wirklich danach stattgefunden haben.

Ich denke, die beste Lösung ähnelt einer bereits gegebenen, die einen zopfartigen Effekt hat, bei dem sich die Geschwindigkeit in einer Luftblase um den Spieler ändert. Davon abgesehen würde der Spieler nicht langsamer werden und die Blase würde immer mit ihm in der Mitte positioniert und bewegt. Dadurch bewegt sich der Spieler mit voller Geschwindigkeit, während sich die ihm am nächsten stehenden Spieler verlangsamt fühlen. Er bekommt seinen Power-Up-Vorteil und Menschen, die sich weit weg von diesem Bereich befinden, spüren keinen Effekt. Diejenigen, die in der Nähe sind, werden gebremst, aber es ist offensichtlich, dass jemand das Power-Up verwendet (ich würde vorschlagen, den Spieler irgendwie hervorzuheben, der es verwendet, damit gegnerische Spieler vollständig verstehen, was passiert und warum).

Andrew
quelle
1

Es wäre sehr umständlich. Stellen Sie sich vor, Sie sind der Spieler, der gerade einmal 4 Sekunden in Kugelzeit verbracht hat, während alle anderen im Spiel 2 Sekunden in Echtzeit verbracht haben, ohne sich mit dem Problem der Zeitdilatation auseinanderzusetzen. Da in der Realität für alle die gleiche Zeit verstrichen ist, müsste man diese zwei Sekunden im Spiel irgendwie "zurückgewinnen". Irgendwann müssten Sie also 2 Sekunden Spielzeit "überspringen" oder ein bisschen Zeit damit verbringen, schneller als normal zu rennen , oder etwas anderes, das die Aufzählungszeit wahrscheinlich zu einer Verschwendung machen würde.

Außerdem müssen Sie das, was Sie in 2 Sekunden in Ihrer Zeit tun, in einer Sekunde an alle anderen senden.

John Calsbeek
quelle
1

Wirf dem Spieler kleine zeitähnliche Ereignisse zu, um Kugeln auszuweichen oder feindliche Ziele automatisch zu verfolgen, während die Bewegungen deines Spielers für die anderen Spieler verschwommen oder "phasenweise" erscheinen (damit sie sich nicht am Kopf kratzen, warum ihre Kugeln nicht sind) trifft nicht). Das scheint die einfachste und praktischste Übersetzung zu sein, die Sie für den Mehrspieler-Modus machen können.

Bei jeder anderen Lösung wird ein physisches Element des Spiels für einen oder mehrere Spieler geändert, das für die anderen nicht parallel gilt, wie ich mir vorstellen kann.

Hamster
quelle
0

Verlangsamen Sie einfach alle anderen, bis der Spieler die Bullet-Time erlebt hat. Sie können dies tun, indem Sie die Empfindlichkeit der Maus verringern.

Derek
quelle
Und wie würde dies zu "ausgewogenem Gameplay" führen? : D
Joltmode
Es ist ausgeglichen, anstatt dass der Spieler schneller wird, verlangsamt sich die umgebende Welt. Der Spieler hätte den gleichen Vorteil, wenn er schneller würde, aber dieser Weg ist plausibler.
Derek
0

Nehmen wir an, wir haben Spieler A in Echtzeit und Spieler B in Echtzeit. Und sie machen aus Sicht von Spieler B Folgendes:

  • Zeit 0s - Spieler Eine aktivierte Kugelzeit
  • Zeit 2s - Spieler A schießt auf Spieler B
  • Zeit 3s - Spieler B schießt auf Spieler A

Aus Sicht von Spieler A wird dies nun doppelt so lange dauern - da sich die Welt für ihn langsamer bewegt:

  • Zeit 0s - Spieler Eine aktivierte Kugelzeit
  • Zeit 4s - Spieler A schießt auf Spieler B
  • Zeit 6s - Spieler B schießt auf Spieler A

Schließlich hat der Server die folgenden Ereignisse eingegangen:

  • Zeit 0s - Spieler A aktiviert die Aufzählungszeit
  • Zeit 3s - Spieler B schießt auf Spieler A (B leitet diese Aktion ein, damit sie seiner Zeitleiste folgt)
  • Zeit 4s - Spieler A schießt auf Spieler B (A leitet diese Aktion ein)

Wir haben also zwei anfängliche Probleme. Das erste ist, dass A jetzt 3 Sekunden Spielzeit hinter allen anderen liegt. Dies könnte eine interessante Spielmechanik sein, wenn Sie ein Konzept hätten, das bedeutet, dass er diese Schulden zurückzahlen muss. Stellen Sie sich einen deckungsbasierten Shooter vor, in dem Sie die Bullet Time aktivieren können, um über offenes Gelände zu brechen. Wenn Sie sich jedoch in Deckung befinden, müssen Sie stillstehen, bis der Rest der Welt Sie einholt (die drei Sekunden, die Sie verpasst haben, werden wiederholt) )

Das zweite Problem ist viel größer. Der Server muss die Ereignisse für jeden Spieler chronologisch reorganisieren und das Ergebnis herausfinden. Zuerst schießt B auf A - dies geschieht drei Sekunden nach Spielbeginn, und A sieht es nach 6 Sekunden - bislang kein Problem. Bei 4 Sekunden schießt Spieler A auf B. In B's Timeline geschah dies vor zwei Sekunden. Was machen wir nun mit den zwei Sekunden des Spiels, die für ihn bereits verstrichen sind, einschließlich seines Schusses auf A?

Wir könnten es annullieren - im Grunde genommen sagen: "Ich weiß, Spieler B glaubt, er hat diesen Kerl erschossen, aber es stellt sich heraus, dass er bereits tot ist. Machen wir also so, als wäre das nie passiert." .

Wir könnten beide Zeitleisten zum Evangelium machen - verwenden Sie die Sicht der Server als die ganze Wahrheit und sorgen Sie sich unabhängig um die Zeitleiste jeder Person. Nach 3 Sekunden schießt B auf A und tötet ihn. Nach 4 Sekunden schießt A auf B und tötet ihn. Beide Spieler sterben an Schüssen, die sie nicht gesehen haben. Hört sich nicht gut an, aber vielleicht gibt es eine gute Möglichkeit, dies zu tun, nachdem Sie allen Spielern einen kurzen Kurs in der verrückten Welt der Relativitätstheorie gegeben haben.

Wir könnten ein Pseudo-Echtzeit-System haben - ein rundenbasiertes Spiel, in dem Sie zuerst Ihre Züge planen und dann eine gleichzeitige Berechnung der Ereignisse auslösen. Eine gute Lösung, die alle Probleme behebt, außer dass es sich nicht um die Art von Spiel handelt, die Sie schreiben möchten.

Lange Rede, kurzer Sinn, ich glaube, es gibt keine gute Möglichkeit, die Bullet-Time-Behandlung im klassischen Sinne zu implementieren, da sie Auswirkungen auf die Person hat, die sie verwendet - sie bewegen sich schneller, sie sehen die Welt als langsamer, alle anderen machen normal weiter. Wenn wir es umkehren und alle anderen in die Sichtweise des Bullet-Timers geraten und sich als langsamer bewegen und ihre Steuerung träge wird, geschieht alles synchron und es gibt keine Probleme. Aber ist das wirklich die richtige Zeit? Während es für einen externen Beobachter (und in Spielwiederholungen) so aussieht, würde keiner der Teilnehmer den erwarteten Effekt erzielen.

Martin Harris
quelle
Es wurde gemacht und der Effekt war real und ließ Sie sich für ein paar Sekunden wie ein Gott fühlen (der Spezialist, max payne 3).
Katu
-1

Nein, das ist nicht möglich. Stellen Sie sich vor, ein Spieler wechselt in die Zeitlupe. Was würden die anderen Spieler sehen? Sie möchten, dass der Bullet-Time-Spieler sich normal bewegt, aber Blitzreflexe hat, oder? Aber leider wird jeder, der das Spiel spielt, das Spiel in der gleichen Echtzeit spielen. Daher wäre der einzige Weg, dies zu tun, das ganze Spiel zu verlangsamen und jeden Vorteil, den es mit sich bringt, auszuschalten, da jeder in der richtigen Zeit wäre. Außerdem wäre es ziemlich ärgerlich, wenn das Spiel die ganze Zeit langsamer würde, wenn jemand diesen Knopf drückte.

Es gibt Workarounds, die dazu führen würden, dass Spieler einen ähnlichen Vorteil haben (einen, dass sie sich schneller bewegen können usw.), indem sie zum Beispiel alle anderen verlangsamen und sich normal bewegen (dann könnten Sie sie in einer Wiederholung auf normal beschleunigen und Sie würden es tun) reagieren Sie schnell), aber ich glaube nicht, dass Sie das wirklich wollen.

SirYakalot
quelle
1
Es wurde schon früher gemacht, also ist es ein eklatanter Irrtum, zu sagen, dass es nicht möglich ist.
zzzzBov
@zzzBov Es ist buchstäblich unmöglich, Bullet Time in einem Multiplayer-Spiel in seiner wahren Form zu implementieren. Sie müssten zuerst das gesamte Spiel verlangsamen und dann die tatsächliche Zeit für alle anderen Spieler in der realen Welt verlangsamen. Denken Sie einfach darüber nach. Als Workaround müssten Sie einige Pausen / Aufholjagden implementieren, aber in der tatsächlichen Form ist dies nicht möglich.
SirYakalot
Du hast Recht, die wahrste Form Kugel Zeit , in der ein Benutzer läuft mit normaler Geschwindigkeit und eine andere in Bullet Time ist nicht möglich, jedoch OP nach war „... [Umsetzung] eine langsame Bewegung / Bullet - Time - Effekt“, der hat gewesen vorher gemacht.
zzzzBov
@zzzBov "Etwas wie eine Illusion für den Spieler, der gerade im Zeitraffer ist. Also sieht ihn jeder" in Echtzeit ", aber er sieht, dass sich alles verlangsamt." Zitiert aus der ursprünglichen Frage. Er fragt speziell nach einem Benutzer, der mit normaler Geschwindigkeit läuft, und einem anderen in der Bullet-Time. Das ist fast wörtlich, wonach er gefragt hat.
Trevor Powell
Die Tatsache, dass dies bereits vor Jahren im MP-Spiel implementiert wurde (der Spezialist, unter anderem Max Payne 3), macht diese Antwort ungültig.
Katu
-1

FEAR hatte im Mehrspielermodus eine gute Zeit, sie galt jedoch für das gesamte Team und verlangsamte alle im anderen Team.

Bullet Time im Echtzeit-Mehrspielermodus, ohne die anderen zu verlangsamen, würde die Clients desynchronisieren. Der Zeitlupenspieler würde auf Ereignisse reagieren, die die anderen Spieler vor langer Zeit gemacht haben, während sie auf aktuelle Ereignisse reagieren würden.

Iivok
quelle
1
Während es eine Lösung ist; Ich mag es nicht - die einzige Person, die betroffen sein sollte, ist der Spieler in der Kugelzeit - nur weil Satelliten Sie als langsamer beobachten, heißt das nicht, dass Sie sich in Ihrem eigenen Bezugsrahmen langsamer bewegen.
Jonathan Dickinson
Entschuldigung, meine vorherige Bearbeitung klang ein bisschen jugendlich. Die Echtzeit-Aufzählungszeit klang jedoch wie ein Widerspruch.
Hamster
-2

Vielleicht sollten Sie die Ausrüstung organisieren, die erforderlich ist, um den Spieler auf den PC zu schießen, der die Kugelzeit mit nahezu Lichtgeschwindigkeit in den Weltraum abfeuert.

Dies würde alle Ihre Probleme lösen, kann jedoch zu einem höheren Ping / einer höheren Latenz führen.

Jake
quelle
-3

Nun, es wäre kein Problem, wenn sich alle langsamer als sonst bewegen würden, aber nicht zu langsam, und derjenige, der es aktiviert, würde sich schneller bewegen, als das ganze Spiel unter Wasser zu versenken oder es in den Weltraum zu bringen, während sich derjenige so friedlich wie immer bewegt

Aems
quelle
1
Es ist nichts Falsches daran, alte Fragen zu beantworten. Man sollte sich jedoch weiterhin bemühen, seine Antworten gut zu machen , und diese bieten nicht wirklich viel in Bezug auf eine vollständige Lösung, und sie decken auch keinen Bereich ab, der nicht bereits durch vorhandene Antworten abgedeckt ist.
Josh