Jeu de tir multijoueur avec API REST. Les joueurs se déplacent librement sur une carte 100×100, tirent des balles et s'affrontent en temps réel. Un site de visualisation est disponible ici.
- Map: 100×100 unités avec obstacles fixes
- Physique: Déplacement continu (pas de cases), 60 FPS
- Combat: 100 HP, 10 dégâts/balle, cooldown 0.5s
- Collisions: Joueurs bloqués par obstacles et autres joueurs
- Balles: Traversent les obstacles, max 5 simultanées par joueur
- Respawn: 10 secondes de cooldown après mort
- Sécurité: Les IDs des joueurs ne sont jamais exposés publiquement
Rejoindre la partie
Request:
{
"username": "alice"
}Response:
{
"success": true,
"player_id": "alice_a1b2c3d4",
"position": [45.3, 52.1],
"health": 100
}Quitter la partie volontairement
Request:
{
"player_id": "alice_a1b2c3d4"
}Response:
{
"success": true
}Déplacer son joueur
Request:
{
"player_id": "alice_a1b2c3d4",
"direction_x": 1.0,
"direction_y": 0.5
}Response:
{
"success": true,
"position": [46.1, 52.6]
}Tirer une balle
Request:
{
"player_id": "alice_a1b2c3d4",
"direction_x": 0.0,
"direction_y": -1.0
}Response:
{
"success": true,
"bullet_id": "bullet_xyz123"
}Récupérer l'état complet du jeu. Note: Les IDs ne sont pas renvoyés pour éviter le vol de session.
Response:
{
"players": [
{
"username": "alice",
"x": 45.3,
"y": 67.8,
"health": 80,
"kills": 3
}
],
"bullets": [
{
"x": 23.1,
"y": 45.6,
"vx": 10,
"vy": 5
}
],
"obstacles": [
{
"id": 0,
"x": 10,
"y": 10,
"width": 3,
"height": 3
}
],
"map": {
"width": 100,
"height": 100
}
}Statistiques du jeu
Response:
{
"server": {
"uptime_seconds": 3600,
"tick_rate": 60
},
"game": {
"players_online": 12,
"bullets_active": 34,
"obstacles_count": 25,
"total_kills_all_time": 287,
"total_deaths_all_time": 287,
"total_shots_all_time": 1543
},
"top_players_current": [
{
"username": "alice",
"kills": 15,
"health": 70
}
]
}import requests
# Rejoindre
response = requests.post("https://devhubcommunity.duckdns.org/api/join",
json={"username": "MyBot"})
player_id = response.json()['player_id']
# Boucle de jeu
while True:
# Récupérer état
state = requests.get("https://devhubcommunity.duckdns.org/api/state").json()
# Décider action...
# Bouger
requests.post("https://devhubcommunity.duckdns.org/api/move", json={
"player_id": player_id,
"direction_x": 1.0,
"direction_y": 0.0
})
# Tirer
requests.post("https://devhubcommunity.duckdns.org/api/shoot", json={
"player_id": player_id,
"direction_x": 0.0,
"direction_y": -1.0
})
time.sleep(0.2)Libre d'utilisation pour notre serveur Discord DevHub : https://discord.gg/gzQsFdHQPC
Pull requests bienvenues!
Bon jeu! 🎮🔫