Peut-être est-ce le cadran « indicateur de passage du temps » dessiné pour le précédent billet qui m'a fait penser à cette anecdote…

Quand j'avais encore du temps pour mener à bien d'ambitieux projets personnels de développement de logiciels, j'avais mis au point un environnement de simulation relativement générique, avec dans l'idée de m'en servir pour le développement de jeux vidéo réalistes. On pouvait y introduire des objets tridimensionnels et, surtout, les doter de comportements et les interconnecter. Par exemple, le monde virtuel pouvait contenir un objet interrupteur (comportement) commandant la force de gravité (connexion), ainsi qu'une balle soumise à cette force et à la force de réaction du sol (comportements). Dès que l'on commandait l'interrupteur, le balle tombait puis rebondissait. Chacun de ces éléments est trivial à programmer séparément mais c'est la façon dont cet univers virtuel était structuré qui était assez jolie. La façon dont tout s'imbriquait. Rien n'était prévu d'emblée mais il était prévu que le champ des possibles fût immense. C'était conçu comme un terrain de jeu virtuel.

Je m'étais tellement attaché à ne développer qu'une façon de structurer les choses sans présupposer de la nature de ces choses que même la notion de passage du temps était absente des fondations de l'environnement de simulation. Elle y était introduite sous la forme d'un objet « base de temps » qui « vivait » dans le monde virtuel comme n'importe quel autre objet simulé. On connectait la base de temps à tout ce qui avait besoin de temps, comme l'animation d'un objet soumis à des forces, telle la balle du paragraphe précédent.

Juste pour rigoler (on a les distractions qu'on peut), j'essayai un jour de faire varier le passage du temps, toujours en n'utilisant que l'environnement de simulation lui-même. Je connectai ainsi un signal « sinusoïde » à ma base de temps afin de lui faire faire des aller-retours. Je m'attendais sans doute à voir ma balle tomber, freiner, puis remonter et reprendre sa chute, et à voir ce cycle se poursuivre à l'infini. Ou quelque chose du genre. Après avoir fait joujou, je passerais à autre chose.

Je lançai la simulation. La balle commença à tomber puis ralentit et se figea en l'air. Je pensai à un bug. Puis je compris. La simulation n'était pas défectueuse ; au contraire, elle marchait trop bien.

Le temps contrôlait l'action du signal qui devait progressivement l'inverser. Mais avant de s'inverser, il faut bien ralentir et s'arrêter. Passer par zéro. Et arrêter donc aussi ce qui contrôle cette inversion. Et les choses ralentissent, ralentissent, ralentissent à l'infini sans jamais s'arrêter et encore moins s'inverser et sans non plus jamais atteindre un certain instant singulier dont elles se rapprochent indéfiniment. Le temps s'était arrêté. Il s'était lui-même arrêté.

À partir de là, on peut dérouler des pages de réflexions métaphysiques sur la nature du temps et sur la possibilité ou l'impossibilité de le manipuler.

Je m'en tiendrai à : don't fuck with time, bitches.