Come implementare il "tempo dei proiettili" in una partita multiplayer?


29

Non ho mai visto una tale funzionalità prima, ma dovrebbe fornire un'interessante opportunità di gioco.

Quindi sì, in un ambiente multiplayer / in tempo reale (immagina FPS), come posso implementare un effetto rallentatore / tempo proiettile?

Qualcosa di simile a un'illusione per il giocatore che è attualmente mosso. Quindi tutti lo vedono "in tempo reale", ma vede tutto rallentato.

Aggiornare

Un sidenote: tieni presente che un gioco FPS deve essere bilanciato per essere divertente. Quindi sì, questa funzione del tempo di proiettile deve essere solida, offrendo un piccolo vantaggio al "giocatore", pur non togliendosi dagli altri giocatori.

Inoltre, esiste la possibilità che due giocatori possano attivare il proprio tempo di proiettile contemporaneamente.

Inoltre:

Lo implementerò in futuro, qualunque cosa serva. E l'idea è quella di costruire un motore di gioco completamente nuovo per tutto questo. Se ciò offre nuove opzioni, sono più interessato a sentire le idee.

Nel frattempo, qui con il mio team stiamo pensando anche a questo, quando la nostra teoria verrà elaborata, la condividerò qui.

È possibile? Quindi, la domanda su "è anche possibile" è stata risolta, ora è il momento di trovare la soluzione migliore.

Sto mantenendo la "risposta" fino a quando non viene fuori qualcosa di eccezionalmente buono, come una teoria prototipo con qualcosa di simile allo pseudo codice funzionante.

Cosa dicono fisici e filosofi:

I collegamenti sono per te interessanti, perché gli argomenti sono chiusi.

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

Le condizioni a cui ho pensato quando ho scritto la domanda sul sito di fisica (copiato):

  1. Il giocatore sotto gli effetti del rallentatore ha il vantaggio di compiere azioni più precise (tiro, movimento ecc.), Visto che vede tutto ad un ritmo molto più lento.
  2. Le sue azioni dovrebbero influenzare gli altri giocatori in tempo reale.
  3. I giocatori che guardano il nostro giocatore interessato, non vedono alcuna differenza, tranne che possono sperimentare le azioni che ha fatto (come, il giocatore viene colpito / colpito schiva un razzo).
  4. Quando il giocatore esce da questo effetto, continua semplicemente con lo stesso ritmo del solito. (Se questo non è possibile, allora suppongo che dovrà soffrire fino a quando il tempo non verrà sincronizzato indietro)

Riferimenti sul tempo di proiettile (rallentatore):

Purtroppo, la maggior parte delle implementazioni sono solo per giocatore singolo

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


3
Questo è già stato fatto con successo nel MMORPG The Matrix Online. Hai sperimentato il tempo dei proiettili mentre combatti con gli avversari quando sei entrato in "Interlock" combattendo con loro. Questo è stato fatto con avversari sia PvE che PvP. Tutti gli altri al di fuori di Interlock hanno visto "la velocità in tempo reale". Commentare invece di rispondere perché non ho l'esperienza o la conoscenza per spiegare come hanno fatto, so semplicemente cosa è successo dal punto di vista del giocatore.
FallenAngelEyes

3
Questo era presente anche in FEAR Combat. Nel multiplayer, c'era una modalità di gioco chiamata SloMoDeathmatch. Questo è un gioco gratuito se ricordo bene, quindi se vuoi provarlo scaricalo e vedi se ci sono ancora pochi server.
alextsc,

3
Non penso che affermare che stai aspettando lo pseudocodice aiuterà le risposte. Una volta che il disegno desiderato è sufficientemente solido, il codice dovrebbe essere ovvio.
Tetrad

1
Inoltre, "Non importa quello che serve" puzza di cattiva filosofia di design. Sembra che dovresti farlo solo dopo aver dimostrato (tramite prototipo o un esempio funzionante in un altro gioco) il metodo che intendi utilizzare prima di andare avanti.
Tetrad

