Vous connaissez peut-être les jeux ryhtm comme Dancing Line , Geometry Dash ou même Guitar Hero . Ils ont quelque chose en commun: chaque action du jeu est synchronisée avec la musique. Mon but est de créer un jeu comme Geometry Dash où le joueur doit effectuer des actions en rythme tandis que le personnage défile automatiquement dans le niveau. J'ai quelques questions sur ce type de jeu:
- Dois-je garder mon FPS constant car il doit toujours être synchronisé avec la musique?
- Comment puis-je construire mes niveaux avec une musique à l'esprit pour m'assurer qu'elle sera synchronisée?
Je travaille sur Unity en utilisant C #.
la source
Comme alternative si vous êtes d'accord pour ne pas travailler à partir de zéro.
Il existe déjà des ressources prêtes à l'emploi (sous Editor Extensions / Audio comme https://www.assetstore.unity3d.com/en/#!/content/54639 (payant) ou https://www.assetstore.unity3d.com/en / #! / content / 39835 (gratuit)) où vous pouvez synchroniser les pistes musicales avec l'événement. Dans cet exemple, l'arme tire au rythme de la musique.
Si vous voulez savoir comment ils fonctionnent, essayez 1-2 des gratuits et regardez la source.
la source
Unity dissocie déjà le gameplay du framerate. Si vous vous souvenez de toujours utiliser
Time.deltaTime
dans vos fonctions de mise à jour, la fréquence d'images réelle ne devrait pas affecter la vitesse de jeu. Ainsi, lorsque vous démarrez le jeu et la piste audio en même temps, ils doivent rester synchronisés.Concernant la conception de niveaux autour de la musique, il existe deux approches:
L'approche procédurale. Utilisez des algorithmes d'analyse audio pour générer automatiquement des niveaux autour des pistes audio. Le plus simple est de simplement rechercher les pics de volume. Cela devrait déjà vous permettre d'identifier les battements de tambour dans de nombreuses chansons et de générer des obstacles en conséquence. Une étape supplémentaire consiste à détecter les changements de volume séparément dans différents spectres de fréquence. Cela rend la détection de battements plus fiable et vous permet de générer différents obstacles pour différents emplacements. Mais cela ne fait qu'effleurer la surface. L'analyse audio est un domaine très large et intéressant. Les gens ont écrit beaucoup de littérature scientifique à ce sujet.
La profondeur dont vous avez besoin pour plonger dans ce domaine dépend de votre ambition. Certains jeux se contentent de détecter les battements et de générer de manière aléatoire tout le reste de la conception de niveau ( Crypt of the Necrodancer ). D'autres essaient de mettre autant d'aspects du level design sous le contrôle de l'audio qu'ils le peuvent ( Audiosurf ).
De nombreux jeux de rythme utilisent une approche hybride. Vous générez un premier brouillon du niveau à l'aide d'un générateur, puis le modifiez à la main pour le rendre plus jouable.
la source
Time.time
plutôt.Il est très courant d’avoir une «carte des temps». Tout type de données représentant les battements de la chanson. Il peut s'agir d'une texture, d'un fichier de données ou de tout autre élément contenant ces informations. La plupart du temps, il est créé manuellement pour créer différents rythmes et combinaisons, des versions de vitesses pour une carte audio.
Cependant, il peut être généré de manière procédurale à partir des données de fichiers audio.
Comment obtenir la vitesse pour correspondre au "point de battement"? Quand faire apparaître un objet?
Speed = Distance / Time
.Distance =
Distance entre les points de création de GameObject et de "beat point".Time =
La longueur audio et la carte rythmique construite devraient être suffisantes. Avec ces informations, vous pouvez analyser les données audio / carte pour prédire quand un objet doit être généré pour atteindre le point exact. Maintenant, tout dépend du moment où vous voulez faire apparaître cet objet, si vous voulez qu'il soit très rapide après le frai, alors vous le ferez plus tard avec une grande vitesse. Si vous voulez qu'il soit à une vitesse normale, il faudra du temps pour atteindre le lecteur et l'audio a besoin de temps pour jouer au bon moment.Vous pouvez même générer une nouvelle carte avec des horodatages pour les apparitions d'objets de battement pour une carte audio particulière. Vous devez faire des prédictions à un moment donné pour être en mesure de faire correspondre le rythme, pour le style le plus populaire, je dirais, pour prévoir de
when
faire apparaître l'objet pour qu'il se déplace avec certainspeed
. Celles-ci peuvent être faites en runtime, ou lues à partir d'un fichier calculé précédemment, ou enregistrées dans la RAM ...Je suppose que les jeux comme ceux-ci
Osu
n'ont pas celaDistance
, ils ont juste le temps de réduire les cercles, bpm ... Les cartes sont généralement faites sur mesure. L'approche pour calculer les visuels dépend donc du style du jeu que vous créez également.Donc, pour résumer tout, les valeurs sont interdépendantes. Cela dépend du nombre de battements que vous avez, de la distance entre le point d'apparition et le joueur, et dépend parfois des données fournies [certains jeux ont la vitesse de chaque battement et son apparence encodée dans un fichier de données créé manuellement]. Si vous le faites de manière procédurale, vous pouvez tout calculer en utilisant des données audio.
la source