3.7 KiB
3.7 KiB
Règles spécifiques games.sasedev
Workspace et crates
- GAME-WS-001 — Un seul workspace Cargo racine contient les crates Rust du dépôt.
- GAME-WS-002 — Toutes les crates Rust résident sous
crates/. - GAME-WS-003 — Les crates moteur résident sous
crates/engines/et les crates jeu souscrates/games/. - GAME-WS-004 — Une crate hérite par défaut de
workspace.package.version. - GAME-WS-005 — Une crate arrivée à maturité peut porter sa propre version SemVer lorsqu'une décision documentée rend son cycle autonome nécessaire.
- GAME-WS-006 — Les dépendances tierces communes sont centralisées sous
[workspace.dependencies]et consommées avecworkspace = truelorsqu'elles sont partagées.
Générations du moteur
- GAME-ENGINE-001 — Une génération incompatible de moteur reçoit un nom explicite
engine-vN-*. - GAME-ENGINE-002 —
engine-v2n'est pas créé pour une évolution mineure ; il représente une rupture d'API ou d'architecture suffisamment forte pour justifier une coexistence avecengine-v1. - GAME-ENGINE-003 — Plusieurs générations de moteur peuvent coexister afin de migrer les jeux progressivement.
- GAME-ENGINE-004 — Un jeu déclare explicitement la génération de moteur qu'il consomme.
- GAME-ENGINE-005 — Une génération de moteur n'est supprimée qu'après migration, retrait ou archivage de tous ses consommateurs actifs.
Assets
- GAME-ASSET-001 — Aucun asset de jeu n'est stocké dans une crate Rust.
- GAME-ASSET-002 — Les assets sont stockés sous
assets/. - GAME-ASSET-003 —
assets/common/contient uniquement les ressources réellement mutualisées. - GAME-ASSET-004 — Chaque jeu peut posséder
assets/<game>/pour ses ressources spécifiques. - GAME-ASSET-005 — Le packaging de chaque plateforme assemble les assets communs et spécifiques sans créer de copie source durable dans une crate.
- GAME-ASSET-006 — Les chemins logiques d'assets doivent éviter les collisions entre espace commun et espace jeu.
Android
- GAME-ANDROID-001 — L'intégration Android réside sous
Android/et reste extérieure au workspace Rust. - GAME-ANDROID-002 — Java est la langue Android commune par défaut ; Kotlin n'est pas requis.
- GAME-ANDROID-003 —
Android/common/contient la couche réutilisable : activité SDL dérivée, bridge natif, publicité, billing, haptique et services génériques selon les besoins. - GAME-ANDROID-004 —
Android/<game>/contient uniquement la configuration et les extensions spécifiques au jeu : package, manifeste, ressources Android, identifiants et Java spécifique. - GAME-ANDROID-005 — Le code Java commun ne dépend pas d'une génération particulière du moteur Rust lorsque le contrat plateforme peut rester stable.
- GAME-ANDROID-006 — Le contrat JNI est volontairement petit, stable et orienté services plateforme.
- GAME-ANDROID-007 — SDL3 peut être consommé via son AAR officiel afin d'éviter de dupliquer ses sources Java/C dans chaque application.
Plateformes
- GAME-PLATFORM-001 — Le gameplay ne dépend pas directement d'Android, Desktop ou Web.
- GAME-PLATFORM-002 — Les entrées physiques sont traduites en actions de jeu abstraites.
- GAME-PLATFORM-003 — Les services Ads, Billing, Share, Haptics, Leaderboard et stockage en ligne sont consommés derrière des contrats plateforme.
POC
- GAME-POC-001 — Les premiers POC servent à valider l'architecture et doivent rester volontairement petits.
- GAME-POC-002 — Un POC ne justifie pas l'introduction prématurée d'un ECS, moteur physique ou backend complet s'il n'en a pas besoin.