|
Bas de page | |
---|---|
Auteur | Sujet : [C++] Reglage du fps pour un jeu 2D |
Publicité | Posté le 02-05-2007 à 12:21:33 |
MagicBuzz | Question : as-tu multi-threadé ton application ?
|
Fred051 | Mon code est composé d'une fonction qui gère les entrées sorties : ReadInput(), d'une fonction qui gère tous les timers, toutes les positions de chaque sprite : UpdateWorld(), et enfin d'un render().
Message édité par Fred051 le 02-05-2007 à 12:59:23 |
MagicBuzz | Moi je ferais des threads.
|
Fred051 | Je vais voir ce que je peux faire avec des threads alors, merci. |
ptitchep | Faire des threads...
--------------- deluser --remove-home ptitchep |
MagicBuzz | évidement, qui dit thread, dit toute la panoplie des instructions qui vont bien pour que le code soit safe.
|
ptitchep | Dans ce cas, est-ce bien utile?
Message édité par ptitchep le 05-05-2007 à 12:05:14 --------------- deluser --remove-home ptitchep |
tbp | La solution la plus simple est de tamponner. Disons qu'on se cantonne au trivial double-buffer, avec 2 états alternés { s0, s1 }, | dénote une execution en //:
|
red faction |
|
Publicité | Posté le 05-05-2007 à 16:46:13 |
tbp | Encore une fois n'avoir qu'un seul état et tenter de garantir sa cohérence tout du long est futile. Non seulement l'approche avec un historique/tamponage des états est plus simple, mais dans le cas courant ou l'affichage se fait à une fréquence bien plus élevée que la mise à jour cela permet naturellement d'interpoler. |
ptitchep |
--------------- deluser --remove-home ptitchep |
bjone Insert booze to continue | absolument pas besoin de threader pour un jeu.
Message édité par bjone le 05-05-2007 à 21:08:10 |
tbp |
|
ptitchep | J'ai trouvé une solution sans thread qui a l'air de bien fonctionner chez moi:
--------------- deluser --remove-home ptitchep |
Fred051 | J'ai trouvé moi aussi une solution, sans thread comme l'a dit bjone. La solution était toute bête : il fallait mesurer comme il l'a dit le temps écoulé entre le render courant et le précédent, et ensuite de multiplier cette valeur par la vitesse que l'on veut. Et cela nous donne la même vitesse sur une machine qui tourne à 500 fps et sur une autre qui tourne à 50 fps. |
ptitchep | oui mais dans ce cas, si l'affichage commence a prendre plus de temps, l'affichage ET les calculs sont effectués moins souvent et les objets avancent par saccades. Cela peut provoquer des problèmes comme par exemple des balles qui traversent les ennemis parce qu'à cause des saccades, ils n'ont jamais été en contact (expérience vécue). --------------- deluser --remove-home ptitchep |
bjone Insert booze to continue | c'est (à peu près) comme ça dans tous les jeux de la création.
Message édité par bjone le 07-05-2007 à 13:22:40 |
MagicBuzz | Le problème de gérer le projectile comme une courbe, c'est que si un élément touchable vient se positionner sur la trajectoire du projectile après son passage, mais avant la fin de la gestion du projectile, tu va gérer un impact qui n'en est pas un. De plus, pour peu que la trajectoire soir une parabole, tu vas rapidement te retouver avec des calculs complexes. Idem si les "cibles" ont des formes complexes : pour améliorer la rapidité, tu sera tenté de gérer des bounding box, ce qui va résulter dans le fait qu'une balle tirer entre les jambes d'un personnage va le toucher, alors qu'elle n'est pas censée le toucher.
Message édité par MagicBuzz le 09-05-2007 à 10:49:35 |
MagicBuzz | (ceci dit, pour un shot'em up, je suis d'accord qu'une architecture multi-threadée peut être le marteau pilon pour ouvrir une cacahuète... m'enfin moi je dis que c'est pas plus mal de partir sur de bonnes bases) |
bjone Insert booze to continue | faut pas tout mélanger; j'ai pas dit de s'arrêter a une bbox, j'ai dit que tu peux te servir d'une bbox comme test hiéarchique pour dégrossir (après tu as toujours les tests au niveau pixels pour de la 2D/poly pour de la 3D).
|
red faction | non les jeux netait pas threadés sauf que:
Message édité par red faction le 09-05-2007 à 23:57:26 |
bjone Insert booze to continue | j'ai pas été voir le source de dn3d.
|
bjone Insert booze to continue | je viens de zieuter: effectivement, la vitesse linéaire et angulaire de la caméra sont vilainement actualisés à l'interruption timer (les vilains).
Message édité par bjone le 10-05-2007 à 00:56:30 |
Publicité | Posté le |
Sujets relatifs | |
---|---|
[C#] [Résolu] Comment communiquer avec une dll c++ | [C] Des accolades "just pour le fun" ? |
la function mail dans PHP - réglage SMTP | [VB?] réglage de la balance audio "wave"? |
Mauvais réglage de l'heure lors de posts de news ! | Reglage terminal sous windows 2000 |
[delphi]Forcer la taille de sa police(reglage "Grande taille" chiant!) | reglage date heure systeme en c++ sous dos |
reglage date heure en c++ sous dos | reglage date heure en c++ dos |
Plus de sujets relatifs à : [C++] Reglage du fps pour un jeu 2D |