Sujet n°12368
Posté par Astox le 30 Jan - 01:58 (2013)
Titre : [Script-Résolue]Detection du fps
Ceci est une question qui est certes un peu bête mais bon ma documentation étant en grande partie en japonnais ...
J'ai besoin d'une méthode qui me permette d'avoir une gestion assez précise du temps ( une sorte de chronomètre en gros). Le jeu gère le temps en frame si je ne me trompe pas. Or le jeu peut tourner a 20 ou 40 fps selon la puissance du processeur (d'après le manuel de RMXP traduit). Je me suis donc dis que pour avoir une seconde, il suffisait d'avoir 20 ou 40 frames. J'ai donc écrit un truc du genre :

Code:

@frame += 1

if @frame > #Problème ici, comment savoir le fps??
@nb_seconde += 1
@frame = 0
end

if @nb_seconde > 60
@nb_minutes +=1
@nb_seconde =0
end


Je ne peut pas me permettre que le chronomètre aille 2 fois plus vite ou plus lentement selon le processeur tout le programme dépend de se bout de code ridicule.
Le problème peux sembler assez basique mais la je suis vraiment bloquer étant donné que la boucle s'exécute à la vitesse d'une frame (et non d'une seconde)
Je cherche juste un moyen d'extraire (ou de calculer) le taux de rafraîchissement.
Merci d'avance.

Posté par Fudo Fuyouki le 30 Jan - 12:55 (2013)
J'ai pas tout comprit mais

Pour savoir le fps, tu peut tout simplement tester, tu met une valeur, tu testes ton jeu et si ça te convient pas, tu augmente/diminue la valeur

(Pour info, 20 frames = 1 secondes Clin d'œil foireux )

Posté par Nuri Yuri le 30 Jan - 16:25 (2013)
La boucle de jeu tourne à 40fps (40Hz), l'affichage est à 20fps ou 40fps selon les paramètres du RGSS (F1).
Pour obtenir le nombre de frame par secodes c'est Graphics.frame_rate (retourne 40 normalement), et le nombre de frame écoulée depuis un certain temps Graphics.frame_count.
Si tu veux mesurer le temps réel il faut utiliser la classe Time, exemple :
Code:
Graphics.frame_rate=40
a=Time.new
Graphics.update
p Time.new-a #Affiche 1/40 soit 0.025
Graphics.frame_rate=60
a=Time.new
Graphics.update
p Time.new-a #0.015