1761Fermer1763
GoldenCrystalLe 25/11/2010 à 22:31
iwannabeamaki (./1749) :
Maintenant regardons avec un autre point de vue.
J'implémente un jeu en fixed timestep, et je choisis un intervalle de temps de 20ms. Me voilà avec un jeu limité à 50fps, puisque même si ma machine est capable d'en calculer plus elle ne va pas me les afficher […]
Non mais pourquoi tu irais choisir un FPS aussi bas ?
Evidemment, le moteur physique doit tourner à une fréquence supérieure ou égale à la fréquence de rafraîchissement de l'écran. De nos jours y'a quasiment plus aucun PC qui ne rafraichisse plus vite que 60Hz, et le maximum était de 120Hz… Si tu choisis 120Hz pour le moteur physique, tu es certain que tu auras toujours au moins 1 cycle de physique exécuté par image affichée à l'écran (enfin, jusqu'à ce qu'on invente le cerveau bionique dont les délais synaptiques sont quasi nuls, et qui nous permettront de jouer avec des écrans à 500 Hz trioui)
Mais ce n'est pas le pire. Supposons maintenant que je considère que 50fps c'est trop peu (et cette considération est tout à fait légitime), donc je choisis un intervalle de temps de 5ms.[…]
Faut bien choisir ton intervalle évidemment cheeky
Je suggère 120Hz mais ça peut en effet être un peu couteux selon ce que tu dois simuler.
En fait tu dois choisir la fréquence en fonction du type de jeu (si c'est un jeu rapide, la fréquence doit être plus élevée (≥ 120Hz), mais si c'est un jeu lent , tu peux viser moins (60Hz))
Dans un jeu un peu sérieux, recalculer 10 fois de suite toute ma scène est loin d'être une opération négligeable, j'aurais même tendance à dire que c'est même complètement délirant.
Si tu fais un trop long saut, tu risques de traverser des objets sans collisions pas vrai ?
Donc soit tu vas devoir faire des équations complexes pour évaluer les collisions.
Et là le plus simple c'est en fixed timestep, ou une collision de volume en mouvement est la même chose qu'une collision de volumes statiques. (si tu as bien choisi tes vitesses et ton intervalles de temps)
Au final la simplification des calculs fait que les 10 itérations peuvent être moins couteuses (et au plus aussi couteuses) qu'une seule itération variable.
En ce qui concerne l'histoire de précision, il faut aussi noter quelque chose d'important. Premièrement, à moins de faire n'importe quoi avec les calculs, je vais rester beaucoup plus près de la courbe verte de GC que de la courbe violette.
Tu ne peux pas le garantir avec un intervalle variable. Suppose que le rendu d'une trame soit délayé de 15T (T = durée normale d'une trame) parce que un programme de merde vient de swapper a mort sur ton PC, il se passe quoi dans ton moteur fixe ? Les conséquences, c'est que ton personnage va rater la corniche que tu visais en sautant (parce que la distance avait été ajustée précisément dans le jeu) et t'écraser au sol comme une merde.
Le fixed timestep me permet de retrouver exactement les mêmes résultats de calculs, mais qui va s'amuser à tester, je ne sais pas, par exemple que la position d'un objet est égale à une constante ?
Ce qui compte surtout (mais je me répète) c'est que la précision de tes calculs est garantie. On parle même pas d'exactitude. Car les calculs ne seront jamais exacts.
En fait pour l'exemple que j'ai donné (mais la fréquence est de 100Hz pour le coup, donc la précision est déjà très bonne en principe) tu verrais que les différences sont loin de la 8e décimale, et beaucoup plus proches de la 3e décimale après 1 seconde. (C'est assez difficile à quantifier car il faut que les intervalles soient de durée quasi identique à lé base)

En fait je me permet de te rapeller ce que j'ai écrit ici:
GoldenCrystal (./1748) :
il y a aussi la possibilité de faire des modèles hybrides. Par exemple quand tu fais tourner ton moteur physique à 30 FPS, et que ton écran rafraîchit entre 60 et 85 FPS… En général tu aimerais bien que le jeu en profite.
Je pense que ce n'est pas la peine de détailler (et en plus c'est bien loin des préoccupations de Folco à mon avis ^^) mais au pire ça peut s'arranger tongue
Bref, je ne pense pas qu'il soit utile de faire un dessin ^^
Siiii ! (En fait non tongue)

aze > Heu ouais, surtout si ton serveur n'a pas de rendu graphique cheeky
Mais même si il en avait un en fait peu importe la méthode de synchronisation qu'il utilise. Le truc c'est juste que c'est difficile de synchroniser des clients dont les référentiels de temps sont totalement différents non constants, et aléatoires. cheeky