Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » Modifier la fluidité d'un jeu/programme
Benji_ Hors ligne Membre Points: 59 Défis: 0 Message

Modifier la fluidité d'un jeu/programme

Posté le 21/06/2017 23:20

Bonsoir,

Cela fait un moment que je me pose cette question, mais dans l'add-in Wolfenstein 3D de Kelli
http://www.planet-casio.com/Fr/programmes/programme1967-1-wolfenstein-3d-Kelli-add-in.html

On peut augmenter la vitesse de la clock de la calculatrice et donc la fluidité du jeu, je sais bien que ce jeu n'a pas été programmé en Basic mais comment fait-il? ou existe il une alternative pour fluidifier l'éxecution du code dans une boucle while,...?

Merci D'avance!


Lephenixnoir En ligne Administrateur Points: 24671 Défis: 170 Message

Citer : Posté le 22/06/2017 10:15 | #


C'est une grande question que tu poses là. Il y a énormément de facteurs qui influent sur la vitesse d'exécution d'un programme. Réussir à aller plus vite est toujours un grand problème (souvent appelé optimisation, même si dans certains cas on peut chercher à optimiser autre chose que la vitesse), mais je pense qu'ici on peut citer trois facteurs déterminants.

La vitesse du processeur

C'est ce dont tu parles en évoquant Wolfenstein. En overclockant le processeur, on peut lui faire exécuter des opérations plus rapidement pour gagner en vitesse. En pratique, il ne suffit pas de multiplier la fréquence par 2 pour que l'exécution soit deux fois plus rapide (il y a plein d'autres facteurs limitants comme la vitesse des accès mémoires, celle du bus, etc), mais en poussant l'overclock au « maximum », on arrive à faire tourner la calculatrice environ deux fois plus vite.

Cependant cet overclock a un coût en termes d'énergie : ça consomme beaucoup d'électricité donc les piles s'usent plus vite (voire très vite). En pratique, le choix de cette solution est vue comme un contournement flemmard de la seconde, et on évite au maximum de forcer son utilisation. En utilisant FTune, les utilisateurs peuvent toujours augmenter occasionnellement la vitesse des programmes, mais les add-ins (les seuls à pouvoir contrôler « silencieusement » l'overclock pendant qu'ils s'exécutent) ne le font généralement pas tous seuls.

Si Wolfenstein utilise ou non l'overclock de manière interne est sujet à discussion. Son auteur a poppé de nulle part, posté ce jeu, et est reparti aussi sec (plus personne ne l'a revu à ma connaissance). Ce programme est également assez vieux, si des techniques d'overclock existaient à l'époque alors ce devaient être celles de Revolution-FX, et cette lib est connue pour redémarrer la calculatrice à la fin de l'exécution dans certains cas.

L'optimisation du code

Ce n'est pas forcément évident à première vue, mais il y a des programmes qui sont bien écrits et d'autres qui ne le sont pas. La structure du code et les algorithmes utilisés, particulièrement dans les langages puissants (donc pas le Basic), influencent énormément la vitesse d'exécution. Ainsi la méthode canonique pour optimiser un programme est d'améliorer son code ; généralement c'est fastidieux, mais ça paie.

Le langage utilisé

Wolfenstein n'est, en effet, pas écrit en Basic. Il est écrit en C, et ça fait une grosse différence. Pas parce que c'est du C en tant que tel, mais parce qu'on te vend l'add-in compilé. Si tu ne connais pas la différence, imagine-toi qu'un add-in compilé c'est du code binaire que le processeur sait lire et exécuter, tandis qu'un programme Basic c'est du texte. Pour exécuter un add-in on a juste à laisser le processeur s'occuper du code binaire. Mais le processeur ne sait pas exécuter du Basic ; il y a donc un interpréteur dans la calculatrice (plus ou moins intégré à l'application PRGM), qui est un programme (composé, lui, de binaire parce qu'il faut bien que le processeur travaille à un moment) dont le seul rôle est de lire le code Basic, de le comprendre, et d'effecteur les opérations appropriées.

Pour résumer, il y a une grande différence entre les add-ins et les programmes Basic car :
→ Dans le cas d'un add-in, le processeur exécute l'add-in ;
→ Dans le cas d'un programme Basic, le processeur exécute l'interpréteur qui exécute le programme Basic.

Et bien sûr, c'est plus lent ! L'impressionnant rapport de vitesse entre les add-ins et les programmes Basic vient en grande majorité de là. Les programmes en C sont plus « optimisables » que les programmes Basic (on a plus de contrôle donc on peut faire des modifications plus subtiles et/ou plus précises), donc il n'est pas exclu que Wolfenstein ait surtout exploité la seconde méthode.


Dans tous les cas, pas de moyen magique d'augmenter la vitesse d'une boucle While !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Benji_ Hors ligne Membre Points: 59 Défis: 0 Message

Citer : Posté le 22/06/2017 11:59 | #


Merci de ta réponse Lephenixnoir,
elle m'aura permis de mieux comprendre le fonctionnement de l'overclock et l'optimisation d'un code source.
Lephenixnoir En ligne Administrateur Points: 24671 Défis: 170 Message

Citer : Posté le 22/06/2017 12:03 | #


J'ai oublie de préciser qu'on avait des techniques assez bien développées pour optimiser les programmes Basic. Jette un oeil à la signature de Ne0tux si tu veux voir des jeux Basic quasiment aussi rapides que des add-ins. Et s'il te faut plus d'infos sur ces techniques, cherche sur le forum ou pose une question (précise) pour ton cas particulier.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 22/06/2017 12:22 | #


En pratique, le choix de cette solution est vue comme un contournement flemmard de la seconde, et on évite au maximum de forcer son utilisation.

À ce propos, faut que j'arrive à retrouver l'exemple de quelqu'un qui, lors d'un premier jet de son addin, tournait à ~7-8 fps. Il a alors demandé comment overclocker pour passer aux alentours de 15-16 fps. On lui a répondu qu'il ferai mieux de commencer par optimiser le code, il est monté à ~15 fps sans toucher à l'overclock. Donc ~20-25 avec.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

Citer : Posté le 04/07/2017 23:05 | #


Salut, oui comme dit lephé, l'overclock est une technique à éviter autant que faire ce peut.
Une bonne optimisation du code est la clef.
En basic le plus lent c'est principalement ce qui touche à l'affichage, regarde dans ma signature (juste en dessous) il y a les liens vers le Super DrawStat et le "calcul listique", on n'a pas trouvé plus rapide pour l'instant.

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 96 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd