O que é um "tick" no contexto do desenvolvimento de jogos?

12

Ok, então essa é uma pergunta de nível iniciante, mas eu preciso saber disso. A que se refere o termo "tick" no contexto do desenvolvimento de jogos? É a mesma coisa que FPS? Obrigado!

user3843164
fonte
1
De onde você tirou essa terminologia da BTW? Algumas pessoas chamam isso de tick porque physics engine update frameé muito longo para jogadores casuais se lembrarem / entenderem.
Bálint

Respostas:

18

Um tick é uma unidade de medida do tempo, especificamente se refere a uma única instância de uma ação repetida (geralmente uma ação ampla) em um jogo, ou o período de tempo que a ação consome.

Os carrapatos são repetidos e (principalmente) regulares; o termo vem de um dos sons que um relógio emite ("tick" e "tock").

Normalmente, um tick é uma iteração de algum loop, como o loop lógico do jogo principal. Pode-se dizer, por exemplo, que a lógica do jogo "marca" uma vez em um quadro, ou que "durante o tick, as posições dos personagens são atualizadas".

No entanto, também pode se referir a períodos mais granulares; pode-se dizer que "o tick da IA ​​no jogo é limitado a 5ms do tempo de processamento".

O FPS é uma medida de quantos quadros (geralmente processam quadros) um jogo processa em um segundo. Carrapatos e FPS não estão necessariamente relacionados, no entanto, às vezes, as pessoas chamam uma única execução do loop lógico de jogo de "quadro lógico"; nesse caso, a taxa (lógica) de FPS seria o número de ticks processados ​​por segundo. Isso é particularmente comum em jogos que aplicam taxas de quadros fixas para lógica ou física de jogos por qualquer motivo.


fonte
2

A maioria dos jogos é implementada em um loop. Algo como

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

É uma maneira bastante padrão de fazer as coisas e, embora os elementos de renderização e interface do usuário possam ser manipulados em um thread separado, a lógica do jogo real (pressione w para mover sua nave para a frente) acontece dentro desse tick.

Isso também é chamado de "quadro" e geralmente é chamado de taxa de quadros (não deve ser confundido com o material gráfico). Tick ​​se tornou um sinônimo popular para ajudar a diferenciar os dois.

Como programador, seu objetivo é ter uma taxa de quadro (tick) constante e estável, não importa o quê. Isso mantém as respostas no seu jogo tranqüilas e racionais, ao mesmo tempo em que permite que um modelo (programação, não gráficos) processe as coisas de maneira amigável ao computador. Os tempos de ticks não são constantes entre os jogos e não há número mágico. Alguns jogos têm 100 quadros por segundo, outros 1 tick a cada 3 segundos.

coteyr
fonte
1
É importante observar que nem todos os jogos têm uma taxa de tick estática. Screeps e Eve online suportam taxas variáveis ​​de tick. O Minecraft deve ser uma taxa de escala estável, mas geralmente não a alcança e lida bem com isso. O Dwarf Fortress tem uma taxa de quadros estática e é uma merda quando não consegue acompanhar, mas ainda funciona.
coteyr 28/09/16
Eu acho que você está misturando os termos "frame" e "tick" aqui um pouco demais. Os tiquetaques também podem abranger vários quadros (ou atualizar ciclos).
Tyyppi_77
1

Um "tick" pode se referir a duas coisas diferentes. Pode se referir a uma marca de quadro, como você disse, se todos os gráficos visíveis na tela forem atualizados. No entanto, o termo "tick" também pode se referir a um tick de loop de jogo. Esse tipo de tick é onde seu código é executado. Normalmente, seus ticks estão no contexto de um loop com os mesmos ticks repetidos que continuarão até o jogo parar.

Freddy
fonte
1

Um tick geralmente se refere a uma iteração do loop do jogo na qual toda a lógica é computada, portanto os jogos geralmente têm vários ticks por segundo.

No entanto, muitos jogos executam os gráficos e o loop do jogo no mesmo encadeamento, porque os gráficos geralmente não demoram muito para serem exibidos, para que a lógica seja interrompida, ou vice-versa (embora os desenvolvedores ponham controle em situações como essa, como tomando a diferença de tempo entre o último e o atual quadro e ajustando a taxa de movimento de acordo).

FPS significa F rames P er S econd, assim por muitos jogos, sim, tecnicamente falando, cada quadro é um carrapato.

StrongJoshua
fonte
Para que eu possa usar os dois termos de forma intercambiável?
user3843164
2
Eu não. Eu usaria "FPS" ao me referir aos gráficos e "ticks" quando me referir à lógica, porque alguns jogos, especialmente aqueles com gráficos intensos, tendem a ter dois loops: um para os gráficos e outro para a lógica.
precisa saber é o seguinte
Um carrapato não é um tópico.
@ JoshPetrie Oooh, vejo o meu erro, obrigado por apontar. Está consertado agora.
precisa saber é o seguinte
1
Os jogos geralmente têm vários ticks por segundo. "Muitas vezes", talvez. "Geralmente", não. Jogos de tabuleiro ou jogos de estratégia podem ser marcados apenas quando o usuário faz uma jogada, tanto no sentido "iteração do loop principal" quanto no sentido "render".
Anko