File size: 9,152 Bytes
12d64f8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
# 🎮 RTS Game - Architecture Web Moderne

## 📋 Vue d'ensemble

Ce projet est une **réimplémentation complète** du jeu RTS Python/Pygame vers une architecture web moderne, optimisée pour HuggingFace Spaces avec Docker.

## 🏗️ Architecture

```
┌─────────────────────────────────────────────────────────┐
│                    Frontend (Browser)                    │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │  HTML5 Canvas│  │  JavaScript  │  │  CSS Moderne │  │
│  │   Rendering  │  │ Game Client  │  │   UI/UX      │  │
│  └──────────────┘  └──────────────┘  └──────────────┘  │
└─────────────────────────────────────────────────────────┘
                            ↕ WebSocket
┌─────────────────────────────────────────────────────────┐
│              Backend (FastAPI + Python)                  │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │   FastAPI    │  │  WebSocket   │  │ Game Engine  │  │
│  │   Server     │  │   Manager    │  │  Simulation  │  │
│  └──────────────┘  └──────────────┘  └──────────────┘  │
└─────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────┐
│                  Docker Container                        │
│              (HuggingFace Spaces)                        │
└─────────────────────────────────────────────────────────┘
```

## 🎯 Composants Principaux

### Backend (`app.py`)

**FastAPI Server** avec les fonctionnalités suivantes :

- **WebSocket en temps réel** : Communication bidirectionnelle pour le jeu
- **Game State Manager** : Gestion de l'état du jeu côté serveur
- **Game Loop** : 20 ticks/seconde pour une simulation fluide
- **AI System** : Intelligence artificielle pour l'adversaire
- **Production System** : File d'attente et construction d'unités/bâtiments

**Classes Principales** :
- `GameState` : État global du jeu (unités, bâtiments, terrain, joueurs)
- `ConnectionManager` : Gestion des connexions WebSocket
- `Unit`, `Building`, `Player` : Entités de jeu avec dataclasses
- Enums : `UnitType`, `BuildingType`, `TerrainType`

### Frontend

#### `index.html` - Structure
- **Top Bar** : Ressources, connexion, statistiques
- **Left Sidebar** : Menu de construction et entraînement d'unités
- **Canvas Principal** : Zone de jeu interactive
- **Minimap** : Vue d'ensemble avec indicateur de viewport
- **Right Sidebar** : File de production, actions rapides, stats
- **Notifications** : Système de messages toast

#### `styles.css` - UI/UX Moderne
- **Design sombre** : Palette de couleurs professionnelle
- **Animations fluides** : Transitions, hover effects, pulse
- **Responsive** : Adapté aux différentes tailles d'écran
- **Gradients** : Effets visuels modernes
- **Glassmorphism** : Effets de transparence et de flou

#### `game.js` - Client de Jeu
- **GameClient Class** : Gestion complète du client
- **Canvas Rendering** : Dessin du terrain, unités, bâtiments
- **Input Handling** : Souris, clavier, drag-to-select
- **WebSocket Client** : Communication en temps réel
- **Camera System** : Pan, zoom, minimap
- **Selection System** : Sélection unitaire et multiple

## 🎮 Fonctionnalités

### Gameplay**Types d'unités**
- Infantry (Infanterie) - 100💰
- Tank (Char) - 300💰
- Harvester (Récolteur) - 200💰
- Helicopter (Hélicoptère) - 400💰
- Artillery (Artillerie) - 500💰

✅ **Types de bâtiments**
- HQ (Quartier Général) - Base principale
- Barracks (Caserne) - Entraînement infanterie
- War Factory (Usine) - Production véhicules
- Refinery (Raffinerie) - Traitement ressources
- Power Plant (Centrale) - Production énergie
- Defense Turret (Tourelle) - Défense

✅ **Système de ressources**
- Ore (Minerai) - Ressource standard
- Gem (Gemmes) - Ressource rare (valeur supérieure)
- Credits - Monnaie du jeu
- Power - Énergie pour les bâtiments

✅ **Contrôles intuitifs**
- Sélection par clic ou drag
- Commandes par clic droit
- Raccourcis clavier
- Interface tactile-ready

### UI/UX Améliorée

🎨 **Design Professionnel**
- Interface sombre avec accents colorés
- Icônes emoji pour accessibilité
- Barres de santé dynamiques
- Indicateurs visuels clairs

