Che cos'è un "segno di spunta" nel contesto dello sviluppo del gioco?


12

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!


1
Dove hai preso questa terminologia da BTW? Alcune persone lo chiamano semplicemente tick perché physics engine update frameè troppo lungo per essere ricordato / compreso dai giocatori occasionali.
Bálint,

Risposte:


18

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.


2

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.


1
È importante notare che non tutti i giochi hanno una frequenza di tick statica. Screeps ed Eve online supportano entrambi tassi di tick variabili. Minecraft dovrebbe essere un tick rate stabile ma di solito non lo raggiunge e lo gestisce bene. Dwarf Fortress ha un frame rate statico e fa schifo quando non riesce a tenere il passo, ma funziona ancora.
Coteyr,

Penso che tu stia mescolando un po 'troppo i termini "frame" e "tick". Le zecche possono anche estendersi su più frame (o cicli di aggiornamento).
Tyyppi_77,

1

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.


1

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.


Quindi posso usare entrambi i termini in modo intercambiabile?
user3843164

2
Non lo farei. Userei "FPS" quando mi riferisco alla grafica, e "tick" quando mi riferisco alla logica, perché alcuni giochi, specialmente quelli con una grafica intensa, tendono ad avere due loop: uno per la grafica e uno per la logica.
StrongJoshua,

Un segno di spunta non è un thread.

@JoshPetrie Oooh, vedo il mio errore, grazie per averlo segnalato. Ora è riparato.
StrongJoshua,

1
I giochi hanno generalmente più tick al secondo. "Spesso", forse. "Generalmente", no. I giochi da tavolo o di strategia possono spuntare solo quando l'utente fa una mossa, sia nel senso "iterazione del ciclo principale" che nel senso "rendering".
Anko,
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.