L’été dernier, j’avais voulu écrire un truc sur Crash Bandicoot, mais c’était tellement creux et vide que j’ai pas réussi.
- Mortal, pas nostalgique
Dojodirect
Des jeux de merde joués par des connards en direct !
L’historique du speed-run de The Legend of Zelda: Ocarina of Time (partie 2)
Ou pourquoi les médaillons sont une vaste arnaque !
La dernière fois, nous avions vu qu’il n’était pas nécessaire d’avoir tous les médaillons des sages pour pouvoir accéder au château de Ganon. Tout simplement parce que le jeu ne vérifie que deux médaillons sur les six.
Et pourquoi donc ? Simplement pour optimiser le programme en lui-même. En effet, un jeu n’est rien d’autre qu’un programme informatique qui ne fait qu’en seule et unique chose : boucler.
En programmation, une boucle est une série d’instructions données à la machine qui se répète indéfiniment ou jusqu’à ce qu’une condition donnée soit remplie. Une console ne fait que ça : exécuter le même bout de programme tous les 1/60ème (ou 1/50eme) de seconde. Pourquoi 1/60ème ou 1/50ème ? Parce que cela correspond à la fréquence de rafraîchissement théorique de l’image (pour les consoles américaines et japonaises en 60Hz et pour les consoles européennes en 50Hz). Tous les 1/60ème de seconde, la console génère ce que l’on appelle une interruption pour signaler au programme qu’elle va afficher ce qu’il y a dans la mémoire vidéo (NDCyrare : cela reste théorique. En pratique Ocarina of Time tourne à environ 15/20 images/secondes, donc les calculs se font entre ces frames, et pas entre chaque rafraîchissement de la TV).
Une nouvelle fois, nous allons prendre un exemple très simple. Imaginons que l’on veuille le comportement suivant : quand on appuie sur Start, le jeu se met en pause (super innovant…). Au tout début de la boucle, on va donc vérifier les entrées (typiquement les touches du clavier qui sont enfoncés ou les boutons qui sont enfoncés). Si le bouton Start est enfoncé, le programme va déclencher une routine qui lancera l’animation montrant le menu de pause. On appelle cela un test. On peut alors décider de ne rien faire jusqu’à ce que l’animation se soit terminé ou de profiter du temps disponible avant l’affichage de l’image pour faire d’autres vérifications (d’autres tests).
Il faut maintenant bien imaginer que la console effectue une quantité de tests absolument gigantesque à chaque frame, tous les 1/60ème de seconde. Le programme qui fait les tests doit donc être très rapide, sinon cela va retarder l’affichage et le jeu va « ramer ».
Cette astuce de programmation permet donc d’optimiser un peu le jeu : au lieu de faire un test qui implique tous les médaillons, on fait un test seulement sur les deux derniers, en partant du principe que le joueur est obligé d’avoir ramassé les précédents.
Du coup, on peut se permettre de zapper une grande portion de la partie adulte du jeu et ce de manière quasi-transparente. Dans le pire des cas, il faut simplement aller récupérer l’arme dans le donjon, mais on peut complètement passer le boss et le médaillon sans se préoccuper. Et cela tombe bien, parce que les premiers temples sont relativement longs.
Ainsi, les premiers speed-runs que j’ai pu voir d’Ocarina of Time arrivait à descendre un peu en dessous des 3h : l’exploitation de quelques bogues dans les donjons, de quelques bogues pour bénéficier de déplacement plus rapides, etc permettant de faire assez rapidement les trois temples de Link enfant et de battre les deux boss nécessaires à l’obtention des médaillons de l’esprit et de l’ombre.
Malheureusement, c’est encore long (c’est toujours trop long). Et que se passerait-il si l’on pouvait se passer du Rubis Goron et du Saphir Zora ? Et si on pouvait simplement de pas rendre visite à l’arbre Mojo ? Nous verrons cela la prochaine fois…
Par Mortal
Le 3 septembre 2012 | Catégories : Editos
Je le couperai au montage…Voir les articles de Mortal
A voir également
Les trucs qu'on a rédigés avec nos petits doigts potelés
Dojodirect
Des jeux de merde joués par des connards en direct !