📊 **HUD Complet**
- Affichage ressources en temps réel
- Compteur d'unités et bâtiments
- État de connexion
- File de production visible

🗺️ **Minimap Interactive**
- Vue d'ensemble de la carte
- Indicateur de viewport
- Clic pour navigation rapide
- Code couleur joueur/ennemi

⚡ **Performances Optimisées**
- Rendu Canvas optimisé
- Mises à jour incrémentales
- Gestion efficace de la mémoire
- Animations fluides 60 FPS

## 🚀 Déploiement

### Local

```bash
# Installation
cd web/
pip install -r requirements.txt

# Démarrage
python3 start.py
# ou
uvicorn app:app --host 0.0.0.0 --port 7860 --reload
```

### Docker

```bash
# Build
docker build -t rts-game .

# Run
docker run -p 7860:7860 rts-game
```

### HuggingFace Spaces

1. Créer un Space avec SDK Docker
2. Uploader tous les fichiers du dossier `web/`
3. HuggingFace build automatiquement avec le Dockerfile

## 📡 API WebSocket

### Messages Client → Serveur

**Déplacer unités**
```json
{
  "type": "move_unit",
  "unit_ids": ["uuid1", "uuid2"],
  "target": {"x": 100, "y": 200}
}
```

**Construire unité**
```json
{
  "type": "build_unit",
  "building_id": "uuid",
  "unit_type": "tank"
}
```

**Placer bâtiment**
```json
{
  "type": "build_building",
  "building_type": "barracks",
  "position": {"x": 240, "y": 240},
  "player_id": 0
}
```

### Messages Serveur → Client

**État initial**
```json
{
  "type": "init",
  "state": { ... }
}
```

**Mise à jour**
```json
{
  "type": "state_update",
  "state": {
    "tick": 1234,
    "players": {...},
    "units": {...},
    "buildings": {...},
    "terrain": [...],
    "fog_of_war": [...]
  }
}
```

## 🔧 Technologies Utilisées

### Backend
- **FastAPI** : Framework web moderne et performant
- **WebSockets** : Communication temps réel
- **Python 3.11** : Langage avec dataclasses, type hints
- **Uvicorn** : Serveur ASGI haute performance

### Frontend
- **HTML5 Canvas** : Rendu 2D performant
- **Vanilla JavaScript** : Pas de dépendances lourdes
- **CSS3** : Animations et design moderne
- **WebSocket API** : Communication bidirectionnelle

### DevOps
- **Docker** : Containerisation
- **HuggingFace Spaces** : Hébergement cloud
- **Git** : Contrôle de version

## 📈 Améliorations vs Version Pygame

### Accessibilité
✅ Fonctionne dans le navigateur (pas d'installation)
✅ Compatible multi-plateforme (Windows, Mac, Linux, mobile)
✅ Hébergeable sur le cloud
✅ Partage facile via URL

### UI/UX
✅ Interface moderne et professionnelle
✅ Design responsive
✅ Animations fluides
✅ Meilleure lisibilité

### Architecture
✅ Séparation client/serveur
✅ Prêt pour le multijoueur
✅ État du jeu côté serveur
✅ Communication temps réel

### Performance
✅ Rendu optimisé Canvas
✅ Mise à jour incrémentale
✅ Gestion efficace réseau
✅ Scalabilité améliorée

## 🎯 Prochaines Étapes Possibles

- [ ] Système de brouillard de guerre fonctionnel
- [ ] Pathfinding A* pour les unités
- [ ] Combat avec projectiles animés
- [ ] Système de son et musique
- [ ] Mode multijoueur réel
- [ ] Système de sauvegarde
- [ ] Campagne avec missions
- [ ] Éditeur de cartes
- [ ] Classements et statistiques
- [ ] Support tactile amélioré

## 📝 Notes Techniques

### Performance
- Game Loop : 20 ticks/seconde côté serveur
- Rendu : 60 FPS côté client
- Latence WebSocket : < 50ms en moyenne

### Sécurité
- Validation côté serveur de toutes les commandes
- Rate limiting possible
- Sanitization des inputs

### Scalabilité
- Architecture prête pour Redis (état partagé)
- Possibilité de load balancing
- Stateless pour scaling horizontal

---

**Développé avec ❤️ pour HuggingFace Spaces**