Comment implémenter le «bullet time» dans un jeu multijoueur?

29

Je n'avais jamais vu une telle fonctionnalité auparavant, mais elle devrait offrir une opportunité de gameplay intéressante.

Alors oui, dans un environnement multijoueur / temps réel (imaginez FPS), comment pourrais-je implémenter un effet de temps au ralenti / balle?

Quelque chose comme une illusion pour le joueur qui est actuellement au ralenti. Donc tout le monde le voit "en temps réel", mais il voit tout ralentir.

Mise à jour

Une note: gardez à l'esprit qu'un jeu FPS doit être équilibré pour qu'il soit amusant. Donc oui, cette fonction de temps de balle doit être solide, donnant un petit avantage au "joueur", sans pour autant éloigner les autres joueurs.

De plus, il est possible que deux joueurs puissent activer leur balle en même temps.

En outre:

Je vais mettre en œuvre cela à l'avenir, peu importe ce qu'il faudra. Et, l'idée est de construire un tout nouveau moteur de jeu pour tout cela. Si cela donne de nouvelles options, je suis plus qu'intéressé à entendre les idées.

Pendant ce temps, ici avec mon équipe, nous y pensons aussi, lorsque notre théorie sera élaborée, je vais la partager ici.

Est-ce seulement possible? Donc, la question "est-ce encore possible" a été répondue, il est maintenant temps de trouver la meilleure solution.

Je garde la "réponse" jusqu'à ce que quelque chose d'exceptionnellement bon apparaisse, comme une théorie prototype avec quelque chose de proche du pseudo-code fonctionnel.

Ce que disent les physiciens et les philosophes:

Les liens sont pour vous, car les sujets sont fermés.

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

https://philosophy.stackexchange.com/questions/1704/seeing-everything-in-slow-motion-but-being-real-time

Les conditions auxquelles j'ai pensé en écrivant la question sur le site de physique (copié):

  1. Le joueur sous les effets du ralenti a l'avantage de faire des actions plus précises (tir, mouvement etc.), car il voit tout à un rythme beaucoup plus lent.
  2. Ses actions devraient affecter les autres joueurs en temps réel.
  3. Les joueurs qui regardent notre joueur affecté ne voient aucune différence, sauf qu'ils peuvent expérimenter les actions qu'il a faites (comme, le joueur se fait tirer / esquive une esquive).
  4. Lorsque le joueur sort de cet effet, il continue simplement au même rythme que d'habitude. (Si ce n'est pas possible, alors je suppose qu'il devra souffrir jusqu'à ce que le temps soit synchronisé)

Références sur le temps des balles (ralenti):

Malheureusement, la plupart des implémentations sont uniquement en mode solo

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

joltmode
la source
3
Cela a déjà été fait avec succès dans le MMORPG The Matrix Online. Vous avez connu le temps des balles en combattant avec vos adversaires lorsque vous êtes entré en "Interlock" en vous battant avec eux. Cela a été fait avec des adversaires PvE et PvP. Tout le monde à l'extérieur d'Interlock a vu la «vitesse en temps réel». Commenter au lieu de répondre parce que je n'ai pas l'expertise ou les connaissances pour expliquer comment ils l'ont fait, je sais simplement ce qui s'est passé du point de vue du joueur.
FallenAngelEyes
3
C'était également présent dans FEAR Combat. Dans le multijoueur, il y avait un mode de jeu appelé SloMoDeathmatch. C'est un jeu gratuit si je me souviens bien, donc si vous voulez l'essayer, téléchargez-le et voyez s'il reste encore quelques serveurs.
alextsc
3
Je ne pense pas que dire que vous attendez un pseudocode va aider les réponses. Une fois que la conception souhaitée est suffisamment solidifiée, le code devrait être évident.
Tetrad
1
En outre, "Peu importe ce qu'il faut", ça dégage une mauvaise philosophie de conception. Il semble que vous ne devriez le faire qu'une fois que vous avez prouvé (via un prototype ou un exemple de travail dans un autre jeu) la méthode que vous prévoyez d'utiliser avant d'aller de l'avant.
Tetrad
4
-1 pour "Je garde la 'réponse' jusqu'à ce que quelque chose d'exceptionnellement bon arrive, comme un prototype avec quelque chose de proche du pseudo-code fonctionnel." Ne sois pas un con.
Trevor Powell

