[MàJ 2.49] IA en JavaScript, TypeScript et Python, page Collection, et saisons événementielles
Salut à tous !
La mise à jour 2.49 est en ligne ! Au programme : les saisons événementielles débarquent, vous pouvez maintenant coder vos IA en Python et TypeScript en plus du LeekScript, une nouvelle page Collection, un historique de combat filtrable, et une grosse passe de traductions sur les 17 langues.
Le détail complet est ici : https://leekwars.com/release/2.49
Saisons événementielles
- Le jeu a désormais ses saisons : Solstice, Canicule, Halloween, Pâques et Noël. Pendant une saison, un bandeau s'affiche dans le potager et un petit message d'annonce vous accueille.
- Chaque saison booste un type de combat avec +50 % d'XP et de butin (par exemple les Battle Royale pendant le Solstice). De quoi varier les habitudes selon la période.
- Et 10 nouveaux trophées de saison, réunis dans une catégorie « Saisons » : cinq pour s'être connecté pendant chaque saison, cinq pour avoir joué 1000 combats du type boosté.
Vos IA en JavaScript, Python et TypeScript
- Vous pouvez maintenant écrire vos IA en JavaScript, Python ou TypeScript, en plus du LeekScript : créez simplement un fichier
.js, .py ou .ts dans l'éditeur, et équipez-le comme n'importe quelle IA. Le multi-fichiers marche naturellement (import entre vos IA, sous-dossiers, chemins relatifs), et le TypeScript est transpilé automatiquement.
- Sous le capot, votre code tourne dans une sandbox GraalVM isolée du moteur de combat, avec un budget mémoire qui suit le niveau du poireau. En JavaScript et TypeScript, les opérations sont comptées de façon déterministe : un compteur d'instructions maison, pas un chronomètre, donc le même code donne toujours le même compte quelle que soit la charge du serveur. Les fonctions de combat gardent leur coût en opérations habituel. (En Python, le budget repose encore sur le temps CPU, le compteur déterministe viendra.)
- Ces langages profitent d'une API 100 % objet :
me, des entités typées (Leek, Turret, Bulb, Chest, Mob), Weapon et Chip qui héritent d'Item, les cases (Cell), le terrain (Field) et Fight. Les méthodes renvoient de vrais objets, pas des ids : me.weaponCell(target) renvoie une Cell, cell.path(target) un chemin de Cell. Les constantes sont rangées par famille (Effect.DAMAGE, State.UNHEALABLE, Entity.Stat.STRENGTH, Cell.Type.EMPTY...) et en JS/TS les armes et puces sont des instances partagées : me.weapon === Weapon.pistol quand le pistolet est équipé, et weapon.features liste ses caractéristiques.
- Côté éditeur : en TypeScript et JavaScript, vérification de types en direct et autocomplétion sur toute l'API de combat, livrée entièrement typée ; en Python, validation en direct via Pyright (noms indéfinis, erreurs de type et de syntaxe signalés pendant que vous tapez). À l'inscription, on choisit désormais son langage de départ, avec une IA d'exemple par langage.
- Et le LeekScript dans tout ça ? Il ne bouge pas d'un poil : même API, mêmes coûts, il reste le langage de référence du jeu.
Collection et historique
- Nouvelle page Collection : visualisez votre progression sur les armes, les puces, les chapeaux, les potions et les ressources. Pour les complétionnistes.
- L'historique de combat gagne des filtres (par résultat, par type de combat) et une recherche d'adversaire, et se met à jour en direct sans recharger la page.
Éditeur et confort
- Une palette de commandes façon VSCode, accessible avec
Ctrl+Shift+P, pour lancer les actions de l'éditeur au clavier.
- Le thème de l'éditeur suit maintenant automatiquement celui du site (clair/sombre), et le code de vos IA est mis en cache localement pour un chargement plus rapide.
- Et aussi : une page Contact refondue, des pages d'article dédiées pour le dev blog (indexées par les moteurs de recherche), une page de maintenance avec un mini-jeu de course de poireau, le nom des poireaux dans l'arbre des tournois, un bouton pour renouveler la vitrine d'items de la boutique, et un clic sur une notification de combat qui ouvre directement le rapport ou le combat.
LeekScript et corrections
- Côté langage : la covariance du type de retour lors de la redéfinition d'une méthode, l'accès indexé optionnel
a?[b], de nouvelles constantes, et pas mal de correctifs du compilateur et de l'exécution.
- Une grande passe de qualité sur les traductions des 17 langues (complétions et contresens corrigés), et une longue liste de correctifs d'affichage (combat, chat, forum, éditeur, trophées).
Un mot pour finir : ouvrir les IA à JavaScript, Python et TypeScript, c'est un rêve de longue date et sûrement l'une des plus grosses évolutions du jeu depuis des années. Trois vrais langages, avec toute l'API de combat, dans l'éditeur comme en combat. J'ai très hâte de voir ce que vous allez en faire. Et dites-moi en commentaire quel langage vous aimeriez voir débarquer ensuite ! Rendez-vous dans le potager !
Pilow