Ajoute les images libres et les couleurs des jeux
Validation du contenu / validate (push) Has been cancelled
Validation du contenu / validate (push) Has been cancelled
- documente l'ajout d'images sous licence libre ou avec autorisation de l'éditeur (assets/assets.json) et ajoute son schéma ; - les images sont traitées comme des fichiers binaires ; - couleurs d'Azul et d'Harmonies, et couleurs propres à l'extension Crescendo, reprises des pochettes ; - schéma des extensions régénéré (champ colors). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1 +1,5 @@
|
|||||||
* text=auto eol=lf
|
* text=auto eol=lf
|
||||||
|
*.png binary
|
||||||
|
*.jpg binary
|
||||||
|
*.jpeg binary
|
||||||
|
*.webp binary
|
||||||
|
|||||||
@@ -99,6 +99,63 @@ La fiche de règles d'une extension (`rules.fr.json`, schéma
|
|||||||
`expansion-rules.schema.json`) n'exige que `summary` : décrivez ce qui change
|
`expansion-rules.schema.json`) n'exige que `summary` : décrivez ce qui change
|
||||||
(mise en place, déroulement, décompte), pas tout le jeu.
|
(mise en place, déroulement, décompte), pas tout le jeu.
|
||||||
|
|
||||||
|
## Ajouter des images
|
||||||
|
|
||||||
|
Par défaut, l'app affiche la miniature BoardGameGeek du jeu. Vous pouvez
|
||||||
|
fournir un **logo** (carré) et une **bannière** (format large, environ 3:1),
|
||||||
|
**uniquement si leurs droits le permettent** :
|
||||||
|
|
||||||
|
| Licence (`license`) | Quand l'utiliser |
|
||||||
|
|---|---|
|
||||||
|
| `CC0-1.0` | domaine public, aucune attribution requise |
|
||||||
|
| `CC-BY-4.0` | réutilisation libre avec attribution |
|
||||||
|
| `CC-BY-SA-4.0` | réutilisation libre avec attribution et partage à l'identique |
|
||||||
|
| `publisher-permission` | l'éditeur autorise cet usage par écrit : `permission` doit pointer vers cette autorisation |
|
||||||
|
|
||||||
|
Une image trouvée sur internet, une photo de boîte ou un visuel de l'éditeur
|
||||||
|
**sans licence libre ni autorisation écrite** n'a pas sa place ici.
|
||||||
|
|
||||||
|
```
|
||||||
|
games/230802-azul/
|
||||||
|
assets/
|
||||||
|
assets.json
|
||||||
|
logo.webp
|
||||||
|
banner.webp
|
||||||
|
```
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"$schema": "../../../schemas/assets.schema.json",
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"file": "logo.webp",
|
||||||
|
"role": "logo",
|
||||||
|
"license": "CC-BY-4.0",
|
||||||
|
"author": "Nom de l'auteur",
|
||||||
|
"source": "https://… (page d'origine de l'image)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Le CI vérifie que :
|
||||||
|
|
||||||
|
- chaque image est déclarée dans `assets.json`, et chaque image déclarée
|
||||||
|
est présente ;
|
||||||
|
- c'est vraiment une image **PNG, JPEG ou WebP** (pas de SVG) qui correspond
|
||||||
|
à son extension ;
|
||||||
|
- elle pèse **512 Ko au maximum** (préférez WebP) ;
|
||||||
|
- l'auteur est indiqué (sauf CC0), et le lien d'autorisation pour
|
||||||
|
`publisher-permission`.
|
||||||
|
|
||||||
|
L'app affiche le crédit (auteur, licence, lien vers la source) près de chaque
|
||||||
|
image. Une extension peut aussi avoir son dossier `assets/`, dans son propre
|
||||||
|
dossier.
|
||||||
|
|
||||||
|
**À la relecture**, vérifiez la licence sur la page `source` (et
|
||||||
|
l'autorisation sur `permission`) : le CI ne peut pas le faire à votre place.
|
||||||
|
|
||||||
## Vérifier avant d'envoyer
|
## Vérifier avant d'envoyer
|
||||||
|
|
||||||
Avec un éditeur qui comprend les schémas JSON (VS Code…), la clé `$schema`
|
Avec un éditeur qui comprend les schémas JSON (VS Code…), la clé `$schema`
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ games/
|
|||||||
scoring.json # modèle de score (comment compter les points)
|
scoring.json # modèle de score (comment compter les points)
|
||||||
rules.fr.json # fiche de règles en français
|
rules.fr.json # fiche de règles en français
|
||||||
README.md # notes libres (facultatif)
|
README.md # notes libres (facultatif)
|
||||||
|
assets/ # images sous licence libre (facultatif)
|
||||||
|
assets.json # licence, auteur et source de chaque image
|
||||||
expansions/ # extensions vendues à part (une par dossier)
|
expansions/ # extensions vendues à part (une par dossier)
|
||||||
<bggId>-<nom>/
|
<bggId>-<nom>/
|
||||||
expansion.json # ce que l'extension ajoute au jeu de base
|
expansion.json # ce que l'extension ajoute au jeu de base
|
||||||
@@ -34,7 +36,10 @@ de BoardGameGeek : on ne les recopie pas ici.
|
|||||||
- **Du code** : les modèles de score sont des fichiers JSON déclaratifs. Si un
|
- **Du code** : les modèles de score sont des fichiers JSON déclaratifs. Si un
|
||||||
jeu demande une règle de calcul que le format ne sait pas exprimer, ouvrez
|
jeu demande une règle de calcul que le format ne sait pas exprimer, ouvrez
|
||||||
un ticket sur le dépôt de l'app.
|
un ticket sur le dépôt de l'app.
|
||||||
- **Des images, logos ou PDF** : ce sont des œuvres des éditeurs.
|
- **Des images sans licence libre** (visuels de boîte, logos d'éditeurs…) ni
|
||||||
|
autorisation écrite, et des **PDF** : ce sont des œuvres protégées. Les
|
||||||
|
images libres sont acceptées, déclarées avec leur licence (voir
|
||||||
|
[CONTRIBUTING.md](CONTRIBUTING.md#ajouter-des-images)).
|
||||||
- **Le texte des livrets de règles** : une fiche de règles est un résumé
|
- **Le texte des livrets de règles** : une fiche de règles est un résumé
|
||||||
rédigé avec vos propres mots, qui renvoie aux règles officielles.
|
rédigé avec vos propres mots, qui renvoie aux règles officielles.
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,8 @@
|
|||||||
"winner": "highest",
|
"winner": "highest",
|
||||||
"icon": "Palette",
|
"icon": "Palette",
|
||||||
"colors": {
|
"colors": {
|
||||||
"primary": "#005b8f"
|
"primary": "#1d5f96",
|
||||||
|
"secondary": "#e4572e"
|
||||||
},
|
},
|
||||||
"options": [
|
"options": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
"schemaVersion": 1,
|
"schemaVersion": 1,
|
||||||
"bggId": 472690,
|
"bggId": 472690,
|
||||||
"name": "Crescendo",
|
"name": "Crescendo",
|
||||||
|
"colors": { "primary": "#5b3f86", "secondary": "#f19bb0" },
|
||||||
"adds": {
|
"adds": {
|
||||||
"options": [
|
"options": [
|
||||||
{ "type": "boolean", "id": "sanctuaires", "label": "Module Sanctuaires", "default": true },
|
{ "type": "boolean", "id": "sanctuaires", "label": "Module Sanctuaires", "default": true },
|
||||||
|
|||||||
@@ -15,7 +15,8 @@
|
|||||||
},
|
},
|
||||||
"icon": "TreePine",
|
"icon": "TreePine",
|
||||||
"colors": {
|
"colors": {
|
||||||
"primary": "#065f46"
|
"primary": "#2b4aa8",
|
||||||
|
"secondary": "#f2a93b"
|
||||||
},
|
},
|
||||||
"options": [
|
"options": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"$schema": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"schemaVersion": {
|
||||||
|
"type": "number",
|
||||||
|
"const": 1
|
||||||
|
},
|
||||||
|
"files": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"file": {
|
||||||
|
"type": "string",
|
||||||
|
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*\\.(png|jpe?g|webp)$"
|
||||||
|
},
|
||||||
|
"role": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"logo",
|
||||||
|
"banner"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"license": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"CC0-1.0",
|
||||||
|
"CC-BY-4.0",
|
||||||
|
"CC-BY-SA-4.0",
|
||||||
|
"publisher-permission"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1,
|
||||||
|
"maxLength": 120
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uri",
|
||||||
|
"pattern": "^https\\:\\/\\/"
|
||||||
|
},
|
||||||
|
"permission": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uri",
|
||||||
|
"pattern": "^https\\:\\/\\/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"file",
|
||||||
|
"role",
|
||||||
|
"license",
|
||||||
|
"source"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"minItems": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"schemaVersion",
|
||||||
|
"files"
|
||||||
|
],
|
||||||
|
"additionalProperties": false,
|
||||||
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
|
"title": "Images libres d'un jeu (assets/assets.json)"
|
||||||
|
}
|
||||||
@@ -22,6 +22,23 @@
|
|||||||
"format": "uri",
|
"format": "uri",
|
||||||
"pattern": "^https\\:\\/\\/"
|
"pattern": "^https\\:\\/\\/"
|
||||||
},
|
},
|
||||||
|
"colors": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"primary": {
|
||||||
|
"type": "string",
|
||||||
|
"pattern": "^#[0-9a-fA-F]{6}$"
|
||||||
|
},
|
||||||
|
"secondary": {
|
||||||
|
"type": "string",
|
||||||
|
"pattern": "^#[0-9a-fA-F]{6}$"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"primary"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
"adds": {
|
"adds": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|||||||
Reference in New Issue
Block a user