Réponses:

22

Cela a déjà été fait auparavant. :) Découvrez les spécialistes , un mod de demi-vie qui a deux bonus de temps de balle différents.

MODIFIER pour inclure les informations de zzzzbov ci-dessous

Du point de vue du gameplay, la façon dont le temps de balle fonctionnait dans "The Specialists" était que le joueur pouvait obtenir des bonus qui lui donneraient un temps de balle limité. Lorsqu'elle est utilisée, une bulle autour du joueur verrait sa physique ralentie.

Les joueurs éloignés se déplaceraient à vitesse normale, mais tout ce qui se trouve dans la bulle (balles, joueurs, explosions) ralentirait. Le joueur qui a utilisé la mise sous tension se déplacerait légèrement plus rapidement, ce qui lui permettrait de s'enfuir ou d'utiliser des cascades pour esquiver les balles.

Quiconque est pris dans la bulle "bullet-time" a toujours l'avantage de voir ce qui va se passer, mais la différence de vitesse relative entre un joueur pris et des balles reste la même, de sorte que la capacité de réaction est pratiquement inexistante.

Spencer Rathbun
la source
@Tom IIRC, c'est open source, vous devriez donc pouvoir voir comment ils l'ont fait.
Spencer Rathbun
Hmm, une recherche Google n'a renvoyé aucun résultat sur le code source. (ainsi que les nombreuses informations sur The Specialists: Source sont également affichées). Vous avez un lien ou quelque chose?
joltmode
@Tom, je pensais que c'était sur leur site Web, qui devrait être lié dans l'article de wikipedia. Sinon, ils l'ont peut-être retiré, car ils sont passés au moteur HL2 il y a quelques années. Vous devrez peut-être envoyer un e-mail aux développeurs pour y accéder. Bien sûr, je pourrais aussi être lavé.
Spencer Rathbun
Leur site Web ne fonctionne pas non plus.
joltmode
5
J'allais ajouter la même réponse jusqu'à ce que je trouve celle-ci. Du point de vue du gameplay, la façon dont le temps de balle fonctionnait dans "The Specialists" était que le joueur pouvait obtenir des bonus qui donneraient des quantités limitées de "temps de balle". Lorsqu'elle est utilisée, une bulle autour du joueur verrait sa physique ralentie. Les joueurs éloignés se déplaceraient à vitesse normale, mais tout ce qui se trouve dans la bulle (balles, joueurs, explosions) ralentirait. Le joueur qui a utilisé la mise sous tension se déplacerait légèrement plus rapidement, ce qui lui permettrait de s'enfuir ou d'utiliser des cascades pour esquiver les balles.
zzzzBov
12

Je ne peux penser à aucun jeu qui a un temps de balle en solo qui l'a réussi à passer en multijoueur de manière significative. Il y en a peut-être quelques-uns qui ont résolu le problème en accélérant l'utilisation du joueur, mais ce genre de chose vainc le point.

Le temps de balle existe parce que vous voulez faire en sorte que le joueur se sente comme un dur à cuire. Vous donnez au joueur un avantage apparemment injuste en simulant une perception de niveau supérieur. Le résultat final est que les joueurs peuvent viser tout en faisant des choses sympas comme sauter hors de la couverture, etc. Si vous venez d'accélérer le joueur alors qu'il a activé le temps de balle, vous lui donnez moins de temps pour réagir, ce qui est l'opposé de ce que vous voulez.

