Ok, questa è una domanda a livello di principiante, ma devo saperlo, a cosa si riferisce il termine "tick" nel contesto dello sviluppo del gioco? È la stessa cosa di FPS? Grazie!
Ok, questa è una domanda a livello di principiante, ma devo saperlo, a cosa si riferisce il termine "tick" nel contesto dello sviluppo del gioco? È la stessa cosa di FPS? Grazie!
Risposte:
Un segno di spunta è un'unità di misura per il tempo, in particolare si riferisce a una singola istanza di un'azione ripetuta (di solito un'azione generica) in un gioco o al periodo di tempo che l'azione consuma.
Le zecche sono ripetute e (principalmente) regolari; il termine deriva da uno dei suoni emessi da un orologio ("tick" e "tock").
In genere un segno di spunta è un'iterazione di alcuni loop, come il loop logico del gioco principale. Si può dire, ad esempio, che la logica di gioco "ticchetta" una volta un fotogramma o che "durante il tick, le posizioni dei personaggi vengono aggiornate".
Tuttavia può anche riferirsi a periodi più granulari; si può dire che "il tick AI nel gioco è limitato a 5ms di tempo di elaborazione".
FPS è una misura di quanti fotogrammi (di solito rendono fotogrammi) un gioco elabora in un secondo. Le tick e gli FPS non sono necessariamente correlati, tuttavia a volte le persone chiameranno una singola esecuzione del loop della logica di gioco un "frame logico", nel qual caso la frequenza (logica) di FPS sarebbe il numero di tick elaborati al secondo. Ciò è particolarmente comune per i giochi che applicano frame rate fissi per la logica o la fisica del gioco per qualsiasi motivo.
La maggior parte dei giochi sono implementati in un ciclo. Qualcosa di simile a
def main
setup(a, bunch, of, stuff)
load(a, bunch, of, stuff)
while true do {
// <- A tick starts here
read(a, bunch, of, inputs)
call(a, bunch, of, stuff)
do(a, bunch, of, stuff)
update(a, bunch, of, stuff)
// <- A tick ends here
}
clean(a, bunch, of, stuff)
save(a, bunch, of, stuff)
end
È un modo abbastanza standard di fare le cose, e mentre il rendering e gli elementi dell'interfaccia utente possono essere gestiti in un thread separato, la logica di gioco effettiva (premi w sposta la tua nave in avanti), avviene all'interno di questo segno di spunta.
Questo è anche chiamato "frame" e di solito viene definito come frame rate (da non confondere con la grafica). Tick è diventato un sinonimo popolare per aiutare a differenziare i due.
Come programmatore il tuo obiettivo è quello di avere un frame rate (tick) costante e stabile, non importa quale. Ciò mantiene le risposte nel tuo gioco fluide e razionali, mentre allo stesso tempo consente a un modello (programmazione non grafica) di elaborare le cose in modo amichevole per il computer. I tempi di tick non sono costanti tra i giochi e non esiste un numero magico. Alcuni giochi sono 100 frame al secondo, altri 1 tick ogni 3 secondi.
Un "segno di spunta" può riferirsi a due cose diverse. Potrebbe riferirsi a un segno di spunta sulla cornice, come hai detto, se tutta la grafica visibile sullo schermo viene aggiornata. Tuttavia, il termine "tick" può anche riferirsi a un tick di loop di gioco. Quel tipo di tick è dove viene eseguito il codice. Di solito i tuoi tick sono in un contesto di un loop degli stessi tick ripetuti che continueranno fino a quando il gioco si ferma.
Un tick in genere si riferisce a un'iterazione del loop di gioco in cui viene calcolata tutta la logica, quindi i giochi generalmente hanno più tick al secondo.
Tuttavia, molti giochi eseguono sia la grafica che il loop di gioco sullo stesso thread perché la grafica di solito non impiega molto tempo a essere visualizzata in modo che la logica venga interrotta, o viceversa (anche se gli sviluppatori mettono in atto controlli per situazioni del genere, come prendendo la differenza di tempo tra l'ultimo e l'attuale fotogramma e regolando di conseguenza la velocità di movimento).
FPS sta per F rames P er S econd, quindi per molti giochi, sì, tecnicamente parlando, ogni frame ha un segno di spunta.
physics engine update frame
è troppo lungo per essere ricordato / compreso dai giocatori occasionali.