Preciso de ajuda para medir o FPS de um script [RESOLVIDO]

1. Preciso de ajuda para medir o FPS de um script [RESOLVIDO]

Ermesson
Satan_666

(usa Kali)

Enviado em 01/03/2022 - 16:40h

Eu estou fazendo um game em shell script, ele não vai demorar muito pra estar acabado
mas eu queria implementar uma função que mede o FPS do jogo e exibe a informação no terminal

como eu poderia fazer isso??


  


2. Re: Precisso de ajuda para medir o FPS de um script

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 01/03/2022 - 18:59h

O FPS é medido conforme a quantidade de updates executado por segundo.
Por exemplo:
Se tu tem um código onde ele desenha na tela e então espera com o sleep por 0.033 segundos, então, tu tem um FPS de 1 / 0.033 ou quase 30 frames por segundo.
0.033 = tempo em segundos
1 = quantidade mínima de frames desenhados em 1 segundo
Pode ser que esse valor varie conforme a frequencia do monitor, já que, precisaria sincronizar manualmente os updates com a frequencia do monitor.
Então se teu monitor tem taxa de updates igual a 60 Hz, será 60 updates por segundo que serão vistos na tela. Mas se teu jogo tem o FPS abaixo ou acima de 60Hz, somente 60 frames serão de fato vistos.

Pra calcular oFPS atual, é preciso saber qual foi o tempo no inicio do loop e o tempo no final do update.
Por exemplo em C com SDL2:
while (1) {
Uint32 tempo_inicial = SDL_GetTicks();//pega o tempo agora, tempo em milissegundos
//aqui vem a lógica do jogo

//depois da lógica, vem o controle de FPS
Uint32 tempo_decorrido = SDL_GetTicks() - tempo_inicial;
//agora verifica se está executando muito rápido o jogo
if (tempo_decorrido < 33) {
//como estamos aqui, é porque o jogo tá rodando muito rápido e vai ocorrer variação no FPS
//essa diferença é a que devemos esperar um pouco
Uint32 diff = 33 - tempo_decorrido;
//agora espera o tempo que faltou para ser 33 ms
SDL_Delay(diff);
}
else {
//faz esperar 1 milissegundo para a cota do processador (pra não executar com 100% de processamento)
SDL_Delay(1);
}
}

SDL_Delay é o mesmo que sleep em shell.
SDL_GetTicks é apenas um número que indica quanto tempo passou desde o inicio do programa, pode ser substituido por uma função ou comando que retorne a quantidade dde tempo em milissegundos que o programa está executando.

Ali onde tem o diff, para saber o FPS atual, basta fazer FPS = 1 / (tempo_decorrido / 1000.0), onde o FPS é uma variável numérica.

Esse é um controle simples de FPS.


3. Re: Precisso de ajuda para medir o FPS de um script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 02/03/2022 - 21:08h

Satan_666 escreveu:

Eu estou fazendo um game em shell script, ele não vai demorar muito pra estar acabado
mas eu queria implementar uma função que mede o FPS do jogo e exibe a informação no terminal

como eu poderia fazer isso??

Segue exemplo com seu 'personagem' de outro tópico...
Caminha da esquerda para a direita.
#!/usr/bin/env bash
printf '\x1bc';

p1='[\_/]';p2='(*º*)';p3=' / \ ';p4='-----';
cols=$(($(tput cols)-5));
ini=${EPOCHREALTIME/,/.};
for ((c=1;c<=${cols};c++));do
printf "\e[1;${c}f%s\e[2;${c}f%s\e[3;${c}f%s\e[4;${c}f%s\n" " $p1" " $p2" " $p3" " $p4";
sleep 0.015625
done

fim=${EPOCHREALTIME/,/.};
awk '{t=($1-$2);m=int(t/60);s=int(t%60);ms=(t-((m*60)+(s)));sub("0","",ms);printf "Tempo: %02d:%02d%s\nFrame: %.6f\n" ,m,s,ms,(t/$3)}' <<< "$fim $ini $cols"



______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



4. Re: Precisso de ajuda para medir o FPS de um script [RESOLVIDO]

Leomar de Oliveira
leoCCB

(usa Slackware)

Enviado em 15/05/2022 - 19:57h

depois manda o jogo aí pra gente ver!! Ou vai ser pra comercializar?



5. Re: Preciso de ajuda para medir o FPS de um script [RESOLVIDO]

Ermesson
Satan_666

(usa Kali)

Enviado em 16/05/2022 - 14:43h


Vai ser só um jogo normal em Shell script, eu vou disponibiliza-lo de graça no github
Obs: Já estou quase terminando ele, agora só falta as fases finais






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts