mardi 1 février 2011

40 - Composition des Musiques (fin)

Ça y est, après plus d'un mois de travail pas forcément assidu, l'intégralité des musiques du jeu a enfin été composée.

Ceux qui auront suivi avec attention l'évolution de mon travail sur ces musiques auront noté que le dernier morceau que j'ai composé est la musique qui accompagne la cinématique de fin du jeu ; néanmoins la composition de cette dernière s'est avérée plus complexe que prévu...

Le jeu propose 3 fins différentes, plus ou moins heureuses, et chacune des cinématiques de fin voit se succéder des ambiances très variées (il est question de combat, de victoire, de défaite, d'amour, de tristesse...). Difficile donc de composer une musique qui collerait aux 3 fins différentes...

Une première possibilité aurait été de composer 3 musiques différentes, une pour chaque fin ; ça aurait été beaucoup de boulot, d'autant qu'il aurait fallu créer des morceaux complexes dotés d'un timing précis afin de coller au mieux aux images. Qui plus est, le moindre changement dans la cinématique de fin aurait eu pour conséquence de devoir retravailler la musique qui va avec !

J'ai opté pour une autre méthode : J'ai décider de créer 4 petits morceaux d'à peu près 4 secondes, chacun lié à une ambiance particulière, qui sont joués en fonction du contexte.

Il y a :
  • un thème lié à la victoire ;
  • un thème lié au combat ;
  • un thème sombre ;
  • un thème léger style "boîte à musique" qui illustre à la fois une scène humoristique et une scène romantique.
Ces 4 thèmes me permettront donc d'offrir un accompagnement sonore adapté aux différentes cinématiques de fin.

samedi 8 janvier 2011

39 - Composition des Musiques

Ça fait un petit moment que je n'ai pas blogué, mais rassurez-vous, je continue à bosser sur le jeu !

Il y a 2 semaines, j'ai téléchargé un logiciel de composition audio gratuit : Buzz.
Comme mon objectif est de composer des chiptunes (pour rester dans le trip rétro, à l'image des graphismes du jeu), j'ai téléchargé le plugin Famisynth qui permet de reproduire les sons de la NES.

J'ai passé une après-midi à apprendre à utiliser le logiciel, et j'ai commencé à composer la musique de combat. Mais, entre mon boulot et les fêtes de fin d'année, je n'ai pas trouvé le temps de m'y remettre avant... dimanche dernier (c'est à dire le 2 janvier) !
Je me suis un peu rattrapé depuis, j'ai actuellement 4 morceaux de prêts.

Voici la liste des morceaux que je dois composer (je mettrai régulièrement ce billet à jour en rayant les morceaux terminés) :
  • Écran titre
  • BGM 1
  • BGM 2
  • BGM 3
  • BGM 4
  • BGM 5
  • BGM 6
  • BGM 7
  • Combat
  • Combat Final
  • Fin
  • Crédits
Comme vous pouvez le voir, il y a 7 background music, une par environnement graphique.
Le nombre de morceaux à composer est de 12, mais fort heureusement j'ai déjà plusieurs mélodies en tête qui ne demandent plus qu'à être mises en forme avec Buzz (pour ne pas les oublier, j'ai utilisé la fonction dictaphone de mon balladeur mp3 et me suis enregistré en train de les chantonner ^^). Pour les morceaux manquants... j'improviserai le moment venu !

mercredi 22 décembre 2010

38 - Preloader

Un preloader, c'est un écran de chargement qui apparait au début d'une animation Flash et qui aide l'utilisateur à patienter en attendant qu'elle soit prête à être jouée ; le pourcentage de données chargées est généralement indiqué, et une petite animation sympa peut être intégrée pour rendre l'attente plus agréable.

J'ai donc programmé aujourd'hui le preloader de mon jeu ; il consiste en une ligne horizontale blanche qui balaie l'écran :
  • Si le pourcentage de données chargées est nul, la ligne est située tout en haut de l'écran ;
  • Une image est située au centre de l'écran ; lors de son passage, la ligne altère l'apparence de l'image et lui donne un aspect pixélisé ;
  • Lorsque le chargement est à 100%, la ligne se trouve tout en bas de l'écran ; néanmoins elle continue à descendre et disparait de l'écran, et quelques dixièmes de secondes plus tard un fondu au noir nous fait passer du preloader à l'écran titre.
J'ai imposé une durée minimale à l'animation du preloader : Ainsi, même si le chargement est rapide, la ligne ne peut pas descendre de plus de 2 pixels par frame (1/25 de seconde).




J'envisage de soumettre mon jeu au site Newgrounds ; à cet effet, j'ai créé une version alternative du preloader :

avant le passage de la ligne / après le passage de la ligne

dimanche 19 décembre 2010

37 - Menu Clic Droit

Les cinématiques de fin sont enfin timées convenablement ; j'ai donc pu enchainer sur le menu clic droit.

Quand on effectue un clic droit sur un fichier Flash standard, on a accès à de nombreuses options : lire, zoomer, en avant, rembobiner...
Le problème, c'est que si un joueur clique sur "en avant", il accède à la scène suivante, ce qui peut engendrer de nombreux bugs et/ou tricheries :

Dans mon jeu, les scènes "playerSelect", "donjon" et "ending" se suivent dans cet ordre.
  • si on clique sur "en avant" alors qu'on est à l'écran de sélection du personnage, on se retrouve dans le donjon sans avoir chargé les stats du Héros ;
  • si on clique sur "en avant" alors qu'on est dans le donjon, on accède directement à la cinématique de fin.
Pour éviter ces désagréments, il faut modifier le menu clic droit en supprimant les commandes de base ; on peut aussi ajouter ses propres commandes personnalisées.

var MENUPERSO = new ContextMenu();// création de la variable "menu contextuel personnalisé"
MENUPERSO.hideBuiltInItems();// suppression des commandes usuelles (lire, rembobiner, zoomer... )
var commande1 = new ContextMenuItem("Reset", reset); // la commande "Reset" appelle la fonction "reset" définie plus bas
var commande2 = new ContextMenuItem("Version " add _global.version, version);
MENUPERSO.customItems.push(commande1); // on ajoute la commande1 au menu
MENUPERSO.customItems.push(commande2);
function reset() { // cette fonction permet de retourner à l'écran titre
maxdepth = 2000;
for (i=0; i<=maxdepth; i++) { removeMovieClip(_root.getInstanceAtDepth(i));
// on efface tous les clips issus des scènes précédentes pour avoir un écran propre
}
gotoSceneAndPlay("preloader", 1);
// on retourne à la première scène du jeu
}
function version() {
// si la variable _global.version a pour valeur "1.00", alors la commande du menu aura pour nom "Version 1.00"
// le numéro de la version est indiqué à titre informatif : cliquer dessus n'a aucun effet
}
_root.menu = MENUPERSO;

Ce qui nous donne ceci :

Prochaine étape : Création du Preloader !

jeudi 16 décembre 2010

36 - Cinématiques de Fin

Je n'ai pas beaucoup avancé ces 2 dernières semaines ; néanmoins les 3 cinématiques de fin sont presque prêtes, il faut juste que je retravaille encore un peu le timing (je veux que les scènes ne soient pas trop longues, mais que le joueur ait quand même le temps de lire les textes et de regarder les images).

Après la cinématique de fin, le staff roll défile et présente "l'équipe de programmation" (c'est à dire... moi !), les logiciels utilisés, et la liste des personnages du jeu (le Héros, les PNJ, les ennemis).

Un indice est donné après le staff roll afin d'aider le joueur à débloquer les autres fins.