Projet HEPIA ISC — Université d'automne Rust 2024
IA de combat spatiale 2D développée en Rust pour la plateforme oort.rs. L'objectif : détruire le vaisseau adverse contrôlé par le code d'une autre équipe.
Notre vaisseau, THE CAMPER KILLER, a atteint la demi-finale du tournoi face à une quinzaine d'équipes concurrentes. 🔥
- Yassin EL HAKOUNI
- Riad HYSENI
- Navid E
Groupe : Oh Rust Is (ISC 2e année – HEPIA)
Chaque équipe devait coder son vaisseau en Rust pour l'affrontement sur la plateforme oort.rs. Les combats se déroulaient sur une grille 2D : le dernier vaisseau en vie gagnait la manche.
Contraintes principales :
- Les vaisseaux utilisent des armes et missiles disponibles via l'API Oort.
- Les missiles peuvent être guidés par radar ou radio.
- Les tirs doivent être précis, calculés selon la vitesse et position future de l'adversaire.
Notre choix stratégique : ✔️ Pas de radio (pour éviter le brouillage adverse) ✔️ Radar étroit + balayage continu ✔️ Prédiction de tir épurée et constante ✔️ Barrage de missiles en approche continue
Fichier : src/the_camper_killer.rs
/*
* Auteurs : "HYSENI Riad", "EL HAKOUNI Yassin" & El Magnifico "E Navid"
* Notre vaisseau fighter : THE CAMPER KILLER
* DISCLAIMER: On n'utilise pas la radio par stratégie afin de ne pas se faire brouiller nos missiles
* A la place on utilise les radars sur les missiles
*/- Calcul de la position future de l'ennemi en fonction de sa vitesse.
- Ajustement de la trajectoire et tir en continu.
- Les balles rapides (∼1000 m/s) sont calibrées pour anticiper le mouvement adverse.
fn predict_target_position(enemy_position: Vec2, enemy_velocity: Vec2) -> Vec2 {
let future_position = enemy_position + enemy_velocity * 0.005;
let bullet_time_to_target = (future_position - position()).length() / BULLET_SPEED;
future_position + enemy_velocity * bullet_time_to_target * 0.005
}- Chaque missile utilise son propre radar (pas de dépendance radio).
- Ajustement constant vers la cible détectée.
- Explosion automatique si à moins de
200m.
if distance_to_target < EXPLOSION_RANGE {
explode();
}Pour cela rendez-vous sur oort.rs. En haut à droite au lieu de Welcome, rendez-vous sur "Tournament > Fighter Duel" puis collez le code dans la partie gauche "Editor (Player)". Si vous ne voyez pas la partie gauche, il suffit de cliquer sur le tout petit bouton tout en haut à droite pour déplier la section. Une fois le code collé, cliquez sur le bouton d'exécution de la simulation.
Ensuite, il ne reste plus qu'à admirer le vaisseau violet ennemi se faire abattre !
Voir la présentation de notre code et de notre stratégie :
📄 slides/presentation_Oh_Rust_Is.pdf
- Tournoi interne HEPIA (2024) diffusé sur Twitch.
- Classement : Demi-finale sur une quinzaine d'équipes.
- Classement mondial sur le site : 33èmes.
- Note finale : 5.5 / 6 (code + présentation).
- Navigation proportionnelle pour les missiles.
- Radar adaptatif selon la distance.
- Tir évasif (pour éviter les collisions directes).
Ce projet est distribué sous licence MIT. Consultez le fichier LICENSE pour plus de détails.
© 2024 HEPIA ISC — Projet Rust : THE CAMPER KILLER