- Structure games/<bggId>-<nom>/ : game.json, scoring.json, rules.fr.json - 7 jeux intégrés à l'app (modèles de score), fiches de règles Azul et 6 qui prend - Schémas JSON générés depuis l'app (autocomplétion dans l'éditeur) - CI : validation avec le validateur de l'app, schémas à jour - Licence CC BY-SA 4.0, guide de contribution
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
# Contribuer
|
||||
|
||||
Chaque ajout ou correction passe par une demande de fusion (pull request),
|
||||
relue avant publication. Le CI vérifie automatiquement les fichiers.
|
||||
|
||||
## Ajouter un jeu
|
||||
|
||||
1. Trouvez le jeu sur [BoardGameGeek](https://boardgamegeek.com) et notez son
|
||||
`bggId` (le nombre dans l'adresse de sa page).
|
||||
2. Créez le dossier `games/<bggId>-<nom-en-kebab-case>/`, par exemple
|
||||
`games/9209-les-aventuriers-du-rail/`.
|
||||
3. Ajoutez `game.json` :
|
||||
|
||||
```json
|
||||
{
|
||||
"$schema": "../../schemas/game.schema.json",
|
||||
"schemaVersion": 1,
|
||||
"bggId": 9209,
|
||||
"name": "Les Aventuriers du Rail",
|
||||
"officialRulesUrl": "https://www.daysofwonder.com/…"
|
||||
}
|
||||
```
|
||||
|
||||
4. Ajoutez `scoring.json`, le modèle de score. Son `id` vaut `bgg-<bggId>`.
|
||||
Le plus simple : dans l'app, **Jeux → Ajouter un jeu**, créez le modèle,
|
||||
puis **Exporter le modèle** depuis la fiche du jeu. Inspirez-vous aussi des
|
||||
jeux existants (catégories, options, cible de fin de partie, équipes…).
|
||||
|
||||
5. Facultatif : `rules.fr.json`, la fiche de règles :
|
||||
|
||||
```json
|
||||
{
|
||||
"$schema": "../../schemas/rules.schema.json",
|
||||
"schemaVersion": 1,
|
||||
"locale": "fr",
|
||||
"summary": "Le jeu en une ou deux phrases.",
|
||||
"goal": "But du jeu.",
|
||||
"setup": "Mise en place.",
|
||||
"turn": "Déroulement d'un tour.",
|
||||
"end": "Fin de partie.",
|
||||
"scoring": "Décompte des points.",
|
||||
"tips": "Conseils."
|
||||
}
|
||||
```
|
||||
|
||||
`summary`, `goal` et `turn` sont obligatoires. Texte brut, retours à la
|
||||
ligne autorisés. **Rédigez avec vos propres mots** : pas de copier-coller
|
||||
du livret de l'éditeur.
|
||||
|
||||
## Vérifier avant d'envoyer
|
||||
|
||||
Avec un éditeur qui comprend les schémas JSON (VS Code…), la clé `$schema`
|
||||
donne l'autocomplétion et signale les erreurs au fil de la frappe.
|
||||
|
||||
La validation complète (celle du CI) se lance depuis le dépôt de l'app :
|
||||
|
||||
```bash
|
||||
pnpm --filter @skori/server content:validate ../skori-games
|
||||
```
|
||||
|
||||
## Jeux intégrés à l'app
|
||||
|
||||
Les dossiers dont `game.json` contient un `slug` (`azul`, `cabo`…)
|
||||
correspondent aux jeux livrés avec l'app ; leur `scoring.json` garde l'`id`
|
||||
du jeu intégré. Une correction de leur modèle de score doit aussi être
|
||||
reportée dans le dépôt de l'app.
|
||||
|
||||
## Licence
|
||||
|
||||
En contribuant, vous acceptez que votre contribution soit publiée sous
|
||||
licence [CC BY-SA 4.0](LICENSE).
|
||||
Reference in New Issue
Block a user