6Fermer8
BrunniLe 05/07/2008 à 10:46
En fait ta solution GC ça revient à faire du frame based avec du frameskipping, non? En fait j'ai pas envie de ça, puisqu'il me faut choisir un temps T de base et je ne sais pas lequel prendre puisque ça dépend de la fréquence de l'écran (si je prends 60 et que qqn est en 75 ça va saccader, 50 pareil, etc.). Je ne vais pas faire un jeu en réseau, en fait c'est pour du téléphone portable, et comme les framerates sont très variables dans ce domaine, ça me semble une bonne application pour tester le time-based (c'est un choix) smile
En fait je veux juste éviter que si je définis que mon perso peut sauter de 5 blocs il en fasse 6 (triche) ou 4 (jeu impossible) selon le téléphone quoi...
GoldenCrystal (./6) :
Enfin quoi qu'il en soit ce n'est en aucun cas chaotique, c'est justement complètement déterministe, et tu as la garantie qu'avec les mêmes entrées d'évènement (clavier, souris, nombres aléatoires, ...) tu auras toujours exactement les mêmes résultats, même si le PC est un 386 à 10 MHz qui ne fait tourner le jeu qu'à 1 fps.

Il ne le fera pas aussi bien tourner, vu qu'il faudra un nombre impressionnant d'itérations de la boucle pour rattraper le retard, et exécuter 120 fois les calculs est probablement plus lourd que de ne faire qu'une seul fois de plus gros calculs comme ici. Et puis au bout d'un moment le temps entre les frames risque de tendre vers l'infini (imaginons: une frame a pris 100 ms: tu vas ensuite effectuer la boucle 15 fois pour rattraper le retard, mais ça prendra 200 ms, donc tu vas exécuter 30 fois la boucle, ça prendra 350 ms, alors la prochaine fois tu l'exécuteras 50 fois, etc.)
Pollux (./5) :
- vx = vx*0.95 ça ne peut pas marcher, c'est du frame-based : calcule ce qui se passe en frame-based, ça donne vx = vx*0.95^n pour n frames, donc on convertit ça en temps continu et ça donne vx *= exp(-0.05*t)
- modifier directement vy c'est pas un problème, ça correspond à un choc instantané smile

Eh bien.... je serais très intéressé de savoir comment tu as fait cette transformation, mais en cherchant un peu j'ai peur qu'il me manque des bases, je ne connais pas les équations différentielles (mais les dérivées & intégrales qd même, je crois que c'est une base).
De plus, quand devrais-je effectuer cela? Actuellement j'ai:
Modification de ax / ay en fonction des touches
Modification brutale de vy en cas de saut (appui sur la touche)

Calcul du dx, dy (déplacement)
Modification juste après de vx, vy en fonction de l'accélération

Exécution du moteur de collisions

Je pense le faire avec la partie gestion des touches, mais d'un côté pourquoi elle ne pourrait pas aussi être appliquée juste après la modification de la vitesse par l'accélération?
Ce qui me semble bizarre c'est que je ne trouve rien sur le sujet de l'animation time-based sur le net, je dois pas m'y prendre correctement...
Tu as des tutos ou une bonne explication sur le sujet? smile
En fait est-ce que le time-based, c'est bien ce dont je parle là, ou c'est plutôt ce dont parle GoldenCrystal? Parce qu'on dirait que le frame-based n'inclut normalement pas de frameskipping (comme c'est systématiquement le cas pour moi).

Merci bcp en tous cas ^^