algo-battle : l'arène des bots de DevHub
Des chars pilotés par ton code, par de simples requêtes HTTP. L'arène est maintenant un donjon : le niveau 0 reste ouvert à tous comme avant, le niveau 1 se joue avec ton compte Discord et rapporte de l'XP, et le niveau 2 se prépare.
L'arène en ce moment
Niveau 1 · classement par XP
- Chargement…
Niveau 0 · kills de tous les temps
- Chargement…
Le visualiseur a déménagé sur algo.devhub-community.fr : un onglet par niveau, en direct, et une page de stats avec le classement complet et la fiche de chaque joueur (XP, kills, précision, heures où il est souvent là, derniers combats).
Les niveaux
| Niveau 0 · Arène | Niveau 1 · Les Catacombes | Niveau 2 · Machine learning | |
|---|---|---|---|
| Accès | ouvert à tous | ouvert à tous | à 500 XP (bientôt) |
| Connexion | pseudo seul, comme Battle Arena | obligatoire : compte Discord | obligatoire |
| Adresse | /api/join, /api/move… | /api/niveau/1/join… | |
| XP | aucune | +15 par kill, −8 par mort, +1 par fuyard | |
| Le défi | les bots des autres joueurs | en plus, des fuyards qui esquivent | des adversaires qui apprennent de vos bots |
| Chars | autant que tu veux | 3 par compte |
Aux deux niveaux, un char peut avoir 10 balles en vol en même temps. Pourquoi pas d'XP au niveau 0 ? Sans compte, rien ne prouve qui pilote un char : n'importe qui peut envoyer des ordres au char d'un autre. Au niveau 1, chaque char est attaché à un compte.
Jouer au niveau 0
L'API de Battle Arena n'a pas changé : les bots qui jouaient avant marchent toujours, sans modification.
| Route | Corps | Ce que ça fait |
|---|---|---|
POST /api/join | {"username": "MonBot"} | entre dans l'arène, renvoie ton player_id |
POST /api/move | player_id, direction_x, direction_y | roule dans cette direction (entre −1 et 1) |
POST /api/shoot | player_id, direction_x, direction_y | tire dans cette direction |
GET /api/state | chars, balles, obstacles, taille de la carte | |
GET /api/stats | totaux de l'arène et meilleurs joueurs du moment | |
POST /api/leave | player_id | quitte l'arène |
# pip install requests import requests, time API = "https://devhub-community.fr/api" pid = requests.post(f"{API}/join", json={"username": "MonBot"}).json()["player_id"] while True: etat = requests.get(f"{API}/state").json() # qui est où ? requests.post(f"{API}/move", json={"player_id": pid, "direction_x": 1, "direction_y": 0}) requests.post(f"{API}/shoot", json={"player_id": pid, "direction_x": 0, "direction_y": -1}) time.sleep(0.1)
Les règles
- Carte de 100 × 100 avec 20 obstacles ; les balles rebondissent sur les bords.
- 100 PV, 10 dégâts par balle ; balle à 15 unités/s, char à 5 unités/s ; un tir toutes les 0,5 s.
- La vie remonte toute seule après 3 s sans dégât, plus vite à l'arrêt qu'en roulant.
- Après une mort, on peut revenir 10 s plus tard ; un char qui ne reçoit plus d'ordre pendant 120 s est retiré.
- Toutes les valeurs exactes :
GET /api/regles. Documentation interactive :/api/docs.
429
avec l'en-tête Retry-After. Attends ce délai et recommence : 10 tours par seconde suffisent largement.
Jouer au niveau 1
- Sur le Discord DevHub, tape
/algo-battle connexionet choisis ton mot de passe (8 caractères minimum, sans ton pseudo dedans). Ton identifiant, c'est ton pseudo Discord (ou ton identifiant Discord en chiffres). - Ton bot entre avec
POST /api/niveau/1/join:identifiant,mot_de_passe,char(1, 2 ou 3) et unnompour ton char. Il reçoit unplayer_idqui reste secret. - Ensuite, mêmes routes qu'au niveau 0 sous
/api/niveau/1/:move,shoot,state,leave, plusmepour l'état de ton char. /algo-battle profilsur Discord affiche ton XP, ton rang et tes kills.
import os, requests, time BASE = "https://devhub-community.fr/api/niveau/1" corps = {"identifiant": os.environ["ALGO_IDENTIFIANT"], # ton pseudo Discord "mot_de_passe": os.environ["ALGO_MOT_DE_PASSE"], # jamais écrit dans le code "char": 1, "nom": "MonBot"} pid = requests.post(f"{BASE}/join", json=corps).json()["player_id"] while True: etat = requests.get(f"{BASE}/state").json() fuyards = [p for p in etat["players"] if p.get("fuyard")] # +1 XP chacun requests.post(f"{BASE}/move", json={"player_id": pid, "direction_x": 1, "direction_y": 0}) time.sleep(0.1)
Les Catacombes sont plus grandes et plus encombrées que l'arène, les balles y vont plus vite, et des
fuyards y tournent en permanence : des chars pilotés par le jeu qui ne tirent pas, mais
esquivent très bien et vont plus vite que toi. Seul, on ne les rattrape pas : il faut anticiper, les coincer
ou chasser à plusieurs. Dans state, ce sont des joueurs avec "fuyard": true.
XP et bonus de loot
- +15 XP par kill, −8 XP par mort, +1 XP par fuyard abattu. L'XP ne descend jamais sous 0.
- Des garde-fous empêchent le farm : l'XP gagnée par heure est plafonnée, et tuer encore la même victime rapporte de moins en moins.
- Le bonus de chance de loot monte doucement tant que ton bot joue (jusqu'à 5 %). Il servira pour le loot des prochains niveaux.
- À 500 XP, le niveau 2 · Machine learning t'attend dès son ouverture : l'XP gagnée maintenant compte déjà.
Un script, une boucle, et ton char est dans l'arène. Rendez-vous sur le panel pour le regarder jouer.