Eu tenho desbloqueado a taxa de quadros no MonoGame via:
this.graphics.SynchronizeWithVerticalRetrace = false;
base.IsFixedTimeStep = false;
E usá-lo como base para a eficiência da atualização e desenho do jogo.
Em uma resolução de 240 x 160 sem nada ser desenhado ou atualizado, exceto um contador de quadros, recebo um valor de FPS de 9.000 a 11.000 FPS.
Se eu adicionar todo o meu código novamente, ele cairá para cerca de 1.100 FPS.
Essa é uma boa indicação de que meu código está diminuindo significativamente a GPU (10x) e devo me preocupar? O jogo vai rodar a 60 FPS, então ainda estou bem longe disso, mas em que ponto da taxa de quadros desbloqueada devo me preocupar?
GPU: AMD FirePro W5000 (FireGL V)
monogame
frame-rate
teste
fonte
fonte
Respostas:
Apenas grosseiramente.
Primeiro, o FPS não é uma medida linear . A diferença entre 11k FPS e 9k é extremamente pequena (0,0000201 segundos por quadro). Mas a diferença entre 60 e 2060 FPS (um delta de 2k FPS, o mesmo que existe entre 11k e 9k) é 0,0161 segundos ... muito maior. Portanto, pode ser perigoso como métrica de desempenho simplesmente porque grandes diferenças podem ou não ser tão ruins.
Usar o tempo por período é um pouco mais fácil de raciocinar, mas mesmo assim ainda é uma visão muito ampla da situação. Apenas informa quantos segundos um quadro do jogo leva. Ele não informa o motivo , a menos que você observe um grande aumento no tempo de quadro imediatamente após adicionar ou ativar um recurso específico.
Pode ser um barômetro básico para decidir que é hora de criar perfis mais detalhados. É particularmente ruim usar o FPS para determinar se você está vinculado à CPU ou GPU; A criação de perfil de GPU não é tão fácil quanto medir o tempo na CPU (que é onde provavelmente está o seu tempo e o código de computação do FPS).
Quanto a quando você deveria se preocupar ... bem, você disse que o jogo estava mirando 60 FPS. Se você começar a mergulhar próximo ou abaixo disso, provavelmente precisará começar a pensar com mais cuidado sobre seus problemas de desempenho. Até então, eu me concentrava em fazer tudo funcionar e depois me preocupava em torná-lo rápido .
fonte
Não vejo por que você não pôde usá-lo! Lembre-se de que talvez seja necessário codificar de maneira diferente para explicar as diferenças entre o timestap fixo / variável, portanto, se você planeja corrigi-lo ao liberar, precisará fazer ajustes. Veja este artigo: http://rbwhitaker.wikidot.com/time-steps
Pode ser a CPU também. Eu recomendo executar periodicamente o criador de perfil incorporado do Visual Studio (ou sempre que você vir uma grande queda de taxa de quadros) para encontrar pontos de acesso no seu código.
Obviamente, isso depende do hardware que você está alvejando. Você precisará testar seu código com relação aos computadores com requisitos mínimos mais baixos que deseja oferecer suporte. Se ele rodar pelo menos 60 lá, eu não ficaria muito preocupado.
fonte