4
-1 per "Sto mantenendo la 'risposta' fino a quando non viene fuori qualcosa di eccezionalmente buono, come un prototipo con qualcosa vicino allo pseudo codice funzionante." Non fare il cretino.
Trevor Powell,

Risposte:


22

È stato fatto prima. :) Dai un'occhiata agli specialisti , una mod di emivita che ha due diversi power-up di proiettili.

MODIFICA per includere le informazioni di zzzzbov di seguito

Il modo in cui il tempo di proiettile ha funzionato in "Gli specialisti" dal punto di vista del gameplay è stato che il giocatore poteva ottenere potenziamenti che avrebbero dato un numero limitato di "tempi di proiettile". Se usata, una bolla attorno al giocatore rallenterebbe la sua fisica.

I giocatori lontani si muoverebbero a velocità normale, ma qualsiasi cosa nella bolla (proiettili, giocatori, esplosioni) rallenterebbe. Il giocatore che ha usato il potenziamento si muoverà leggermente più velocemente, permettendo loro di scappare o usare acrobazie per schivare i proiettili.

Chiunque sia intrappolato nella bolla del "proiettile" ha ancora il vantaggio di essere in grado di vedere cosa sta per succedere, ma la differenza di velocità relativa tra un giocatore catturato e i proiettili rimane la stessa, in modo che la capacità di reagire sia praticamente inesistente.


@ Tom IIRC, è open source, quindi dovresti essere in grado di vedere come hanno fatto.
Spencer Rathbun,

Hmm, una ricerca su Google non ha prodotto risultati sul codice sorgente. (oltre alla terribile quantità di informazioni su The Specialists: viene visualizzata anche la fonte). Hai un link o qualcosa del genere?
joltmode

@ Tom avevo pensato che fosse sul loro sito Web, che dovrebbe essere collegato nell'articolo di Wikipedia. In caso contrario, potrebbero averlo rimosso, poiché sono passati al motore HL2 qualche anno fa. Potrebbe essere necessario inviare agli sviluppatori un'e-mail per ottenere l'accesso. Certo, potrei anche essere lavato.
Spencer Rathbun,

Il loro sito Web non funziona neanche ..
joltmode

5
Stavo per aggiungere la stessa risposta fino a quando non ho trovato questa. Il modo in cui il tempo di proiettile ha funzionato in "Gli specialisti" dal punto di vista del gameplay è stato che il giocatore poteva ottenere potenziamenti che avrebbero dato un numero limitato di "tempi di proiettile". Se usata, una bolla attorno al giocatore rallenterebbe la sua fisica. I giocatori lontani si muoverebbero a velocità normale, ma qualsiasi cosa nella bolla (proiettili, giocatori, esplosioni) rallenterebbe. Il giocatore che ha usato il potenziamento si muoverà leggermente più velocemente, permettendo loro di scappare o usare acrobazie per schivare i proiettili.
zzzzBov,

12

Non riesco a pensare a nessun gioco che abbia un tempo di proiettile in single player che lo abbia trasferito con successo al multiplayer in modo significativo. Ci potrebbero essere alcuni di loro che lo hanno risolto accelerando il giocatore che lo utilizza, ma quel tipo di sconfigge il punto.

Il tempo di proiettile esiste perché vuoi far sentire il giocatore un duro. Stai dando al giocatore un vantaggio apparentemente ingiusto attraverso la simulazione della percezione di livello superiore. Il risultato finale di questo è che i giocatori possono mirare mentre fanno cose interessanti come saltare fuori dalla copertura e così via. Se hai appena accelerato il giocatore mentre hanno il tempo di proiettile abilitato, dai loro meno tempo per reagire, il che è l'opposto di quello che vuoi.

