Héberger son bot algo-battle sur DevHub
Ton bot pilote un char dans l'arène pendant que ton PC est éteint : il chasse au niveau 1, gagne de l'XP et fait monter ton bonus de chance de loot. Compte, code, hébergement : tout est ici.
algo-battle en deux minutes
algo-battle est une arène de chars pilotés par programme : ton bot lit l'état de l'arène, choisit un cap, vise et tire, par de simples requêtes HTTP. L'arène est organisée en donjon : chaque niveau a son défi.
| 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 avant | 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 pilotés par un algorithme d'évasion | des adversaires qui apprennent |
| Chars | autant que tu veux | 3 par compte, 10 balles en vol chacun |
Tout se suit sur algo.devhub-community.fr : les niveaux 0 et 1 en direct, et la page des stats des joueurs du niveau 1 (classement, XP, kills, heures de présence, derniers combats).
1. Créer ton compte
Sur le Discord DevHub, tape /algo-battle connexion. Une fenêtre visible de toi seul
s'ouvre : 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).
Tu peux relancer la commande quand tu veux pour changer de mot de passe : l'ancien arrête de marcher
aussitôt. /algo-battle profil affiche ton niveau, ton XP et tes stats.
{"username": "MonBot"}), mais sans XP : rien n'y prouve qui joue. L'XP se gagne au
niveau 1, connecté à ton compte, et c'est elle qui ouvrira le niveau 2.
2. Un bot prêt à héberger
Un fichier, une dépendance (requests). Le mot de passe vient d'une
variable d'environnement : jamais en dur dans le code, surtout si ton dépôt est public.
"""Bot algo-battle minimal : fonce vers le char le plus proche et lui tire dessus.""" import math, os, time import requests API = os.environ.get("ALGO_API", "https://devhub-community.fr/api") IDENTIFIANT = os.environ["ALGO_IDENTIFIANT"] # ton pseudo Discord MOT_DE_PASSE = os.environ["ALGO_MOT_DE_PASSE"] # choisi avec /algo-battle connexion NOM = os.environ.get("ALGO_NOM", "MonBot") # lettres, chiffres, _ et - BASE = f"{API}/niveau/1" # le niveau où l'XP compte http = requests.Session() def rejoindre(): corps = {"identifiant": IDENTIFIANT, "mot_de_passe": MOT_DE_PASSE, "char": 1, "nom": NOM} while True: r = http.post(f"{BASE}/join", json=corps, timeout=5) if r.ok: j = r.json() # un char repris garde son nom return j["player_id"], j.get("nom", NOM) print("join refusé :", r.status_code, r.text[:200]) # mort récente, niveau fermé, mauvais mot de passe... time.sleep(float(r.headers.get("Retry-After", 5))) def envoyer(route, pid, dx, dy): """Envoie /move ou /shoot. Renvoie False si le char n'existe plus (détruit) : il faut refaire /join.""" r = http.post(f"{BASE}/{route}", json={"player_id": pid, "direction_x": dx, "direction_y": dy}, timeout=5) if r.status_code == 429: # trop de requêtes : on attend ce que dit le serveur time.sleep(float(r.headers.get("Retry-After", 1))) return '"char_' not in r.text # code « char_mort » ou « char_introuvable » pid, nom = rejoindre() while True: etat = http.get(f"{BASE}/state", timeout=5).json() moi = next((p for p in etat["players"] if p["username"] == nom), None) autres = [p for p in etat["players"] if p is not moi] if moi is None: # pas encore dans l'état (ou détruit) : on vérifie vivant = envoyer("move", pid, 0, 0) elif autres: cible = min(autres, key=lambda p: math.dist((p["x"], p["y"]), (moi["x"], moi["y"]))) dx, dy = cible["x"] - moi["x"], cible["y"] - moi["y"] vivant = envoyer("move", pid, dx, dy) and envoyer("shoot", pid, dx, dy) else: vivant = envoyer("move", pid, 1, 0) # personne : on patrouille (sinon retiré après 2 min) if not vivant: pid, nom = rejoindre() time.sleep(0.1) # 10 tours par seconde, largement assez
requests>=2.31
Pour l'essayer chez toi : ALGO_IDENTIFIANT=ton_pseudo ALGO_MOT_DE_PASSE=... python bot.py.
Toutes les routes et les règles sont dans la documentation de l'API.
3. L'héberger sur DevHub
- Atteins le niveau du site demandé par le plan (affiché dans le shop ; c'est ton activité des derniers jours sur le Discord, visible sur ton espace perso).
- Dans le shop, demande « Hébergement de bot algo-battle » : 1 bot, 128 Mo de RAM, un quart de cœur, 512 Mo de disque. Rien à payer.
- Tu arrives sur le panel d'hébergement : connecte-toi avec Discord, ton accès est déjà actif.
- Déploie depuis ton dépôt Git public ou une archive ZIP contenant
bot.pyetrequirements.txt. Commande de démarrage :python bot.py. - Ajoute les variables d'environnement
ALGO_IDENTIFIANT,ALGO_MOT_DE_PASSE(secrète, stockée chiffrée), et si tu veuxALGO_NOM. - Démarre, lis les logs, et regarde ton char apparaître sur le panel.
Retry-After (le bot ci-dessus le fait déjà).
4. XP, niveaux et bonus de loot
- XP : seulement au niveau 1. Un kill en rapporte, une mort en coûte, jamais en dessous de 0. Elle ne compte qu'à partir de l'ouverture du donjon : les kills d'avant ne rapportent rien.
- Pas de farm : l'XP gagnée par heure est plafonnée, et tuer encore la même victime rapporte de moins en moins.
- Niveau 1, le niveau algorithme : ouvert à tous les comptes. Six fuyards y tournent en permanence : ils ne tirent pas, esquivent les balles, se cachent derrière les obstacles et vont un peu plus vite que toi. Viser droit ne suffit pas : il faut anticiper, les coincer contre un mur ou chasser à plusieurs. Chacun rapporte 1 XP.
- Niveau 2, le niveau machine learning : annoncé, il s'ouvrira à 500 XP. L'XP gagnée d'ici là compte déjà, et une fois ouvert, il le restera.
- Bonus de chance de loot : tant que ton bot est en ligne (un char en jeu, connecté, qui envoie des commandes), chaque demi-heure augmente un peu ta chance de loot des prochains niveaux. Il monte doucement et plafonne à 5 %.
| En ligne | 1 jour | 1 semaine | 1 mois | 3 mois |
|---|---|---|---|---|
| Bonus de chance de loot | +0,12 % | +0,8 % | +2,6 % | +4,4 % |
Il n'y a pas encore de loot : le bonus est compté dès maintenant pour plus tard. C'est là que l'hébergement fait la différence : un bot qui tourne 24 h/24 avance pendant que tu dors.
Compte sur Discord, code ci-dessus, plan dans le shop : ton char peut être dans l'arène ce soir.