Repository navigation
FR Creer Bruitages
English · Type : référence · Public : auteur · Contexte : dépôt du moteur, projet créé · Statut : prête · S'applique depuis : 4.2.5
Un jeu nomme ses sons par id dans audio.sfx et les joue avec la commande sfx ({ sfx: 'door_open' }). Cette page
est la référence des recettes qui les synthétisent depuis la palette Mega Drive commune (sfx.json), de la façon dont
npm run assets les publie, et des sous-titres pour les joueurs qui ne les entendent pas.
Les bruitages suivent les règles de la musique (Musique en stems), celles qui les concernent :
-
Une seule palette. Chaque bruitage se construit depuis
tools/audio/palette.json, les mêmes patches FM, enveloppes PSG et bruit que la musique : une porte et le thème sonnent comme un seul jeu. Un son manquant est un nouveau patch dans la palette (avec undesc), jamais un patch ad hoc ; un patch dont dépendent des sons livrés ne se modifie pas (on en ajoute un, ou on incrémenteversion). -
Les fichiers rendus sont commités :
audio/sfx/*.mp3etsfx.json. Le dossier de construction (.sfx-build) est supprimé après chaque passage. -
Les sources. Un bruitage que vous n’avez pas synthétisé (un enregistrement, une banque de sons) doit être à vous,
dans le domaine public, ou sous une licence qui autorise une œuvre dérivée ; dites d’où il vient dans
CREDITS.mdet dans la provenance du jeu (Provenance des assets).
games/<id>/audio/sfx.json contient une recette par id de audio.sfx. Dans le dépôt du moteur, à sa racine :
# dans le dépôt du moteur
npm run audio -- sfx games/<id>/audio/sfx.jsonles rend en games/<id>/audio/sfx/<id>.mp3 : silence final coupé, crête normalisée, fondu de 10 ms à la fin.
--only door_open latch n’en rend que certains ; --out <dossier> écrit ailleurs. Un projet créé n’a pas de commande
audio : rendez les bruitages dans un clone du dépôt du moteur et copiez les .mp3 dans le game/audio/sfx/ du
projet.
Une recette, ce sont quelques lignes d’un ou plusieurs canaux à 60 lignes par seconde, avec les instruments de la palette :
"door_open": { "desc": "a latch, then a wooden creak", "rows": 40, "tracks": [
{ "ch": "NOISE", "ins": "noise_hat", "events": [{ "row": 0, "note": "C6", "vol": 12 }] },
{ "ch": "FM1", "ins": "muted_pluck", "events": [{ "row": 3, "note": "D2", "vol": 118, "fx": [["01", "03"]] }, { "row": 28, "off": true }] }
] }Les recettes sont rangées sous "sfx" dans le fichier, à côté de "rate" (lignes par seconde, 60 par défaut) et d’un
"palette" optionnel (un fichier de palette relatif à sfx.json ; par défaut, la palette commune).
| Champ | Forme | Par défaut |
|---|---|---|
desc |
ce qu’est le son, en mots | aucun |
rows |
la longueur en lignes (le silence final est coupé de toute façon) | 32 |
tracks[].ch |
un canal : FM1…FM6, PSG1…PSG3, NOISE
|
obligatoire |
tracks[].ins |
un instrument de la palette, pour toute la piste | aucun |
events[].row |
la ligne où tombe l’événement | obligatoire |
events[].note |
un nom de note (C6) ou un numéro MIDI |
aucun |
events[].ins |
un instrument pour cet événement seulement | celui de la piste |
events[].vol (ou tracks[].vol) |
FM 0–127, PSG 0–15 | celui de l’instrument |
events[].fx |
paires hex : 01 / 02 glissando montant / descendant, 00xy arpège, 04xy vibrato, 0Axy glissé de volume, EDxx retard |
aucun |
events[].off |
une coupure de note | aucun |
gain |
la crête après normalisation | 0,9 |
Le rendu s’arrête sur une recette qu’il ne sait pas jouer, en la nommant : <id>: unknown channel <ch>,
<id>: <ch> row <r> needs an instrument, <id>: event at row <r> beyond length <rows>,
<id>: <ch> row <r>: more than 4 effects.
Le sfx.json du jeu d’exemple couvre le vocabulaire habituel d’un jeu
d’aventure : click, select, success, error, door_open, door_close, latch, coins, cloth, paper,
ring, drop, bell, glass, metal, shuffle, chips, pluck, bong. Copiez-le dans un nouveau jeu et gardez
les ids : le contenu des jeux d’exemple s’en sert, donc les règles que vous y copiez gardent leur son.
Le moteur lui-même ne joue aucun son sous un id fixe. Les sons qu’il joue de lui-même sont ceux que le jeu nomme dans
skin.sounds (phone, plane, confetti, jingle, end ; voir Habillage et polices), et
un mini-jeu joue les ids que nomment ses paramètres.
Un son qui compte reçoit un sous-titre, montré par écrit pour qui ne l’entend pas, et traduit comme toute ligne :
{ sfx: 'door_slam', caption: '[A door slams upstairs]' }Le réglage des sous-titres est actif par défaut, et le menu Réglages ne le propose que dans un jeu qui sous-titre au moins un son.
npm run assets (dans le dépôt du moteur, ou dans un projet créé) prépare chaque son que cite le contenu :
| Quoi | Source par défaut | Sortie | Encodage |
|---|---|---|---|
| musique | games/<id>/audio/music/<fichier> |
public/assets/audio/music/<fichier> |
96 kb/s, stéréo |
| bruitages | games/<id>/audio/sfx/<fichier> |
public/assets/audio/sfx/<fichier> |
128 kb/s, mono |
| voix | games/<id>/audio/voice/<fichier> |
public/assets/audio/voices/<fichier> |
64 kb/s, mono |
Dans un projet créé, le dossier est game/ au lieu de games/<id>/. Seul ce qui a changé est réencodé.
games/<id>/sources.json remplace ces motifs ({file} est le fichier nommé dans audio) :
- un motif peut être une liste de candidats essayés dans l’ordre, et fixer son propre débit :
"sfx": ["private/audio/sfx/{file}", { "path": "private/audio/{file}", "rate": "64k" }]; - un
.mp3demandé peut venir d’un.oggdu même nom ; - un son sans source mais déjà présent dans
public/assetsest gardé tel quel ; - un son sans l’un ni l’autre est signalé manquant (
sfx:<id>=<fichier>) et le jeu joue un silence à sa place.
Le côté images de sources.json (motifs, overrides) est sur Images.
-
audio.sfx, la commandesfxet soncaption,skin.sounds. -
npm run audio -- sfx,npm run assets,games/<id>/sources.json. - Musique en stems, Voix, Outils audio.
Generated publication · publication générée — current documentation · documentation courante: quest'n'click 4.4.0 r1, documentation revision · révision de la documentation 8dc717c69acb62c4742b69c54a7e7dfb620f75d8.
Earlier versions and permalinks · versions précédentes et liens permanents: https://wanoo.github.io/quest-n-click/docs/
An edit made in this wiki is overwritten at the next publication · une modification faite dans ce wiki est écrasée à la publication suivante.
Edit the source · Modifier la source · Report an error · Signaler une erreur
Index (6)
Démarrer (6)
Jouer (9)
Installer (17)
- Prérequis
- Installer depuis l'archive de la release
- Installer depuis npm, une fois publié
- Installer depuis le dépôt pour travailler sur le moteur
- doctor : vérifier sa machine
- Outils pour les images
- Outils audio : ffmpeg, fluidsynth, Furnace, uv
- Mettre à jour
- Notes de mise à jour : 4.4
- Notes de mise à jour : 4.3
- Notes de mise à jour : 4.2
- Notes de mise à jour : 4.1
- Notes de mise à jour : v3
- Notes de mise à jour : v2 vers v3
- Venir de web-scumm
- Référence du paquet
- Dépannage de l'installation
Créer un jeu (55)
- Votre premier jeu
- Organisation d'un projet créé et du dépôt du moteur
- La boucle de travail
- Principes du contenu et contrat d'identité
- Salles
- Géométrie : placement, zones de marche, masques, calques, caméra
- Un objet est visible mais inaccessible
- Réactions
- Commandes du jeu
- Conditions
- Drapeaux, variables et événements : lequel choisir
- Code sur mesure
- Personnages
- Objets et inventaire
- Carte du monde
- Dialogues
- Scripts et événements
- Faire bouger les personnages : patrouilles et marches
- Sorties
- Chapitres et objectifs
- État et sauvegardes : persistant ou temporaire, renommer un id, migrations
- Mise en scène : salles larges et animations
- La scène : lumières, particules, sols
- Habillage et polices
- Titre et générique
- Héros : plusieurs personnages et choix du héros
- Mini-jeux intégrés
- Un mini-jeu sur mesure
- Traductions
- Musique en stems
- Bruitages
- Voix : par langue et par héros
- Images : prompts, découpe des planches, transparence, échelle
- Provenance des assets
- Le storyboard, source de vérité
- Concevoir des énigmes
- Mécaniques classiques
- Pages de relecture
- Référence du DSL
- Vérifier son jeu
- Ce que prouve le solveur
- Options du solveur
- Playtests
- Remix
- Speedrun pour les auteurs
- La fin scellée
- Modèle de production
- Jeux d'exemple
- Travailler avec une IA
- Construire et publier un jeu
- Publier sur GitHub Pages
- Le jeu statique sur Clever Cloud
- Autres hébergeurs statiques
- Sous-chemin, cache et service worker, déploiement incomplet, retour arrière
- Tester sur un téléphone en réseau local
Studio local (24)
- Le Studio local : présentation et lancement
- Modifier une salle
- Placement et scène
- Aperçu, application, annulation
- Storyboard
- Assets et découpe
- Vérifier : validateur, solveur, chemin critique, chaleur, santé, couverture
- Captures avant et après
- Diff sémantique
- Jouer et rejouer une session
- Explication des règles
- Langue et objectifs
- Voix et matrice héros × langues
- Carte
- Notes
- Remix dans le Studio
- Musique
- L'Assistant : votre propre clé
- Mode démo et studio-apply
- Sécurité en local et en réseau local
- API du Studio
- MCP local : configurer chaque client
- Outils MCP
- Dépannage du Studio
Studio d'équipe (21)
- Ce qui tourne où
- Concepts : révision, transaction, pan, bail, aperçu, build
- Débuter comme dev invité
- Travailler ensemble au quotidien
- Rôles et actions : la matrice complète
- Invitations
- Gérer les membres
- Écriture refusée sur le Studio hébergé : révision de base périmée (409)
- Écriture refusée sur le Studio hébergé : pan verrouillé (423)
- Reprendre après un bail perdu, une déconnexion ou un aperçu périmé
- Commentaires
- Carte et diff sémantique
- Publier des builds
- MCP distant
- Le jeu dans Git
- Mettre à jour le moteur d'un jeu hébergé
- Assets hébergés
- La ligne de commande du serveur
- Routes de santé et de métriques
- L'essayer en local avec compose.yml
- Limites connues
Clever Cloud (23)
- Clever Cloud : vue d'ensemble, coût et prérequis
- Applications et add-ons
- Domaines et TLS
- Keycloak
- OIDC générique et GitLab
- Configuration
- Premier déploiement
- Sauvegardes
- RPO et RTO
- Exercice de restauration sur une installation vierge
- Redéploiements
- Mettre à jour le serveur et vérifier l'état après une migration
- Limites du retour arrière
- Supervision
- Sécurité
- Renouveler les clés
- Récupérer l'accès administrateur
- Changer de domaine ou de fournisseur OIDC
- Worker, PostgreSQL ou Cellar en panne
- Exporter le jeu et quitter l'installation
- Rétention
- Dépannage sur Clever Cloud
- Coûts et démontage
Reality Bridge et connecteurs (16)
- Le Reality Bridge : ce que c'est
- Démarrage rapide
- Garanties
- Installer et lancer le Bridge
- Sauvegarde et restauration
- Plusieurs tenants
- Signaux et manifeste
- La ligne de commande du Bridge
- Vue d'ensemble des connecteurs
- Connecteur email
- Connecteur Telnet
- Connecteur SSH
- Connecteur Open Badges
- Le SDK des connecteurs
- Sécurité : Biscuit et signatures
- Dépannage du Bridge et des connecteurs
Contribuer (25)
- Bienvenue
- Préparer son poste de développement
- La boucle de développement
- Avant une pull request
- Conventions
- Écrire la documentation
- Architecture
- Visite du code
- Frontières d'import
- Quels tests tournent quand
- Tests de mutation
- Le cliquet de couverture
- La référence de qualité
- La CI expliquée
- Passes de terrain
- Mesures de performance
- Publier une release
- Paquets npm
- Décisions et ADR
- Gouvernance
- Pull requests des bots
- Contribuer avec des agents IA
- Politique de sécurité
- Code de conduite
- Licences et crédits