In un ambiente multiplayer sincrono, non esiste davvero alcuna soluzione per i "rallentamenti" attivati ​​dall'utente che simulano la sensazione che deriva dall'utilizzarlo in un ambiente a giocatore singolo. Se il tempo stesso è stato rallentato, la percezione di tutti aumenta. Soprattutto in un gioco per PC in cui la mira del mouse è generalmente istantanea, tutti trarrebbero beneficio da obiettivi in ​​movimento più lenti.

Ora, se tu fossi morto su questo, il mio suggerimento sarebbe di, invece di renderlo una funzionalità attivata dal giocatore, renderlo una sorta di "stato" di incontro. Pensa come un film di John Woo in cui è il bravo ragazzo contro il cattivo e tutto sembra rallentare mentre si sparano l'un l'altro. Quindi, quando inizia un "incontro", attiva slo-mo e puoi ottenere alcuni effetti interessanti. Ragazzi che saltano in giro e roba rimbalzante da colpi di proiettile mancati che fluttuano a mezz'aria e tutto il resto. Ovviamente, questo funzionerebbe davvero solo per un gioco 1 su 1. Non otterresti il ​​vantaggio unilaterale del tempo del proiettile come in una partita a giocatore singolo, ma potrebbe essere un'esperienza di gioco interessante.


1
Potrebbe essere esteso a più di 1 contro 1 solo rallentando le persone che potrebbero vedersi, quindi non appena qualcun altro le vedrebbe, anche loro rallenteranno. In questo modo tutti gli altri hanno una velocità normale, fino a quando non entrano in una rissa.
George Duckett,

Potresti aggirare il problema dell'obiettivo istantaneo limitando la velocità di virata - il vero problema è che in un sistema corretto nessun altro dovrebbe essere influenzato dal nuovo quadro di riferimento; dovrebbero solo vedere il giocatore in tempo proiettile essere accelerato.
Jonathan Dickinson,

Non rallentare tutti. Congela gli altri giocatori fino allo scadere del tempo del proiettile. Vuoi cronometrare in modo tale che quando il tempo del proiettile termina, le linee temporali vengono nuovamente sincronizzate.
Martin Sojka,

Questa è l'unica risposta finora che copre il punto rilevante: non stai accelerando o rallentando i tempi. Stai rallentando la velocità di simulazione in modo che i giocatori abbiano più tempo per reagire e pianificare le mosse che, se eseguite in tempo reale, potrebbero essere controllate rapidamente. Per farlo funzionare dal punto di vista del gameplay, tutti i giocatori coinvolti (che guardano o partecipano all'azione) devono essere rallentati e tutti i giocatori non collegati (quelli non vicini per assistere al rallentamento) continueranno a velocità normale. Se non rallenti tutti quelli che riescono a vedere l'evento, sembrerà stupido.
MrCranky,

I videogiochi Max Payne usano il "proiettile" come abilità di gioco. Alcuni giochi Jedi di Star Wars (Jedi Knight II di sicuro) hanno anche "Force Speed", che ti accelera rallentando tutti gli altri (tranne un altro utente Force Speed).
KeithS

8

Pensieri generali

Questo è un problema che è meglio descritto usando la relatività generale - prendiamo ad esempio il fatto che puoi vedere gli effetti del tempo di proiettile semplicemente guardando attraverso il telescopio un satellite (la causa del famigerato neutrino che viaggia più veloce del problema della luce) - equazioni che sono risolvibili esistono in queste condizioni; significa che è completamente possibile.

Il tuo gioco dovrà essere in grado di gestire quadri di riferimento separati - per quanto ne so l'effetto netto di questo sarebbe ('giocatore' è la persona con il tempo di proiettile attivo):

  • Le persone che vedono il giocatore li vedrebbero muoversi molto rapidamente.
  • Il giocatore vedrebbe le persone muoversi molto lentamente.
  • Il giocatore si muoverà nel passato / futuro in riferimento a tutti gli altri.