Dans un environnement multijoueur synchrone, il n'y a vraiment aucune solution pour les "ralentissements" activés par l'utilisateur qui simulent le sentiment qui vient de son utilisation dans un environnement à un seul joueur. Si le temps lui-même était ralenti, alors la perception de tout le monde augmente. Surtout dans un jeu PC où la visée de la souris est généralement instantanée, tout le monde bénéficierait de cibles se déplaçant plus lentement.

Maintenant, si vous étiez mort à ce sujet, ma suggestion serait de, au lieu d'en faire une fonctionnalité activée par le joueur, en faire une sorte "d'état" de rencontre. Pensez à un film de John Woo où c'est le bon contre le méchant et tout semble ralentir alors qu'ils se tirent dessus. Donc, quand une "rencontre" commence, activez le ralenti et vous pouvez obtenir des effets intéressants. Des gars qui sautent et des trucs qui ricochent à partir de balles manquées flottant dans les airs, et tout ça. Bien sûr, cela ne fonctionnerait vraiment que pour un jeu 1 contre 1. Vous n'obtiendrez pas l'avantage unilatéral du temps des balles comme dans une partie solo, mais cela pourrait être une expérience de jeu intéressante.

Tetrad
la source
1
Il pourrait éventuellement être étendu à plus de 1 contre 1 en ne ralentissant que les personnes qui pourraient se voir, puis dès que quelqu'un d'autre les verrait, ralentissez-les également. De cette façon, tout le monde est à vitesse normale, jusqu'à ce qu'ils se battent.
George Duckett
Vous pouvez contourner le problème de visée instantanée en limitant la vitesse de rotation - le vrai problème est que dans un système correct, personne d'autre ne devrait être affecté par le nouveau cadre de référence; le devrait seulement voir le joueur en temps de balle accéléré.
Jonathan Dickinson
Ne ralentissez pas tout le monde. Gelez les autres joueurs jusqu'à ce que le temps de la balle soit presque écoulé. Vous souhaitez le chronométrer de telle sorte que lorsque la durée de la puce se termine, les lignes de temps sont resynchronisées à nouveau.
Martin Sojka
C'est la seule réponse à ce jour qui couvre le point pertinent: vous n'accélérez pas ou ne ralentissez pas le temps. Vous ralentissez la vitesse de simulation afin que les joueurs aient plus de temps pour réagir et planifier des mouvements qui, s'ils étaient effectués en temps réel, se révéleraient rapides à contrôler. Pour que cela fonctionne d'un point de vue gameplay, tous les joueurs impliqués (soit en regardant soit en participant à l'action) doivent être ralentis, et tous les joueurs non liés (ceux qui ne sont pas à proximité pour assister au ralentissement) continueront à vitesse normale. Si vous ne ralentissez pas tous ceux qui peuvent voir l'événement, cela aura l'air stupide.
MrCranky
Les jeux vidéo Max Payne utilisent le "bullet-time" comme capacité dans le jeu. Certains des jeux Jedi de Star Wars (Jedi Knight II à coup sûr) ont également "Force Speed", qui vous accélère en ralentissant tout le monde (sauf un autre utilisateur de Force Speed).
KeithS
8

Réflexions générales

C'est un problème qui est mieux décrit en utilisant la relativité générale - prenez par exemple le fait que vous pouvez voir les effets du temps de balle en regardant simplement à travers votre télescope vers un satellite (la cause du fameux neutrino voyageant plus vite que le problème de la lumière) - équations solvables existent dans ces conditions; ce qui signifie que c'est tout à fait possible.

Votre jeu devra être en mesure de gérer des cadres de référence distincts - pour autant que je sache, l'effet net de cela serait («joueur» étant la personne avec le temps de balle actif):

  • Les gens qui voient le joueur les verraient se déplacer extrêmement rapidement.
  • Le joueur verrait les gens se déplacer extrêmement lentement.
  • Le joueur se déplacerait dans le passé / futur en référence à tout le monde.

Heureusement pour vous, cela signifie qu'un joueur en temps de balle a un avantage sur tout le monde; ils ne peuvent pas le viser - mais ce ne serait pas convaincant car la personne moyenne s'attendrait à ne voir aucune différence perceptible lors de l'observation de la dilatation du temps.

Je vous recommande fortement de publier ceci sur la physique (indiquez qu'il s'agit d'un jeu, mais vous avez besoin de réelles connaissances théoriques) et demandez des idées sur la façon dont vous approximeriez l'effet dans une simulation simultanée.

Une solution possible que je chercherais à faire est que le monde rattrape le joueur (au fur et à mesure qu'il évolue vers l'avenir) en faisant en sorte que tout le monde connaisse une quantité progressive (bien inférieure au temps de balle réel) de temps de balle en fonction de loin derrière (dans temps) ils le sont. De cette façon, vous pourriez approximer les différences de temps sans avoir à gérer le stockage de l'état passé, etc. Vous auriez besoin d'un moyen d'expliquer cet effet, le «rebond du temps» ou quelque chose, car ce n'est pas physiquement correct.

Une autre idée consiste à abuser des équations de physique les plus élémentaires ( s = d/t), lorsqu'un joueur passe au point de balle, tout devient plus petit - si vous divisez par deux la taille de tout de son point de vue tout en conservant sa vitesse en fonction de son cadre de référence d'origine, (effectivement le doubler), l'équation sera toujours en équilibre. Les séquences d'entraînement de distorsion dans les films spatiaux utilisent cette dilatation spatiale pour représenter l'effet - les gens ont donc l'habitude de le voir.

Solution réelle

J'ai réfléchi encore plus à cela. Si vous regardez comment fonctionne le système de réseau Steamworks ( quelqu'un a-t-il un lien? ), Le serveur est constamment en avance dans le temps d'un certain montant; et chaque client connaît la trame «suivante» à laquelle il doit s'interpoler.

Disons par exemple que le serveur a 20 ms d'avance sur tous les joueurs. Lorsqu'un joueur entre dans le temps de balle, changez son intervalle de mise à jour à 40 ms (sa simulation s'exécutera à des intervalles de temps de 40 ms et le serveur mettra ses actions en file d'attente 40 ms dans le futur) - ce qui poussera essentiellement vers le futur en référence aux autres joueurs: en plus pour le faire bouger plus vite de leur référence et les faire bouger plus lentement de la sienne. Une fois qu'il quitte le temps de balle, donnez à tous les autres un avantage de 5 ms sur lui afin qu'ils puissent jouer au `` rattrapage '' (c'est votre time rebound, par coïncidence, les joueurs intelligents vont bullet time pendant ces périodes de rattrapage). Cela pourrait sembler un peu mieux si vous mappez une parabole à son pas de temps - cela ralentira, s'arrêtera et accélérera progressivement.

Avertissement: je ne suis pas physicien, mais j'ai une connaissance pratique de la relativité.

Jonathan Dickinson
la source
4

Je voulais ajouter mes 0,02 $, alors que j'implémentais un prototype de mode bullet-time qui fonctionnait dans les jeux multijoueurs pour Heroes Over Europe .

En mode solo, une pression sur un bouton au bon moment ralentirait le temps et ferait un zoom avant sur votre cible. Je ne voulais pas ralentir le temps globalement en multijoueur pour reproduire la fonctionnalité (car le jeu devait prendre en charge 16 joueurs simultanés!), J'ai donc utilisé une méthode "à bulles".

Plus précisément, lorsque le mode balle a été déclenché, une sphère a été créée autour de l'avion cible. Le taux de passage du temps a changé en fonction de la distance au centre de la sphère; le temps s'est dégradé linéairement de sa surface à une valeur minimale quelque part près du centre. Le taux a également changé en fonction de la durée de vie de la sphère et de la durée de la sphère avant de "s'évaporer".

Cela a été synchronisé entre les machines en envoyant un paquet qui a défini une heure de début future pour la bulle; cela a permis à l'effet de rester synchronisé malgré la latence. (De même, lorsque l'effet devait se terminer tôt, un paquet déclarait l'heure à laquelle il devait se terminer.)

Le taux de passage du temps a toujours été défini de manière fonctionnelle: étant donné la définition d'une sphère, l'heure actuelle et une position, il était possible de déterminer la vitesse à laquelle le temps s'écoulait.

Pour que l'effet fonctionne, plusieurs systèmes de jeu ont dû être adaptés à cette définition "fonctionnelle" du temps. Les avions, les balles, les missiles et d'autres effets ont chacun utilisé un individu dtqui a été élaboré en appelant la fonction appropriée. La plupart du travail pour faire fonctionner le prototype a été passé ici.

Le résultat a fonctionné assez bien: un joueur ciblé par le temps des balles ralentirait sensiblement et aurait une (petite) chance de se frayer un chemin hors du réticule de son agresseur et loin d'une grêle de balles au ralenti. Les joueurs à proximité pouvaient voir des avions et des balles s'esquiver au ralenti, mais n'étaient pas affectés autrement.

Notez que le joueur déclenchant a également été ralenti, mais n'était pas strictement désavantagé par cela: ils avaient une vue agrandie de leur cible et pouvaient affecter les tirs à un coup sur leur proie. Un autre joueur pourrait tenter de vous tuer (ou tuer voler!) Dans cet état, mais leur avion (et leurs balles) seraient affectés en entrant dans la bulle, vous donnant le temps de vous échapper.

Malheureusement, même si cela a fonctionné, nous n'avons jamais eu le temps de terminer et de peaufiner la fonctionnalité pour le multijoueur, elle a donc été abandonnée. (Le mode solo a conservé la fonctionnalité, comme "Ace Kill".)

Blair Holloway
la source
2

Pas vraiment le temps des balles, mais ça pourrait être amusant:

Qu'en est-il de quelque chose de similaire à la façon dont Braid fait la chose qui ralentit le temps? C'est-à-dire que plus on se rapproche de la personne qui vit le temps des balles, plus les choses avancent lentement ... et si vous êtes en dehors de la sphère d'influence, le temps s'écoule normalement.

... par exemple, si le joueur A passe le temps des balles, il place une sphère graduée de "temps lent" autour de lui afin qu'il puisse viser correctement, mais pas nécessairement se déplacer plus rapidement - alors le joueur B tirant des balles sur lui devrait surestimer où la balle va frapper, car elle ralentira à mesure qu'elle se rapproche de lui.

Bien que plus j'y pense, moins je pense que cela fonctionnerait, car cela pourrait simplement faire du joueur A une cible facile (car sa tête ralentirait?) - mais il serait intéressant de le voir en 3D de toute façon.

Seb
la source
1
Intéressant en effet, mais si les balles ralentissent à mesure qu'elles se rapprochent du joueur, il devrait pouvoir les esquiver.
joltmode
Oui, mais comme dans Braid, le joueur lui-même ralentit aussi - c'est-à-dire que la vitesse de rotation des joueurs pourrait encore être rapide, donc le blocage ou les boucliers seraient plus faciles à déployer pour éviter les balles, mais le mouvement réel de voler dans les airs pour sortir du chemin des balles serait plus lent ...
Seb
2

Je sais que c'est une vieille question mais j'ai eu du mal à ne pas mentionner le problème avec la plupart des réponses traitant de la relativité

Mis en œuvre avec les effets décrits dans la question, le temps de balle en multijoueur n'est pas possible.

La raison en est le fonctionnement de la relativité; certains d'entre vous l'ont mentionné et comprennent évidemment la relativité, mais le problème est que vos modèles sont mal configurés.

Beaucoup de gens ont utilisé "la référence du joueur A contre le joueur B" dans vos réponses mais malheureusement aucune de ces choses n'existe vraiment. Oui, vous avez des joueurs, peut-être même beaucoup d'entre eux, et oui, ils peuvent contrôler et interagir avec leur monde et avoir leur propre perspective du jeu, mais la perspective n'est pas un point de référence dans le temps: c'est juste un espace XYZ projeté dans le XY avion.

Il n'y a qu'un seul point de référence temporel et c'est le serveur (ou l'hôte). Il n'y a qu'une seule vision de l'état physique du monde et donc un seul point de référence. Ce que les joueurs voient sur leur écran sont des vues graphiques différentes de la même simulation physique.

Faire en sorte qu'un joueur visualise une simulation exécutée à une vitesse et un autre visualise la même simulation à une autre vitesse sans avoir de désynchronisation n'est tout simplement pas possible. Quelque part, quelque chose doit donner.

Tout effort pour avoir plusieurs simulations ou faire fonctionner le serveur avant les clients n'a tout simplement aucun sens. L'effet tel que décrit dans le post ne peut tout simplement pas être fait sans forcer le point de référence unique ou laisser les pensées se désynchroniser et dire aux joueurs que leurs actions ne se sont pas vraiment produites après coup.

Je pense que la meilleure solution est similaire à celle déjà donnée qui est d'avoir un effet de type tresse où votre vitesse est modifiée dans une bulle autour du joueur. Cela étant dit, le joueur ne ralentira pas et la bulle sera toujours positionnée et déplacée avec lui au centre. Cela fait en sorte que le joueur se déplace à pleine vitesse tandis que ses proches se sentent ralentis. Il obtient son avantage de mise sous tension et les gens loin de cette zone ne ressentent aucun effet. Ceux qui sont proches sont ralentis, mais il est évident que quelqu'un utilise la mise sous tension (je suggérerais de mettre en évidence le joueur qui l'utilise pour que les joueurs adverses comprennent pleinement ce qui se passe et pourquoi).

Andrew
la source
1

Ce serait très gênant. Sans même regarder le problème de la dilatation du temps, imaginez que vous êtes le joueur qui vient de passer 4 secondes en balle, tandis que tout le monde dans le jeu a passé 2 secondes en temps réel. Étant donné que le même temps s'est écoulé pour tout le monde en réalité, il vous faudrait en quelque sorte "regagner" ces deux secondes dans le jeu. Donc, à un moment donné, vous devrez "sauter" 2 secondes de temps de jeu, ou passer un peu de temps à courir plus vite que la normale, ou autre chose qui ferait probablement du temps de balle une sorte de perte.

De plus, il y a tout le fait d'avoir à envoyer ce que vous faites à 2 secondes de votre temps dans le temps 1 seconde à tout le monde.

John Calsbeek
la source
1

Lancez des mini événements temporels rapides sur le joueur pour esquiver les balles ou suivre automatiquement les cibles ennemies, tout en rendant les mouvements de votre joueur flous ou "échelonnés" aux autres joueurs (afin qu'ils ne se grattent pas la tête pour savoir pourquoi leurs balles ne sont pas ne frappe pas). Cela semble être la traduction la plus simple et la plus pratique que vous puissiez faire pour le multijoueur.

Toute autre solution implique la modification d'un élément physique du jeu pour un ou plusieurs joueurs qui ne s'applique pas en parallèle pour les autres, j'imagine.

Hamster
la source
0

Ralentissez tout le monde, sauf que le joueur expérimente le temps des balles. Vous pouvez le faire en diminuant simplement la sensibilité de leur souris.

Derek
la source
Et comment cela se traduirait-il par un "gameplay équilibré"? : D
joltmode
Il est équilibré, au lieu d'accélérer le joueur, le monde environnant ralentit. Le joueur aurait le même avantage s'il accélérait, mais cette manière est plus plausible.
Derek
0

Disons que nous avons le joueur A en temps réel et le joueur B en temps réel. Et ils font ce qui suit du point de vue du joueur B:

  • Temps 0s - Joueur A temps de balle activé
  • Temps 2s - Le joueur A tire sur le joueur B
  • Temps 3s - Le joueur B tire sur le joueur A

Du point de vue du joueur A, cela prendra deux fois plus de temps - puisque le monde se déplace plus lentement pour lui:

  • Temps 0s - Joueur A temps de balle activé
  • Temps 4s - Le joueur A tire sur le joueur B
  • Temps 6s - Le joueur B tire sur le joueur A

Enfin, le serveur contient les événements suivants:

  • Temps 0s - Le joueur A active le temps de balle
  • Temps 3s - Le joueur B tire sur le joueur A (B initie cette action pour qu'elle suive sa chronologie)
  • Temps 4s - Le joueur A tire sur le joueur B (A lance cette action)

Nous avons donc deux problèmes initiaux. La première est que A a maintenant 3 secondes de temps de jeu derrière tout le monde. Cela pourrait être un mécanisme de jeu intéressant si vous aviez un concept qui signifiait qu'il devait rembourser cette dette. Imaginez un jeu de tir basé sur une couverture où vous pouvez activer le temps de balle pour traverser un terrain ouvert, mais une fois que vous êtes en sécurité sous couvert, vous devez rester immobile jusqu'à ce que le reste du monde vous rattrape (les trois secondes de temps que vous avez manquées sont rejouées) )

Le deuxième problème est beaucoup plus important. Le serveur doit réorganiser les événements par ordre chronologique pour chaque joueur et déterminer le résultat. Tout d'abord, B tire sur A - cela se produit trois secondes après le début du jeu et A le voit à 6 secondes - aucun problème jusqu'à présent. À 4 secondes, le joueur A tire sur B. Dans la chronologie de B, cela s'est produit il y a deux secondes. Alors, que faisons-nous avec les deux secondes de jeu qui se sont déjà écoulées pour lui, y compris son tir sur A?

Nous pourrions l'annuler - dire essentiellement "Je sais que le joueur B pense qu'il a tiré sur ce type, mais il s'avère qu'il était déjà mort alors supposons que cela ne s'est jamais produit" Ce serait une expérience merdique, très similaire au lag, mais résoudrait le problème .

Nous pourrions faire évangéliser les deux chronologies - utiliser le point de vue des serveurs comme toute la vérité et nous soucier de la chronologie de chaque personne indépendamment. À 3 secondes, B tire sur A et le tue. A 4 secondes, A tire sur B et le tue. Les deux joueurs meurent de tirs qu'ils n'ont pas vus. Cela ne semble pas bon, mais il y a peut-être un bon moyen de le faire après avoir donné à tous les joueurs un bref cours dans le monde fou de la relativité.

Nous pourrions avoir un système pseudo-temps réel - un jeu au tour par tour où vous planifiez d'abord vos mouvements, puis déclenchez un calcul simultané des événements. Une bonne solution qui résout tous les problèmes sauf qu'il ne s'agit pas du type de jeu que vous souhaitez écrire.

Pour faire court, je ne pense pas qu'il existe un bon moyen de mettre en œuvre le temps de balle en le traitant dans le sens classique de l'effet sur la personne qui l'utilise - ils se déplacent plus rapidement, ils voient le monde comme plus lent, tout le monde continue comme d'habitude. Si nous l'inversons et que tout le monde est plongé dans le point de vue du minuteur et se considère comme se déplaçant plus lentement et que ses commandes deviennent lentes, alors tout se passe en synchronisation et il n'y a aucun problème. Mais est-ce vraiment l'heure de balle? Bien que cela puisse ressembler à un observateur extérieur (et dans les rediffusions de match), aucun des participants n'obtiendrait l'effet attendu.

Martin Harris
la source
Cela a été fait et l'effet était réel et vous faisait vous sentir comme un dieu pendant quelques secondes (le spécialiste, max payne 3).
Katu
-1

Non ce n'est pas possible. Imaginez qu'un joueur retourne au ralenti, que verraient les autres joueurs? Vous voudriez qu'ils voient le joueur de temps de balle se déplacer normalement mais avoir des réflexes de foudre, non? Mais malheureusement, tous ceux qui jouent au jeu joueront au jeu en même temps réel. Par conséquent, la seule façon de le faire serait de ralentir tout le jeu, en se débarrassant de tout avantage qu'il apporte car tout le monde serait en temps de balle. De plus, il serait assez ennuyeux de voir le jeu ralentir tout le temps lorsque quelqu'un appuie sur ce bouton.

Il y a des contournements qui auraient pour résultat que les joueurs ont un avantage similaire (celui de pouvoir se déplacer plus rapidement, etc.) en ralentissant par exemple tout le monde et en vous permettant de vous déplacer normalement (puis dans une relecture, vous pouvez les accélérer à la normale et vous réagir rapidement) mais je ne pense pas que ce soit vraiment ce que vous voulez.

SirYakalot
la source
1
Cela a déjà été fait, alors dire que ce n'est pas possible est une erreur flagrante.
zzzzBov
@zzzBov il est littéralement impossible d'implémenter le temps des balles dans un jeu multijoueur dans sa vraie forme. Vous devez d'abord ralentir tout le jeu, puis ralentir le temps réel pour tous les autres joueurs du monde réel. Pensez-y. En guise de solution, vous devez implémenter des éléments de pause / rattrapage, mais sous sa forme réelle, ce n'est pas possible.
SirYakalot
Vous avez raison, la forme la plus vraie de temps de balle où un utilisateur fonctionne à vitesse normale et un autre en temps de balle n'est pas possible, mais OP était après "... [implémentant] un effet de ralenti / temps de balle", qui a été fait avant.
zzzzBov
@zzzBov "Quelque chose comme une illusion pour le joueur qui est actuellement au ralenti. Donc tout le monde le voit" en temps réel ", mais il voit tout ralentir." Cité de la question d'origine. Il demande spécifiquement qu'un utilisateur fonctionne à vitesse normale et un autre en temps de balle. C'est presque mot pour mot ce qu'il a demandé, en fait.
Trevor Powell
Le fait que cela ait déjà été implémenté dans le jeu MP (le spécialiste, Max payne 3 entre autres) il y a des années, rend cette réponse non valable.
Katu
-1

FEAR avait un temps de balle en multijoueur, mais cela s'appliquait à toute l'équipe et cela ralentissait tout le monde de l'autre équipe.

Le temps de balle en multijoueur en temps réel sans ralentir les autres désynchroniserait les clients, le joueur au ralenti réagirait aux événements que les autres joueurs ont fait il y a longtemps alors qu'ils réagiraient aux événements actuels.

Iivok
la source
1
Bien que ce soit une solution; Je n'aime pas ça - la seule personne qui devrait être affectée est le joueur en temps de balle - simplement parce que les satellites vous observent comme se déplaçant plus lentement ne signifie pas que vous vous déplacez plus lentement dans votre propre cadre de référence.
Jonathan Dickinson,
Désolé, mon montage précédent sonnait un peu juvénile. Le «temps de balle en temps réel» sonnait cependant comme une contradiction.
Hamster
-2

Vous devriez peut-être organiser l'équipement nécessaire pour tirer le joueur sur le PC qui a déclenché le temps de balle dans l'espace à des vitesses proches de la vitesse de la lumière.

Cela résoudrait tous vos problèmes, mais pourrait générer une ping / latence plus élevée.

Jake
la source
-3

Eh bien, ce ne serait pas un problème s'ils se déplacent tous plus lentement que d'habitude mais pas trop lentement et que celui qui l'active se déplace plus rapidement comme en submergeant le jeu sous l'eau ou en l'emmenant dans l'espace avec celui qui active le mouvement aussi pacifiquement que jamais.

Aems
la source
1
Il n'y a rien de mal à répondre à de vieilles questions. Cependant, il faut toujours s'efforcer de rendre ses réponses bonnes , et celle-ci n'offre pas vraiment beaucoup de solution complète, ni ne couvre vraiment un terrain qui n'est pas déjà couvert par les réponses existantes.
Josh