Le week-end dernier, j'ai eu le plaisir de composer la musique de Blobby Zombie, un jeu créé en 48h seulement par mon ami Simon et son camarade Pie...
For further actions, you may consider blocking this person and/or reporting abuse
J'ai volontairement écarté toute ligne de JavaScript du contenu de l'article, mais un mot tout de même !
Manipuler des audio en JS est très direct :
Pour avancer de 15 secondes dans une piste audio :
J'ai appris au passage qu'on ne pouvait pas jouer deux fois le même fichier en parallèle (ce qui pourtant est nécessaire si deux bruitages identiques sont joués de façon rapprochée). Le problème se résoud avec la fonction
cloneNode:Par ailleurs, le nombre de joueurs étant très variable, chaque nouveau zombie ne fait pas progresser la musique d'un cycle précisément, contrairement à ce qui est expliqué dans l'article pour simplifier. Nous avons une fonction
progressTo(progression)qui prend un nombre entre0et1, reflétant l'évolution du jeu (0 étant de le début, et 1 la fin). Ainsi, appelerprogressTo(0.5)signifie que le jeu est à la moitié de sa progression (la moitié des joueurs sont des zombies). La musique peut alors avancer en fonction du nombre de cycles disponibles et, éventuellement, sauter des cycles si nécessaire.C'est tout ! Le reste du travail n'était que du JS classique.
Cependant, mon implémentation n'est pas ultra précise. Mon code utilise des
setTimeoutetsetInterval, et rien ne garantit qu'ils seront appelé exactement au bon moment.Je n'avais pas le temps d'expérimenter au-delà, et c'est totalement spéculatif, mais peut-être faudrait-il aller voir du côté des service workers, ou de WebAssembly, ou d'une autre manière de gérer l'audio que j'ignore totalement ?
Pretty cool Bastien!
Je trouve que c'est vraiment super bravo monsieur !
<3