Fortunatamente per te, questo significa che un giocatore in tempi di proiettile ha un vantaggio su tutti gli altri; non possono mirare a lui - tuttavia non sarebbe convincente perché la persona media non si aspetterebbe di vedere alcuna differenza evidente osservando la dilatazione del tempo.

Consiglio vivamente di postare questo sulla fisica (indica che si tratta di un gioco, ma hai bisogno di reali conoscenze teoriche) e chiedi idee su come approssimare l'effetto in una simulazione simultanea.

Una possibile soluzione che vorrei prendere in considerazione è far sì che il mondo raggiunga il giocatore (mentre si è spostato nel futuro) facendo sperimentare a tutti un ammontare progressivo (molto inferiore al tempo di proiettile effettivo) del tempo di proiettile a seconda di molto indietro (in tempo) lo sono. In questo modo è possibile approssimare le differenze temporali senza realmente occuparsi della memorizzazione dello stato passato ecc. Avresti bisogno di un modo per spiegare questo effetto, il "rimbalzo del tempo" o qualcosa del genere, perché non è fisicamente corretto.

Un'altra idea è quella di abusare delle equazioni fisiche più elementari ( s = d/t), quando un giocatore va nel proiettile tutto diventa più piccolo - se si dimezza la dimensione di tutto dalla sua prospettiva ma si mantiene la stessa velocità secondo il suo quadro di riferimento originale ( raddoppiarlo) l'equazione sarà comunque bilanciata. Le sequenze di curvatura dei film spaziali usano questa dilatazione spaziale per rappresentare l'effetto, quindi le persone sono abituate a vederlo.

Soluzione reale

Ci ho pensato ancora di più. Se si osserva come funziona il sistema di rete Steamworks ( qualcuno ha un collegamento? ) Il server è costantemente in anticipo nel tempo di una certa quantità; e ogni cliente è a conoscenza del frame "successivo" che deve interpolare.

Diciamo ad esempio che il server è 20ms davanti a tutti i giocatori. Quando un giocatore entra nel tempo di proiettile, cambia il suo intervallo di aggiornamento in 40 ms (la sua simulazione verrà eseguita a intervalli di 40 ms e il server metterà in coda le sue azioni 40 ms nel futuro) - che sostanzialmente spingerà nel futuro in riferimento ad altri giocatori: inoltre per farlo muovere più velocemente dal loro riferimento e farli muovere più lentamente dal suo. Una volta che ha lasciato il tempo di proiettile, offri a tutti gli altri un vantaggio di 5ms su di lui in modo che possano giocare a "recupero" (questo è il tuo time rebound, per coincidenza, i giocatori intelligenti puntano il tempo durante questi periodi di recupero). Potrebbe sembrare un po 'meglio se si mappa una parabola al suo passo temporale: questo rallenterà, si fermerà e poi accelererà gradualmente.

Disclaimer: non sono un fisico, ma ho una conoscenza praticabile della relatività.


4

Volevo aggiungere i miei $ 0,02, poiché implementavo un prototipo di modalità bullet-time che funzionava nei giochi multiplayer per Heroes Over Europe .

In modalità giocatore singolo, la pressione di un pulsante al momento giusto rallenta il tempo e aumenta lo zoom sul bersaglio desiderato. Non volevo rallentare a livello globale in multiplayer per replicare la funzione (dato che il gioco doveva supportare 16 giocatori simultanei!), Quindi ho usato un metodo "a bolle".

In particolare, quando è stata attivata la modalità bullet-time, è stata creata una sfera attorno all'aereo bersaglio. Il tasso di passaggio del tempo è cambiato a seconda della distanza dal centro della sfera; il tempo è degradato linearmente dalla sua superficie ad un valore minimo da qualche parte vicino al centro. La velocità cambiò anche in funzione della durata della sfera e della durata della sfera prima che "evaporasse".

Questo è stato sincronizzato tra le macchine inviando un pacchetto che ha definito un orario di inizio futuro per la bolla; questo ha permesso all'effetto di rimanere sincronizzato nonostante la latenza. (Allo stesso modo, quando l'effetto doveva finire presto, un pacchetto avrebbe dichiarato il momento futuro in cui doveva finire.)

