From 6c6e2fad84157f219073d8ffbd9791fbbe2e42c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Vivet?= Date: Tue, 8 Sep 2026 18:00:14 +0200 Subject: [PATCH 1/2] Update the asset store revenue sharing to 55/45 Also add the plan to regroup the selling pages in a Monetization section. --- PLAN-monetization-section.md | 203 ++++++++++++++++++ .../community/sell-asset-pack-store/index.md | 2 +- .../sell-asset-pack-store/revenue-sharing.png | Bin 36083 -> 29601 bytes 3 files changed, 204 insertions(+), 1 deletion(-) create mode 100644 PLAN-monetization-section.md diff --git a/PLAN-monetization-section.md b/PLAN-monetization-section.md new file mode 100644 index 00000000000..7149cfe0c6c --- /dev/null +++ b/PLAN-monetization-section.md @@ -0,0 +1,203 @@ +# Regrouper les pages de vente sur l'Asset Store dans la section Monetization + +## Sommaire + +- [Contexte](#contexte) +- [Structure cible](#structure-cible) +- [Étapes](#etapes) + - [1. Déplacer les pages](#1-deplacer-les-pages) + - [2. Écrire l'aperçu de section](#2-ecrire-lapercu-de-section) + - [3. Navigation](#3-navigation) + - [4. Corriger les liens internes](#4-corriger-les-liens-internes) + - [5. Redirections](#5-redirections) +- [Vérification](#verification) + +## Contexte + +Tout ce qui concerne la vente sur l'Asset Store vit aujourd'hui dans **Community**, aux côtés +des guides de contribution (signaler un bug, contribuer à la doc, Summer of Code). Or ces pages +parlent de **revenu** : devenir vendeur, partage de revenus, prix, licences, paiements, puis +comment livrer son produit. Et sur l'Asset Store il y a deux produits vendables, un pack +d'assets et un game template : les deux parcours doivent être visibles dans la sidebar. + +De son côté, la section **Monetization** ne contient qu'une seule page +(`monetization/index.md`, titrée « Monetizing Your Games »). + +Cible : une section Monetization qui regroupe les deux façons de gagner de l'argent avec +GDevelop, vendre son jeu et vendre ses créations sur l'Asset Store, avec un parcours distinct +par type de produit. + +## Structure cible + +``` +docs/gdevelop5/monetization/ +├── .pages (nouveau) +├── index.md aperçu de section, titre « Monetization » (réécrit) +├── monetizing-your-games/ +│ └── index.md contenu actuel de monetization/index.md (déplacé) +├── sell-asset-pack-store/ déplacé depuis community/ +├── contribute-to-the-assets-store/ déplacé depuis community/ (contient aussi +│ technical-specifications.md = « Manually package the assets ») +└── guide-for-submitting-an-example/ déplacé depuis community/ +``` + +Sidebar résultante : + +``` +Monetization -> aperçu + Monetizing Your Games + Sell on the Asset Store + Submit asset packs + Manually package the assets + Submit game templates +``` + +Les slugs de dossier et les libellés de sidebar actuels sont conservés tels quels ; seul +l'emplacement change. Community garde ses guides de contribution (doc, bugs, Summer of Code, +Season of Docs, code) et continue de pointer vers les guides de soumission depuis sa page +d'accueil. + +## Étapes + +### 1. Déplacer les pages + +Avec `git mv`, pour conserver l'historique. Les dossiers partent avec leurs images, toutes +référencées en relatif dans les pages : rien à modifier à l'intérieur pour les images. + +- `docs/gdevelop5/community/sell-asset-pack-store/` → `docs/gdevelop5/monetization/sell-asset-pack-store/` +- `docs/gdevelop5/community/contribute-to-the-assets-store/` → `docs/gdevelop5/monetization/contribute-to-the-assets-store/` +- `docs/gdevelop5/community/guide-for-submitting-an-example/` → `docs/gdevelop5/monetization/guide-for-submitting-an-example/` +- `docs/gdevelop5/monetization/index.md` → `docs/gdevelop5/monetization/monetizing-your-games/index.md` + (contenu et front matter inchangés, titre « Monetizing Your Games » conservé ; la page n'a + aucune image locale, juste un iframe YouTube) + +### 2. Écrire l'aperçu de section + +Nouveau `docs/gdevelop5/monetization/index.md`, court, sur le modèle de +[docs/gdevelop5/community/index.md](docs/gdevelop5/community/index.md) (intro + liste de liens) : + +```md +--- +title: Monetization +icon: material/cash-multiple +--- +# Monetization + +GDevelop lets you earn money from what you create, both from your games and from the game art +and templates you make. Monetizing is entirely optional. + +* [Monetizing your games](/gdevelop5/monetization/monetizing-your-games/): sell your game on + stores, display ads, or earn revenue by hosting it on gd.games. +* [Selling on GDevelop's Asset Store](/gdevelop5/monetization/sell-asset-pack-store/): become a + seller, then submit either an [asset pack](/gdevelop5/monetization/contribute-to-the-assets-store/) + or a [game template](/gdevelop5/monetization/guide-for-submitting-an-example/). +``` + +L'`icon: material/cash-multiple` reste porté par cette page, qui devient l'entrée de section. + +### 3. Navigation + +Nouveau `docs/gdevelop5/monetization/.pages` (style de +[docs/gdevelop5/publishing/.pages](docs/gdevelop5/publishing/.pages), indentation 4 espaces) : + +```yaml +title: Monetization +nav: + - index.md + - Monetizing Your Games: monetizing-your-games + - Sell on the Asset Store: sell-asset-pack-store + - Submit asset packs: contribute-to-the-assets-store + - Submit game templates: guide-for-submitting-an-example +``` + +Dans [docs/gdevelop5/community/.pages](docs/gdevelop5/community/.pages) : supprimer les lignes 2, +3 et 4 (`Sell on the Asset Store`, `Submit asset packs`, `Submit game templates`). Le reste du +fichier (`Contribute to the documentation`, `Report a bug`, `- ...`, etc.) est inchangé. + +[docs/gdevelop5/.pages](docs/gdevelop5/.pages) reste inchangé (`- monetization` en ligne 14). + +Aucun `.pages` à créer dans `contribute-to-the-assets-store/` : « Manually package the assets » +reste le seul enfant, listé automatiquement. + +### 4. Corriger les liens internes + +Toutes les URL du site portent un slash final (`vercel.json` : `trailingSlash: true`). +`mkdocs.yml` définit `validation: links: absolute_links: ignore`, donc **aucun** de ces liens +absolus ne fera échouer le build : ils doivent être corrigés à la main, puis re-grepés +(`grep -rn "gdevelop5/community/sell-asset-pack-store\|gdevelop5/community/contribute-to-the-assets-store\|gdevelop5/community/guide-for-submitting-an-example" docs` +doit ne plus rien rendre). + +Vers la page de vente (`/gdevelop5/monetization/sell-asset-pack-store/`) : + +| Fichier | Ligne | Remarque | +|---|---|---| +| [docs/gdevelop5/interface/index.md](docs/gdevelop5/interface/index.md#L58) | 58 | lien absolu | +| [docs/gdevelop5/objects/3d-model/index.md](docs/gdevelop5/objects/3d-model/index.md#L120) | 120 | lien **relatif** (`../../community/sell-asset-pack-store`) : le passer en absolu, comme partout ailleurs | +| `monetization/contribute-to-the-assets-store/index.md` (ex-community) | 7 | lien absolu, dans un fichier déplacé | + +Vers les guides de soumission : + +| Fichier | Ligne | Cible | +|---|---|---| +| [docs/gdevelop5/community/index.md](docs/gdevelop5/community/index.md#L17) | 17 | `/gdevelop5/monetization/contribute-to-the-assets-store/` | +| [docs/gdevelop5/community/index.md](docs/gdevelop5/community/index.md#L19) | 19 | `/gdevelop5/monetization/guide-for-submitting-an-example/` | +| `monetization/sell-asset-pack-store/index.md` (déplacé) | 107 et 109 | les 2 boutons en bas de page | +| `monetization/contribute-to-the-assets-store/technical-specifications.md` (déplacé) | 179 | lien avec ancre `#follow-naming-best-practices` | + +Vers les ancres de « Monetizing Your Games », qui passent de `/gdevelop5/monetization/#…` à +`/gdevelop5/monetization/monetizing-your-games/#…` (ancres inchangées) : + +| Fichier | Ligne | Ancre | +|---|---|---| +| [docs/gdevelop5/interface/profile/credits.md](docs/gdevelop5/interface/profile/credits.md#L27) | 27 | `#hosting-on-gdevelops-platform-gdgames` | +| [docs/gdevelop5/interface/games.md](docs/gdevelop5/interface/games.md#L27) | 27 | idem (URL absolue `https://wiki.gdevelop.io/…`) | +| [docs/gdevelop5/interface/games.md](docs/gdevelop5/interface/games.md#L57) | 57 | idem | +| [docs/gdevelop5/interface/games-dashboard/index.md](docs/gdevelop5/interface/games-dashboard/index.md#L38) | 38 | `#publishing-on-platforms-with-integrated-ads` | + +Au passage, [docs/gdevelop5/community/teams.md](docs/gdevelop5/community/teams.md#L174) lignes 174, +189 et 190 pointe vers `guide-for-submitting-an-example` sur l'ancien domaine +`http://wiki.compilgames.net/doku.php/…` : les basculer sur les URL actuelles +(`/gdevelop5/monetization/guide-for-submitting-an-example/`), les ancres DokuWiki +(`#best_practices`, `#submitting_the_example`) n'existant plus telles quelles. + +### 5. Redirections + +Le plugin `mkdocs-redirects` est déjà configuré. Ajouter à la fin du `redirect_maps` de +[mkdocs.yml](mkdocs.yml) (après la ligne 371), sans préfixes de langue, comme les entrées +récentes du fichier (lignes 111 et suivantes) : + +```yaml + "gdevelop5/community/sell-asset-pack-store/index.md": "gdevelop5/monetization/sell-asset-pack-store/index.md" + "gdevelop5/community/contribute-to-the-assets-store/index.md": "gdevelop5/monetization/contribute-to-the-assets-store/index.md" + "gdevelop5/community/contribute-to-the-assets-store/technical-specifications.md": "gdevelop5/monetization/contribute-to-the-assets-store/technical-specifications.md" + "gdevelop5/community/guide-for-submitting-an-example/index.md": "gdevelop5/monetization/guide-for-submitting-an-example/index.md" +``` + +Ces 4 redirections sont indispensables : ces URL sont référencées depuis l'éditeur GDevelop, le +dépôt GDevelop-assets et GDevelop-examples, et le forum. + +Pas de redirection pour `/gdevelop5/monetization/` : l'URL existe toujours. Les liens externes +vers ses anciennes ancres arriveront sur l'aperçu, d'où le lien « Monetizing your games » en +première puce. + +## Vérification + +1. Build du site, depuis la racine du dépôt : + ```powershell + .venv\Scripts\activate + mkdocs build + ``` + Attendu : aucun warning de lien relatif cassé (celui de `3d-model` doit avoir disparu), aucun + warning de redirection dont la cible n'existe pas. +2. `mkdocs serve`, puis dans la sidebar : + - **Monetization** liste « Monetizing Your Games », « Sell on the Asset Store », + « Submit asset packs » (avec « Manually package the assets » en enfant) et + « Submit game templates » ; + - **Community** ne liste plus aucune de ces pages, et ses autres entrées sont intactes. +3. Ouvrir les 3 pages déplacées et vérifier que toutes les captures s'affichent (les dossiers + `sell-asset-pack-store` et `contribute-to-the-assets-store` en contiennent beaucoup). +4. Ouvrir les 4 anciennes URL `/gdevelop5/community/…` : chacune doit rediriger vers la nouvelle. +5. Cliquer les 4 liens à ancre corrigés vers « Monetizing Your Games » et vérifier l'atterrissage + sur la bonne section. +6. `git status` : confirmer que les déplacements apparaissent en renames et non en + suppression + ajout. diff --git a/docs/gdevelop5/community/sell-asset-pack-store/index.md b/docs/gdevelop5/community/sell-asset-pack-store/index.md index c4529e32c6d..9939facf1f2 100644 --- a/docs/gdevelop5/community/sell-asset-pack-store/index.md +++ b/docs/gdevelop5/community/sell-asset-pack-store/index.md @@ -24,7 +24,7 @@ Read on to learn more about revenue sharing, transactions, and other agreements ![](revenue-sharing.png) -When an asset is sold on GDevelop's Asset Store, the purchase is distributed as follows: 40% for the Asset creator, 33% for GDevelop, and 27% for government taxes (VAT) and payment provider fees. +When an asset is sold on GDevelop's Asset Store, the revenue is shared as follows: 55% for the Asset creator and 45% for GDevelop, after taxes and payment provider fees. !!! note diff --git a/docs/gdevelop5/community/sell-asset-pack-store/revenue-sharing.png b/docs/gdevelop5/community/sell-asset-pack-store/revenue-sharing.png index 5c47b6a25a57022712440c8d13c64e29fddaeaeb..d4a30fc105f0f2339e6d5edd17218f26d5bfb0a7 100644 GIT binary patch literal 29601 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