Creando la mia kill cam


15

Ho in programma di creare il mio sistema kill cam per un set di strumenti sandbox. Dopo aver pensato alla meccanica della stessa kill cam, tuttavia, sono abbastanza perso. Sto cercando di ricreare quelli che si vedono comunemente nei giochi call of duty che mostrano, dal punto di vista dell'assassino, l'attuale scena dell'omicidio.

I miei pensieri:

-Non posso solo tenere a mente quando le persone uccidono gli altri perché non saprei quando iniziare il "processo di registrazione". C'è un modo per me di determinare con precisione quando qualcuno sta per uccidere qualcuno.

-La mia unica vera idea finora è quella di avere un duplicato completo di tutto caricato sul lato copiando tutto il movimento dal mondo originale ma con un ritardo di 10 secondi. In questo modo, tutte le kill cam avrebbero una durata di 10 secondi e la telecamera della persona verrebbe spostata nel secondo mondo del loro assassino.

Le mie domande:

Esiste già un modo accettato per farlo? Qualcuno ha qualche buona idea per qualcosa del genere? Grazie se puoi!

Risposte:


10

Memorizza gli ultimi secondi dei dati di movimento degli oggetti dinamici pertinenti .

Questi dati dovrebbero essere abbastanza completi da poter essere utilizzati per ricostruire una scena killcam, se necessario, ma abbastanza incompleti da permettersi di recuperare e archiviare a intervalli abbastanza brevi.

Esempi di cose che potresti voler tenere traccia:

  • In che modo si muove / guarda un giocatore visibile
  • Indica se il killer viene ingrandito sull'ambito della pistola

Cose che probabilmente vorresti ottimizzare:

  • Dati sui giocatori che il killer non può vedere
  • Uscita effettiva dello schermo di chiunque

C'è un grosso problema nella tua risposta, normalmente non puoi predire la morte di nessuno e non puoi nemmeno prevedere chi avrà la prossima uccisione. quindi con l'ottimizzazione dei dati su alcuni giocatori potresti perdere la possibilità di ripetere alcune uccisioni.
Ali1S232,

2
@Gajet Penso che in questo caso, intende eliminare tutti gli oggetti rilevanti e archiviare i dati solo per quelli successivi. In altre parole, vorresti già avere un qualche tipo di meccanismo di archiviazione / aggiornamento per tenere traccia delle posizioni di tutto e delle loro entità, ma per un tempo limitato. Di ', vuoi solo gli ultimi 10 secondi per una kill cam. Avresti solo bisogno di una struttura di dati abbastanza grande da memorizzare gli ultimi 10 secondi e qualsiasi cosa più vecchia di quella verrà sostituita alla fine, come in una coda a doppia estremità.
ChrisC,

Sto solo confermando che la risposta di Ricer è ciò che intendevo. In effetti: quando non puoi predire il futuro, preparati invece. :)
Anko,

1
È importante ricordare che i giochi online in tempo reale non mostrano mai ai giocatori ciò che è realmente accaduto; il gioco fa sempre ipotesi su quale potrebbe essere la verità, ma a causa delle latenze e di altri problemi di rete, i giochi non scopriranno quale fosse la "verità oggettiva" fino a molto tempo dopo, se non del tutto. Quindi, se non disponi di dati "kill cam" disponibili per poter ricreare il punto di vista di qualcun altro, non dovresti assolutamente sentirti male per creare dati plausibili su kill cam in quelle situazioni in cui ne hai bisogno.
Trevor Powell,

0

Non ho idea di come questo sia normalmente implementato, ma potresti fare in modo che ogni proiettile salvi una clip dal momento in cui viene sparata, a quando colpisce un bersaglio. Se le riprese vengono eseguite solo con un hitcan, è possibile calcolare se generare o meno il metraggio di kill cam nello stesso ciclo quando si esegue il hitcan.


0

Puoi salvare la trasformazione di un oggetto ogni due secondi circa. Fallo per tutti gli oggetti dinamici applicabili. Scaglionare il salvataggio in modo tale che ogni fotogramma si stia salvando solo un paio di matrici. risparmia indietro nel tempo come preferisci.

Durante la riproduzione, in realtà si utilizzano queste trasformazioni in un motore di rendering per animare una scena, interpolando tra le trasformazioni in base al tempo per ciascun fotogramma, se necessario.

Non è un duplicato esatto ma molto molto vicino e ti consente di dare al giocatore la possibilità di controllare la videocamera durante la riproduzione in modo che possano scegliere da dove guardare la scena.


c'è un problema con l'archiviazione solo delle matrici di trasformazione, senza salvare altro! per esempio se salvi solo matrici di trasformazione per i giocatori, le animazioni potrebbero andare storte e non potrai vedere quanti danni ha subito il nemico prima di ucciderti e quando ha sparato. c'è un lungo elenco di dettagli che ti mancano usando il tuo metodo che puoi facilmente pensare a loro.
Ali1S232,

Rileggi, salvi le trasformazioni per tutti gli oggetti dinamici appropriati, non solo le matrici per i giocatori. È anche abbastanza facile salvare dati sulla salute o sui punti ferita e anche altri elementi. Il punto è che salvare troppi dati consuma risorse di tempo di gioco, (male). Risparmiate il meno possibile e lasciate che il vostro motore di rendering faccia il massimo del sollevamento per interpolazione durante la riproduzione. È un compromesso ma cosa non lo è?
Steve H,

0

puoi implementare alcune funzionalità di riproduzione nel tuo gioco. usando la funzione replay, killcam è solo un replay riprodotto da un gametime specifico e dal punto di vista di alcuni giocatori. successivamente puoi salvare i replay e lasciare che gli altri rivedano i giochi una volta terminati.

anche la tua idea di eseguire uno stesso gioco con input con ritardo di 10 secondi è un buon approccio se il tuo gioco non consuma un alto potere computazionale.


0

Cosa ne pensi di questo...

Registra solo quando esiste la possibilità di uccidere.

Pensaci dal punto di vista di AIM-BOT. Mirerà / sparerà solo quando è possibile uccidere. Quindi dovresti registrare solo quando un nemico si trova nel raggio di tiro / visibile.


Che dire in situazioni che coinvolgono sparare attraverso un oggetto? Il casting di Ray sarà sicuramente più dispendioso in termini di CPU rispetto ad alcune delle altre idee dichiarate. Buona idea, però, potrei considerarlo come parte di una soluzione.
Freesnöw,

0

Imposta un raggio attorno al giocatore e se un altro giocatore entra nel raggio, inizia la registrazione dello schermo per entrambe le persone. Attendi quindi di vedere se qualcuno viene ucciso. Se è così, allora trovi l'assassino e prendi la loro registrazione e riavvolgi il tempo trascorso dall'uccisione più la lunghezza che vuoi che sia il video e riavvolgi e riproducilo per quello che è stato ucciso. Se nessuno viene ucciso e nessun altro si trova nel raggio attorno al personaggio, cancella o ferma la registrazione. Se il killer viene ingrandito su un cannocchiale, allora lancia un raggio verso la mira e crea un altro raggio di innesco. Se c'è qualcuno, allora registra lo schermo di chiunque si trovi nel raggio in cui punta il personaggio che mira e del personaggio. Se qualcuno muore per la mira del personaggio, allora prendi il tempo trascorso dall'uccisione più la lunghezza che vuoi che sia la camma uccisione e riavvolgi e giochi questo per quello che è stato ucciso. Se eseguono lo zoom indietro, interrompi la registrazione. Questo è un concetto, quindi non l'ho provato.

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.