diff --git a/docs/guild_dev_plan.md b/docs/guild_dev_plan.md index 651f182..e3c429f 100644 --- a/docs/guild_dev_plan.md +++ b/docs/guild_dev_plan.md @@ -31,36 +31,89 @@ Le système de guilde permet aux joueurs de former des équipes, de revendiquer --- -## 🧮 2. Formules Mathématiques du Prix des Chunks +## 🧮 2. Formules Mathématiques du Prix des Chunks (Spatio-Temporel) -Pour équilibrer l'économie d'un serveur, le prix d'un chunk ne doit être ni trop punitif au début (pour encourager les petites guildes), ni trop bas sur la durée (pour éviter qu'une guilde n'accapare toute la carte). +Pour équilibrer l'expansion territoriale sur le serveur, le coût d'acquisition d'un nouveau chunk prend en compte **deux dimensions** : +1. **La Dimension Spatiale ($N$)** : La taille totale de la guilde (plus la guilde est grande, plus le prix structurel de base est élevé). +2. **La Dimension Temporelle / Vélocité ($R_{24h}$)** : Le nombre de chunks achetés récemment (fenêtre glissante de 24h). +3. **Le Couplage Espace-Temps** : Une grande guilde qui tente une expansion rapide subit une pénalité de surchauffe bien plus violente qu'une petite guilde. -### 📐 Formule Recommandée : **Exponentielle Amortie Paramétrable** +--- -Soit $N$ le numéro du chunk à acheter ($N = 1$ est le 1er chunk de création) : +### 📐 Modèle Mathématique Unifié -$$\text{Prix}(N) = P_{\text{base}} \times \left(1 + \text{Taux}\right)^{(N - 1)^{\alpha}} + (N - 1) \times \text{Palier}$$ +Le prix d'un chunk pour une guilde possédant $N$ chunks et ayant acheté $R$ chunks dans les dernières 24h est donné par : -#### ⚙️ Paramètres par défaut dans `config.yml` : -* $P_{\text{base}} = 1\,000\$$ (Prix de base du premier chunk) -* $\text{Taux} = 0.08$ (Croissance de +8% de base) -* $\alpha = 0.95$ (Facteur d'amortissement pour lisser les grands nombres) -* $\text{Palier} = 150\$$ (Ajout linéaire fixe par chunk) +$$\text{PrixFinal}(N, R) = P_{\text{structurel}}(N) \times M_{\text{surchauffe}}(N, R)$$ -#### 📊 Tableau de simulation des coûts : -| Chunk n° ($N$) | Coût du chunk | Coût cumulé total | Profil guilde | -| :--- | :--- | :--- | :--- | -| **1** (Création) | **1 000 $** | 1 000 $ | Début / Création | -| **2** | **1 230 $** | 2 230 $ | Extension mineure | -| **3** | **1 485 $** | 3 715 $ | Petite base (3 chunks) | -| **5** | **2 080 $** | 7 510 $ | Base moyenne (5 chunks) | -| **10** | **4 120 $** | 22 450 $ | Guilde active (10 chunks) | -| **20** | **10 850 $** | 92 300 $ | Grande forteresse (20 chunks) | -| **30** | **23 400 $** | 258 000 $ | Métropole / Empire | +--- + +#### 1️⃣ Prix Structurel de Base : $P_{\text{structurel}}(N)$ +$$P_{\text{structurel}}(N) = P_{\text{base}} \times \left(1 + \text{Taux}\right)^{(N - 1)^{\alpha}} + (N - 1) \times \text{Palier}$$ + +* $P_{\text{base}} = 1\,000\$$ (Prix du 1er chunk de création) +* $\text{Taux} = 0.08$ (+8% de croissance) +* $\alpha = 0.95$ (Facteur d'amortissement) +* $\text{Palier} = 150\$$ (Linéarité) + +--- + +#### 2️⃣ Multiplicateur de Surchauffe Temporelle : $M_{\text{surchauffe}}(N, R)$ +$$M_{\text{surchauffe}}(N, R) = 1 + \left( k_{\text{base}} + k_{\text{taille}} \times \left(\frac{N}{10}\right) \right) \times R^{\delta}$$ + +* **$R$** : Nombre de chunks achetés dans les dernières 24h ($R=0$ si 1er achat de la journée). +* **$k_{\text{base}} = 0.05$** : Hausse minimale de base (+5% par claim récent). +* **$k_{\text{taille}} = 0.03$** : Coefficient d'amplification selon la taille de la guilde (+3% de surchauffe par tranche de 10 chunks). +* **$\delta = 1.15$** : Exposant de sévérité anti-spam (rend les achats massifs consécutifs exponentiellement plus chers). + +--- + +### 📊 Comparaison Concrète : Petite Guilde (5 chunks) vs Grande Guilde (50 chunks) + +Imaginons que les deux guildes souhaitent acheter **5 nouveaux chunks consécutifs en moins de 24h** : + +#### 🔹 Cas 1 : Petite Guilde (Taille actuelle : 5 chunks) +*Prix de base structurel : ~2 080 $ par chunk* +*Pénalité par claim récent : $+6.5\%$* + +| Achat n° dans les 24h | $R$ (antécédents 24h) | Surchauffe ($M_{\text{surchauffe}}$) | Prix du chunk | Surcoût appliqué | +| :---: | :---: | :---: | :---: | :---: | +| **1er achat** (Chunk 6) | $R = 0$ | $\times 1.00$ | **2 400 $** | $+0\%$ | +| **2ème achat** (Chunk 7) | $R = 1$ | $\times 1.065$ | **2 930 $** | $+6.5\%$ | +| **3ème achat** (Chunk 8) | $R = 2$ | $\times 1.14$ | **3 580 $** | $+14.4\%$ | +| **4ème achat** (Chunk 9) | $R = 3$ | $\times 1.23$ | **4 360 $** | $+23.1\%$ | +| **5ème achat** (Chunk 10) | $R = 4$ | $\times 1.32$ | **5 280 $** | $+32.0\%$ | +| **Total dépensé (5 chunks)** | | | **18 550 $** | *(Hausse modérée, accessible)* | + +--- + +#### 🔹 Cas 2 : Grande Guilde (Taille actuelle : 50 chunks) +*Prix de base structurel : ~48 500 $ par chunk* +*Pénalité par claim récent : $+20.0\%$ (amplifiée par la taille de 50 chunks)* + +| Achat n° dans les 24h | $R$ (antécédents 24h) | Surchauffe ($M_{\text{surchauffe}}$) | Prix du chunk | Surcoût appliqué | +| :---: | :---: | :---: | :---: | :---: | +| **1er achat** (Chunk 51) | $R = 0$ | $\times 1.00$ | **50 200 $** | $+0\%$ | +| **2ème achat** (Chunk 52) | $R = 1$ | $\times 1.20$ | **62 400 $** | $+20.0\%$ | +| **3ème achat** (Chunk 53) | $R = 2$ | $\times 1.44$ | **77 900 $** | $+44.3\%$ | +| **4ème achat** (Chunk 54) | $R = 3$ | $\times 1.71$ | **96 000 $** | $+71.0\%$ | +| **5ème achat** (Chunk 55) | $R = 4$ | $\times 1.98$ | **116 000 $** | $+98.5\%$ | +| **Total dépensé (5 chunks)** | | | **402 500 $** | *(Hausse très punitive, le 5ème chunk coûte le double !)* | + +--- + +### ⏱️ Décroissance Temporelle & Fenêtre Glissante (Rolling Window) + +* **Calcul 100% Automatique via SQL** : + ```sql + SELECT COUNT(*) FROM guild_claims + WHERE guild_id = ? AND claimed_at >= DATETIME('now', '-24 hours'); + ``` +* **Résultat en jeu** : + * Si la guilde attend quelques heures, chaque claim vieux de plus de 24h sort automatiquement du calcul. + * Le prix redescend naturellement à son niveau de base sans intervention ni timer lourd en mémoire. + * Encourage la stratégie, la planification et évite les accaparements éclairs de territoires pendant les nuits ou périodes creuses. -> 💡 **Variante 2 (Quadratique simple)** : -> $\text{Prix}(N) = P_{\text{base}} + A \cdot (N - 1)^2$ (Ex: $1000 + 50 \times (N-1)^2$) -> *Facile à comprendre pour les joueurs, progression douce au départ puis forte sur la fin.* ---