La velocità del passare del tempo era sempre definita funzionalmente: data la definizione di una sfera, l'ora corrente e una posizione, era possibile determinare la velocità con cui scorreva il tempo.

Per far funzionare l'effetto, diversi sistemi di gioco dovevano essere adattati a questa definizione "funzionale" di tempo. Aerei, proiettili, missili e altri effetti utilizzavano ciascuno un individuo dtche veniva elaborato chiamando la funzione appropriata. La maggior parte del lavoro per far funzionare il prototipo è stata spesa qui.

Il risultato ha funzionato abbastanza bene: un giocatore preso di mira dal proiettile rallenterebbe notevolmente e avrebbe una (piccola) possibilità di uscire dal mirino del proprio aggressore e allontanarsi da una grandinata di proiettili al rallentatore. I giocatori vicini potevano vedere aerei e proiettili schivare l'un l'altro al rallentatore, ma per il resto non erano interessati.

Nota che anche il giocatore che ha innescato è stato rallentato, ma non è stato fortemente svantaggiato da esso: avevano una vista ingrandita del bersaglio e potevano influenzare le uccisioni con un colpo della preda. Un altro giocatore potrebbe tentare di ucciderti (o uccidere il furto!) In questo stato, ma il loro aereo (e i loro proiettili) verrebbero influenzati quando si entra nella bolla, dandoti il ​​tempo di scappare.

Sfortunatamente, mentre ha funzionato, non abbiamo mai avuto il tempo di completare e perfezionare la funzionalità per il multiplayer, quindi è stato abbandonato. (Il giocatore singolo ha comunque mantenuto la funzione, come "Ace Kill".)


2

Non proprio il tempo di proiettile, ma potrebbe essere divertente:

Che dire di qualcosa di simile al modo in cui Braid fa rallentare il tempo? Vale a dire più vicino alla persona che sta vivendo il tempo del proiettile, le cose più lente vanno ... e se sei al di fuori della sfera di influenza, il tempo scorre normalmente.

... per esempio, se il giocatore A passa il tempo del proiettile, crea una sfera graduale di "tempo lento" attorno a lui in modo che possa mirare correttamente, ma non necessariamente muoversi più velocemente - quindi il giocatore B che spara proiettili contro di lui dovrebbe prevedi troppo dove colpirà il proiettile, poiché rallenterà quanto più si avvicina a lui.

Sebbene, più ci penso, meno penso che funzionerebbe, perché potrebbe solo rendere il Giocatore A un bersaglio facile (come rallenterebbe la sua testa?) - ma sarebbe interessante vederlo comunque in 3D.


1
Interessante davvero, ma se i proiettili rallentano più si avvicinano al giocatore, dovrebbe essere in grado di schivarli.
joltmode

Sì, ma come in Braid, anche il giocatore stesso rallenta - vale a dire che la velocità di rotazione dei giocatori potrebbe essere ancora veloce, quindi i blocchi o gli scudi sarebbero più facili da distribuire per evitare proiettili, ma il movimento effettivo di volare in aria per uscire del modo in cui i proiettili sarebbero più lenti ...
Seb

2

So che questa è una vecchia domanda, ma ho avuto difficoltà a non menzionare il problema con la maggior parte delle risposte relative alla relatività

Implementato con gli effetti descritti nella domanda, il tempo di proiettile in multiplayer non è possibile.

Il motivo per cui è come funziona la relatività; alcuni di voi qui lo hanno menzionato e ovviamente comprendono la relatività, ma il problema è che i vostri modelli sono impostati in modo errato.

Molte persone hanno usato "Il riferimento del giocatore A contro il giocatore B" nelle tue risposte, ma purtroppo nessuna di queste cose esiste davvero. Sì, hai giocatori, forse anche molti di loro, e sì, possono controllare e interagire con il loro mondo e avere la propria prospettiva del gioco, ma la prospettiva non è un punto di riferimento nel tempo: è solo uno spazio XYZ proiettato nell'XY aereo.

Esiste un solo punto di riferimento temporale e questo è il server (o host). C'è solo una visione dello stato fisico del mondo e quindi solo un punto di riferimento. Ciò che i giocatori vedono sul loro schermo sono diverse viste grafiche della stessa simulazione fisica.

Fare in modo che un giocatore visualizzi una simulazione eseguita a una velocità e un'altra che visualizzi la stessa simulazione a un'altra velocità e non abbia una desincronizzazione, semplicemente non è possibile. Da qualche parte, qualcosa deve dare.

Qualunque sforzo per avere più simulazioni o far funzionare il server prima dei client non ha senso. L'effetto come descritto nel post non può essere fatto senza forzare il singolo punto di riferimento o lasciare che i pensieri si disinclinino e dire ai giocatori che le loro azioni non sono realmente avvenute dopo il fatto.

Penso che la soluzione migliore sia simile a quella già data che è quella di avere un effetto simile a una treccia in cui la tua velocità viene cambiata in una bolla attorno al giocatore. Detto questo, il giocatore non rallenterebbe e la bolla sarebbe sempre posizionata e spostata con lui al centro. Questo fa sì che il giocatore si muova a tutta velocità mentre quelli più vicini a lui si sentono rallentati. Ottiene il suo vantaggio di potenziamento e le persone lontane da quella zona non ne sentono l'effetto. Coloro che sono vicini vengono rallentati ma sarebbe ovvio che qualcuno sta usando il potenziamento (suggerirei di evidenziare il giocatore in qualche modo chi lo sta usando in modo che i giocatori avversari comprendano appieno cosa sta succedendo e perché).


1

Sarebbe molto imbarazzante. Senza nemmeno guardare al problema della dilatazione del tempo, immagina di essere il giocatore che ha appena trascorso 4 secondi nel proiettile, mentre tutti gli altri giocatori hanno trascorso 2 secondi in tempo reale. Dato che lo stesso tempo è passato per tutti nella realtà, dovresti "recuperare" quei due secondi di gioco in qualche modo. Quindi ad un certo punto dovresti "saltare" 2 secondi di tempo di gioco, o passare un po 'di tempo a correre più veloce del normale, o qualcos'altro che probabilmente renderebbe il tempo del proiettile una perdita.

Inoltre, c'è di tutto sul dover inviare ciò che fai a 2 secondi nel tempo indietro nel tempo di 1 secondo a tutti gli altri.


1

Lancia mini rapidi eventi simili al tempo al giocatore per schivare i proiettili o rintracciare automaticamente i nemici, mentre rende i movimenti del tuo giocatore sfocati o "gradualmente" agli altri giocatori (in modo che non si grattino la testa sul perché i loro proiettili non sono colpire). Sembra la traduzione più semplice e pratica che potresti fare per il multiplayer.

Qualsiasi altra soluzione prevede che alcuni elementi fisici del gioco vengano cambiati per uno o più giocatori che non si applicano in parallelo per gli altri, immagino.


0

Basta rallentare tutti gli altri eseguendo il giocatore sperimentando tempo proiettile. Puoi farlo semplicemente diminuendo la sensibilità del mouse.


E come si tradurrebbe in "gameplay equilibrato"? : D
joltmode

È bilanciato, anziché accelerare il giocatore, il mondo circostante rallenta. Il giocatore avrebbe lo stesso vantaggio se accelerasse, ma in questo modo è più plausibile.
Derek,

0

Supponiamo di avere il giocatore A in tempo di proiettile e il giocatore B in tempo reale. E fanno quanto segue dal punto di vista del giocatore B:

  • Tempo 0 s - Giocatore Un tempo proiettile attivato
  • Tempo 2s - Il giocatore A spara al giocatore B
  • Tempo 3s - Il giocatore B spara al giocatore A

Ora dal punto di vista del giocatore A ci vorrà il doppio del tempo - dal momento che il mondo si sta muovendo più lentamente per lui:

  • Tempo 0 s - Giocatore Un tempo proiettile attivato
  • Tempo 4s - Il giocatore A spara al giocatore B
  • Tempo 6s - Il giocatore B spara al giocatore A

Alla fine il server ha i seguenti eventi:

  • Tempo 0 s - Il giocatore A attiva il tempo di proiettile
  • Tempo 3s - Il giocatore B spara al giocatore A (B inizia questa azione in modo che segua la sua linea temporale)
  • Tempo 4s - Il giocatore A tira sul giocatore B (A avvia questa azione)

Quindi, abbiamo due problemi iniziali. Il primo è che A ora ha 3 secondi di tempo di gioco dietro tutti gli altri. Questo potrebbe essere un meccanico di gioco interessante se avessi un concetto che significava che avrebbe dovuto rimborsare questo debito. Immagina uno sparatutto basato su una copertura in cui puoi attivare il tempo di proiettile per rompere su un terreno aperto, ma una volta che sei al sicuro sotto copertura devi stare fermo fino a quando il resto del mondo ti raggiunge (i tre secondi di tempo che hai perso viene ripetuto )

Il secondo problema è molto più grande. Il server deve riorganizzare gli eventi in ordine cronologico per ciascun giocatore e capire il risultato. Innanzitutto B spara ad A - questo accade per tre secondi nel gioco e A lo vede a 6 secondi - finora nessun problema. A 4 secondi il giocatore A spara a B. Nella sequenza temporale di B questo è successo due secondi fa. Quindi cosa facciamo con i due secondi di gioco che sono già passati per lui, incluso il suo tiro ad A?

Potremmo annullarlo - in pratica dire "So che il giocatore B pensa di aver sparato a quel ragazzo, ma si scopre che era già morto, quindi facciamo finta che non sia mai successo" Sarebbe un'esperienza scadente, molto simile al ritardo, ma risolverebbe il problema .

Potremmo rendere evangeliche entrambe le linee temporali: utilizzare il punto di vista dei server come tutta la verità e preoccuparsi della linea temporale di ciascuna persona in modo indipendente. A 3 secondi B spara ad A e lo uccide. A 4 secondi A spara a B e lo uccide. Entrambi i giocatori muoiono per colpi che non hanno visto. Non suona bene, ma forse c'è un buon modo per farlo dopo aver dato a tutti i giocatori un breve corso nel folle mondo della relatività.

Potremmo avere un sistema pseudo-realtime - un gioco a turni in cui pianifichi prima le tue mosse e poi inneschi un calcolo simultaneo di eventi. Una buona soluzione che risolve tutti i problemi oltre a non essere il tipo di gioco che si desidera scrivere.

Per farla breve non credo ci sia un buon modo per implementare bullet time trattandolo in senso classico con un effetto sulla persona che lo utilizza - si muovono più velocemente, essi vedono il mondo come più lento, tutti gli altri continua normalmente. Se lo invertiamo e tutti gli altri vengono spinti dal punto di vista del proiettile e vedono se stessi muoversi più lentamente e i loro controlli diventano lenti, allora tutto accade in sincronia e non ci sono problemi. Ma è davvero il momento dei proiettili? Anche se potrebbe sembrare simile a un osservatore esterno (e nei replay delle partite) nessuno dei partecipanti otterrebbe l'effetto che si aspettano.


È stato fatto e l'effetto è stato reale e ti ha fatto sentire un dio per alcuni secondi (lo specialista, max payne 3).
Katu,

-1

