IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Projets Discussion :

[WE Jeu] Participation de Golgotha


Sujet :

Projets

  1. #1
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut [WE Jeu] Participation de Golgotha
    Bonjour,

    Pour ma part, je vais reprendre une idée que j'avais soumis sur le site il y à quelques temps : un jeux destiné aux développeurs.

    http://www.developpez.net/forums/d80...uotidien-bots/

    Le but : Pouvoir affronter les IA des autres, tout en regardant le déroulement de la scène du jeux en temps réel sur le site web.

    Voici quelques grande ligne du site web et du jeux :

    Le site web constitueras la partie visuel du jeux, dans un premier temps, et pour que la création en un week end soit réaliste, une seule arène sera disponible sur le site web. Une arène est un monde physique, à l'intérieur duquel votre robot pourra se mouvoir. Le robot est la partie que vous pourrez contrôler, à partir d'un client coder chez vous, avec n'importe quelle langage de programmation.

    Le but est donc de prendre tout d'abord connaissance des actions que le robot peux effectuer, et les règles pour gagner une partie. Ensuite, à vous de concevoir un client, et un algorithme, pour essayer d'imposer votre domination dans l'arène de combat, avec votre robot.

    Les échanges entre le serveur, et le client, se ferons par des services web.

    Dans un premier temps, voici les fonctionnalités de base qu'il faut que je développe :

    - La partie graphique (page web + arène)
    - Les services web

    Voilà, si ça vous parais obscure, ou si vous avez des remarques, n'hésiter pas!

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 20
    Points
    20
    Par défaut
    +1 dans la team.
    Après une discussion, voici ce que je sais.

    Nom du jeu : Wpybots

    Le jeu se passe sur un tableau quadrillé.
    Le programmeur se connecte sur le serveur et il reçoit un numéro d'identification. Après avoir reçu le OK que le jeu commençais, il peut envoyer des données sur le serveur.
    Chaque information que le serveur reçoit, il le met dans une liste avec un maximum de 5 (je lui conseille d'attendre de recevoir les informations avant de lancer pleins de commande au robot...)

    Le jeu se passe en 2 dimensions! Il a un aperçu de hauteur pour les admirateurs dans les estrades du ring!

    Voici les requêtes qu'il peut faire au robot :
    -avancer devant
    -tourner (90°) dans une direction
    -demander direction (rose des vents)
    -scan d'objet devant nous ( en forme de cône (un triangle bossé!))
    -viser un objet (dans notre champ de vision, selon un objet ou une direction du cône (3) )
    -lance missile (droit devant nous ou sur la case visé) (l'avantage est d'être en diagonale ou en ligne droite devant l'autre robot)
    -regarder son énergie
    -calcul de distance pour les objets trouver du scan
    -si le déplacement s'est effectué (ouais, le robot ne le sait pas sinon :p!)

    Voilà les "sensors" qu'on a mit logiquement dans le robot !
    C'est le niveau 1, c'est assez simple! Mais ça décourage le déplacement du robot manuellement !

    Ensuite de ça, comme Golgotha l'a mentionné, il aura un interface pour regarder le match. Ce sera une page web qui montrera en temps réel le combat avec des requêtes AJAX de JavaScript.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 20
    Points
    20
    Par défaut
    Pour jouer au jeu :
    On doit aller sur la page d'accueil du site internet. Si vous créer une partie, ils vous donnera un numéro de groupe et un numéro de robot (super unique qui ne faut pas perdre! et ne regarder pas sur l'écran de votre voisin!!).

    Plus tard, on vous montrera à quoi devra ressembler le xml que vous envoyez au serveur, mais c'est certain qu'il aura ses deux numéros dedans !

    Si vous voulez aller dans la game de votre ami, choisissez dans la liste des games! Ensuite, il vous sera attribué un numéro de robot.

    Vous pourrez toujours être spectateur au game (vous n'avez juste pas de numéro de robot).
    Il n'aura pas plus de protection pour le moment...

    Une fois la partie créé (elle se crée dès qu'on demande une game), on attend que le créateur demande de débuter la partie. Une fois créer, le serveur enverra un go au robot!
    C'est un système de tour par tour. Si vous ne répondez pas après 10 secondes, tu passes ton tour. Cependant, la partie devrait se dérouler plus rapidement...

    Pour le moment, c'est comme ça qu'on va fonctionner... le plus simple pour réussir à faire ça en une fin de semaine!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 20
    Points
    20
    Par défaut
    Voici la conception que j'ai fait. Certaines choses pourront être changé. J'essaie d'avoir une structure et un format de transfert des données.

    Ici on parle de la communication du JavaScript et le serveur. Mais je conseille la même structure pour les programmes... mais qu'il utilise du xml ??

    Les données envoyés au serveur!
    1.lorsqu'on fait une demande d'information, on n'a qu'à passer le numéro de son robot
    2.le type de requête (exemple : état de la partie!)
    Les données reçus
    -c'est du texte qu'on doit interprété comme du JSON
    1.Numéro du tour
    2.joueurs
    2.1 Nom joueur
    2.2 numéro d'action

    Si un joueur n'est pas dans la liste des actions de joueur, c'est qu'il a décidé de rien faire!

    Les numéros d'action
    0.rien faire
    1.avancer 1 case
    2.Si déplacement réussi
    3.tourner à gauche(-90°)
    4.tourner à droite(90°)
    5.demander direction (Est, Ouest, Nord ou Sud) (voir section direction)
    6.scanner horizon (4 cases devant nous en triangle)
    7.viser un objet (le mettre dans son champs de tire)
    8.lancer missile (voir section missile)
    9.info énergie (donne la vie en format entier)
    10.calcul distance d'un objet

    Le scan
    -Il retourne un tableau qui contient des tableaux.
    Ces tableaux contiennent le nom de l'objet et sa direction.
    Une direction signifie dans quel zone l'objet est situé.
    VOIR SECTION DIRECTION
    Exemple : [["robin",1];["rateau",1];["pierre",1]] -> il a deux objets à gauche et un à droite
    [] -> aucun objet trouvé
    -Ni un mur, ni une limite du plan ne sont des objets! Seulement des robots (pour le moment) sont des objets!

    Les directions, ce sont des zones selon la vision! On utilise les chiffres et non le mot pour désigner une direction. :
    1.Gauche
    2.Devant
    3.Droite

    Calcul de distance d'un objet
    Il faut mettre le nom de l'objet obtenu au scan! Sinon, ça retourne -1!
    Si le nom est bon, mais que l'objet n'est plus dans la zone, ça retourne -1.
    Si le nom est bon et qu'il est dans la zone, il retourne la distance la moins longue de case qui les sépare.

    Les missiles, ce sont des projectiles (de plasma, tsé!) qui vont en ligne droite jusqu'à 10 cases.
    Quand il a un missile, il faut passer en paramètre la direction. Si la valeur est 0,
    on lance le missile en direction de la case visé!
    Les dommages d'un missile par défaut est 10 de dégâts. À la dixième case, si elle a rencontré aucun robot, le projectile explose
    et fait 150% de dégât!

    Énergie, on a par défaut on a 50 de vie.

  5. #5
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    Le modele du Robot est en cours de construction :

    FAIT
    TODO

    def upTour(self):
    def move_right(self):
    def move_left(self):
    def move(self):
    def getX(self):
    def getY(self):
    def getHealth(self):
    def getDirection(self):

    def launchRocket(self):
    def scan(self):
    def randomHeading(self):
    def towards(self):


    Je code en même temps le'API associé a toutes ces fonctionnalités.

    Jalons :

    Ce soir :

    Terminer le coeur de l'API et le model du robot.
    Pouvoir lancer des requêtes sur le serveur via l'API.
    Réaliser un match test, et le visualiser dans la BDD.

    Demains :

    Associer la partie serveur et la vue client pour visualiser un match.
    Réaliser un client test puis un match.

  6. #6
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    Je rajoute une petite note pour le jeux :


  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 20
    Points
    20
    Par défaut
    Je vais dire comment que le JavaScript s'attend à communiquer avec le serveur pour le moment.

    Il envoie une requête à chaque 5 secondes.
    Dans sa requête, il envoie le tour désiré (logiquement, le prochain qu'il a en mémoire). Même si le jeu est situé plus loin, il va toujours montrer le prochain tour.

    Le serveur répond en envoyant les informations de se tour. S'il n'a pas encore les informations, le serveur va simplement retourner une variable vide.

    Le format de la variable attendu par le JavaScript
    -c'est du texte qu'on doit interprété comme du JSON
    1.noTour
    2.robots (un tableau)
    2.1 robot (nom)
    2.2 noAction (selon la liste d'action)

    Si un joueur n'est pas dans la liste des actions de joueur, c'est qu'il a décidé de rien faire!

    Les numéros d'action
    0.rien faire
    1.avancer 1 case
    2.Si déplacement réussi
    3.tourner à gauche(-90°)
    4.tourner à droite(90°)
    5.demander direction (Est, Ouest, Nord ou Sud) (voir section direction)
    6.scanner horizon (4 cases devant nous en triangle)
    7.viser un objet (le mettre dans son champs de tire)
    8.lancer missile (voir section missile)
    9.info énergie (donne la vie en format entier)
    10.calcul distance d'un objet

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 20
    Points
    20
    Par défaut
    Nous sommes en réflexion pour ce qu'on fait du serveur qui reçoit toutes les requêtes... pour le moment, on met une pause sur cette partie.

    De mon coté, je vais regarder pour les canvas pour la représentation du jeu sur le web!

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 20
    Points
    20

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 20
    Points
    20
    Par défaut
    L'activité est fini... mais je n'abandonne pas !

    Puisqu'on a maintenant du temps devant nous, j'ai choisis d'utiliser et de découvrir la balise <canvas> du html5 pour faire l'animation sur la partie cliente! Avant, mon idée était de faire ça avec les objets DOM du navigateurs, mais on va utiliser la nouvelle technologie!

    J'ai simulé le serveur (avec des belles pages html que je change à la main, ce qui prouve que mon système fonctionne pour la synchronisation!) et je transfert maintenant des champs au format JSON pour transféré l'état du jeu!

    Ainsi, il devient plus facile et rapide de connaître l'état du jeu! Ils sont tous enregistrés dans un tableau, il sera ainsi facile de retourner dans le passé pour connaître les actions du robots!

Discussions similaires

  1. [Projet en cours] [WE Jeu 2] Participation de Golgotha
    Par Golgotha dans le forum Projets
    Réponses: 10
    Dernier message: 07/11/2011, 18h41
  2. [Projet terminé] [WE Jeu] Participation de Remizkn
    Par Remizkn dans le forum Projets
    Réponses: 23
    Dernier message: 14/03/2010, 11h16
  3. [Projet en cours] [WE Jeu] Participation de Yavaitdelalumière
    Par Yavaitdelalumière... dans le forum Projets
    Réponses: 6
    Dernier message: 08/03/2010, 13h57
  4. [Projet terminé] [WE Jeu] Participation de fearyourself
    Par fearyourself dans le forum Projets
    Réponses: 40
    Dernier message: 02/03/2010, 04h20
  5. [Projet en cours] [WE Jeu] Participation de Guntha
    Par Guntha dans le forum Projets
    Réponses: 8
    Dernier message: 01/03/2010, 01h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo