Leek Wars, jeu de programmation d'IA
#11
Ok merci pour ta réponse.

Bon et sinon, pour revenir dans le cadre du forum, vous utilisez quoi comme techno ? Le site semble tourner sur du PHP mais il m'a semblé lire que le LeekScript tournait sur la JVM.

Pour le parser vous utilisez quoi, un generateur de parser LALR (s'il en existe un bon en PHP je le veux bien) ?

Je pense que le côté user scripting est très intéressant. Sans aller dans la création d'IA, je crois que ça peut intéresser beaucoup de monde. Par exemple sur mon jeu le joueur pourra gérer une ligne de production. ça serait cool si je peux tirer un script de tous les réglages qu'il fait pour qu'il puisse ajouter des conditions par exemple.

Je vois que les combats sont résolus très vite. Dites nous-en plus sur l'architecture de LeekWars.
Répondre
#12
je suis déçu... y a niahoo qui s'éclate et j'arrive pas a rentrer...

j'ai reçu le mail de confirmation mais quand je clique sur le lien, j'ai une erreur 404, compte invalide

pseudo : TerRowan
[WIP]projet Rivages
[WIP]projet Arthur (comme si ça suffisait pas d'un...)
Répondre
#13
beau projet et ca sort bien de l'ordinaire bravo 2
Répondre
#14
starmindfr > Merci 2

TerRowan > J'ai regardé et ton compte semble être activé, as tu réussi à l'activer entre temps où tu n'as pas encore tenté de te connecter ?

niahoo>
On utilise différentes techno 34 :
Pour l'affichage des combats on fait ça en HTML5 avec un Canvas et du JS. Le site lui est en Php/Html/Javascript et pour la base de données on a décidé d'utilise PostgreSQL.
On utilise également des Websocket pour les notifications, le chat global, de forum et les messages privés 2

La génération des combats et la compilation des IA sont réalisées par un serveur Java qui tourne en fond sur notre serveur.
Au début j'ai pensé utiliser un moteur Javascript existant, mais les performances étaient pas terrible, du coup on a décidé de programmer entièrement la gestion du LeekScript.
Donc je n'ai pas utilisé de générateur de parser, tout a été fait "à la main".
Quand un joueur enregistre son IA dans l'éditeur, le serveur vérifie la validité du script, si il y a des erreurs il les indique (sur ce point on va retravailler un peu pour que les erreurs soient plus parlantes), et s'il n'y en a pas, il génère un code en java qui sera compilé et exécuté lors des combats.
On a essayé d'optimiser au maximum afin que la génération des combats reste le plus rapide possible (actuellement même les gros combats en équipe ne mettent pas plus d'une seconde à être générés).

Voilà comment marche Leek Wars 34 Si vous voulez plus de détails sur un point n'hésitez pas à demander 16

Dawyde
Répondre
#15
ah bah je rentre finalement et déjà niveau 3 sans rien faire rolalala :p


bon ben je regarde ce soir
[WIP]projet Rivages
[WIP]projet Arthur (comme si ça suffisait pas d'un...)
Répondre
#16
Merci 2

Allez je continue : du coup, pour la communication entre PHP et Java il y a quelque chose ? ou bien ça se passe juste en base de données ?

Pour le parser vous l'avez généré à base de regexp du coup, à la main ?
Répondre
#17
La communication entre java et php se fait par socket et base de données (on se sert des socket pour envoyer un signal au serveur java histoire qu'il lance la compilation d'une IA ou la génération d'un combat, ça sert aussi de synchronisation, le serveur envoie un packet à la fin de la compilation ou de la génération du combat).

Pour ce qui est du parser ça lit caractères par caractères le code pour le découper en "Mots" qui ensuite sont analysés pour vérifier la syntaxe du code.
(Découpage en blocs : fonctions, if, else, while... ; Piles pour les expressions, ect...).
Si le parser rencontre une erreur durant son analyse du code il lève une exception, et je renvoie le message au joueur 2
Répondre
#18
OK merci !

Je suis en train d'essayer de monter un truc similaire : PHP + un serveur derrière. Bon pas du tout pour les mêmes raisons mais l'idée est la même. C'est bien de savoir faire ça.
Répondre
#19
Salut !
Plus j'y joue et plus je trouve votre concept génial. La programmation de l'IA est un vrai plus.
J'ai juste une question concernant les tournois : j'ai "perdu" un match alors qu'il y avait un match nul.
Comment attribuez-vous la victoire dans un tournoi ? Selon le nombre de PV restants ? Mon adversaire en avait 2 de plus que moi à la fin du combat mais je pense que je lui en ai mis plus dans la gueule pendant le match. Si c'est bien le nombre de PV qui départage, il faut que je booste la vie au dernier tour 2
@+
Répondre
#20
Salut !

Nous avons pas mal réfléchis à ce soucis 34. Puis on s'est dit que c'était compliqué de juger de qui allait gagner puisqu'il y a plusieurs façon de jouer :
- Faire au nombre de point de vie restant ça désavantage ceux qui jouent avec la force (moins de heal).
- Faire au nombre de dégats infligés ça désavantage ceux qui ont un poireau agi (bouclier / heal).

Du coup on a décidé que le fait de gagner un combat en 64 tour était une contrainte à pendre en compte lorsque l'on crée son IA. Ainsi si il y a un match nul, il n'y a pas de gagnant et personne ne monte. 2

Il y a des topic parlant de ça en développant un peu plus sur le forum du jeu si tu veux plus de détails 34

Dawyde
Répondre




Utilisateur(s) parcourant ce sujet : 1 visiteur(s)