No non è possibile. Immagina che un giocatore passi al rallentatore, cosa vedrebbero gli altri giocatori? Vorresti che vedessero il giocatore del tempo proiettile muoversi normalmente ma con riflessi fulmini, giusto? Ma sfortunatamente tutti i giocatori giocheranno allo stesso tempo in tempo reale. Pertanto, l'unico modo per farlo sarebbe quello di rallentare l'intero gioco, eliminando ogni vantaggio che porta come tutti sarebbero in tempo di proiettile. Inoltre sarebbe abbastanza fastidioso che il gioco rallenti continuamente quando qualcuno preme quel pulsante.

Ci sono soluzioni alternative che porterebbero i giocatori ad avere un vantaggio simile (quello di essere in grado di muoversi più velocemente ecc.) Ad esempio rallentando tutti ELSE e lasciandoti muovere normalmente (quindi in un replay potresti velocizzarli alla normalità e avresti reagire velocemente) ma non credo sia proprio quello che vuoi.


1
È stato fatto prima, quindi dire che non è possibile è un errore evidente.
zzzzBov,

@zzzBov è letteralmente impossibile implementare il tempo di proiettile in una partita multiplayer nella sua vera forma. Dovresti prima rallentare l'intero gioco, quindi rallentare il tempo effettivo per tutti gli altri giocatori nel mondo reale. Basta pensarci. Per ovviare a questo problema, è necessario implementare alcuni elementi di pausa / recupero, ma nella sua forma reale non è possibile.
SirYakalot,

Hai ragione, la forma più vera di tempo di proiettile in cui un utente corre a velocità normale e un altro in tempo di proiettile non è possibile, tuttavia OP è stato dopo "... [implementando] un effetto rallentatore / tempo di proiettile", che è stato fatto prima.
zzzzBov

@zzzBov "Qualcosa di simile a un'illusione per il giocatore che è attualmente mosso. Quindi tutti lo vedono" in tempo reale ", ma vede tutto rallentato." Citato dalla domanda originale. Chiede specificamente un utente che corre a velocità normale e un altro a tempo di proiettile. È quasi parola per parola quello che ha chiesto, in effetti.
Trevor Powell,

Il fatto che questo sia già stato implementato in MP-game (lo specialista, Max payne 3 tra gli altri) anni fa, rende questa risposta non valida.
Katu,

-1

La PAURA ha avuto un tempo di proiettile in multiplayer, ma si è applicato a tutta la squadra e ha rallentato tutti quelli dell'altra squadra.

Il tempo dei proiettili nel multiplayer in tempo reale senza realmente rallentare gli altri avrebbe desincronizzato i clienti, il giocatore al rallentatore avrebbe reagito agli eventi degli altri giocatori molto tempo fa mentre avrebbero reagito agli eventi attuali.


1
Mentre è una soluzione; Non mi piace - l'unica persona che dovrebbe essere colpita è il giocatore nel tempo di proiettile - solo perché i satelliti ti osservano mentre ti muovi più lentamente non significa che ti muovi più lentamente nel tuo quadro di riferimento.
Jonathan Dickinson,

Spiacenti, la mia modifica precedente sembrava un po 'giovanile. Il "tempo di proiettile in tempo reale" sembrava però una contraddizione.
Criceto

-2

Forse dovresti organizzare l'equipaggiamento necessario per sparare al giocatore sul PC che ha innescato il tempo di proiettile nello spazio a velocità della luce vicine.

Ciò risolverebbe tutti i tuoi problemi ma potrebbe generare ping / latenza più elevati.


-3

beh, non sarebbe un problema se si muovono tutti più lentamente del solito ma non troppo lentamente e chi lo attiva riesce a muoversi più velocemente come immergere l'intero gioco sott'acqua o portarlo nello spazio esterno con quello che attiva lo spostamento più pacificamente che mai


1
Non c'è niente di sbagliato nel rispondere a vecchie domande. Tuttavia, si dovrebbe ancora sforzarsi di rendere buone le proprie risposte , e questo non offre molto in termini di soluzione completa, né copre davvero terreni che non sono già coperti dalle risposte esistenti.
Josh,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.