Journal JenVeuxPas v0.3 Network Edition est arrivé

Posté par  (site web personnel) .
Étiquettes : aucune
0
15
déc.
2006
Bonsoir cher journal,

ce soir j'étais en forme, j'en ai donc profité pour pondre la v0.3 de JenVeuxPas (cf. journal traitant de la v0.2 ici : https://linuxfr.org/~cho7/23155.html )

Les changements sont simples :
- Jouable en réseau (uniquement jouable en réseau même, le mode monopc a purement et simplement disparu. si vous etes a 2 sur le meme pc, il faudra donc quand même lancer un serveur...)
- La license est passée de gateauware (payable en gateaux) à GPL
- Les graphismes ont été améliorés (changement de moteur 3D)

Voilà, bon jeu à tous :)
  • # Il manque pas un truc ?

    Posté par  . Évalué à 4.

    genre l'adresse pour le télécharger ? :p
    (qui est je pense http://fuck.the.world.free.fr/JenVeuxPas/JenVeuxPas-0.3.zip )
    • [^] # Re: Il manque pas un truc ?

      Posté par  (site web personnel) . Évalué à 3.

      oops, merci :)

      le lien plus générique est http://fuck.the.world.free.fr/JenVeuxPas/

      On y trouvera notamment une version pré-compilée pour windows

      Voilou
      • [^] # Re: Il manque pas un truc ?

        Posté par  (site web personnel) . Évalué à 5.

        ...mais où sont les copies d'écran ? ;-)
        • [^] # Re: Il manque pas un truc ?

          Posté par  (site web personnel) . Évalué à 5.

          Bon allez :


          nyco@x21:~/Desktop/JenVeuxPas-0.3$ python jenveuxpas-0.3.py
          #JenVeuxPas v0.3 Network Edition by cho7
          Adresse serveur (laisser vide pour creer) ?
          #Welcome sur JenVeuxPas v0.3 Network Edition by cho7
          La pioche de 24 cartes est prete.
          Le serveur est pret sur x21:1983.
          nombre de joueurs> 2
          En attente des joueurs...
          Traceback (most recent call last):
          File "jenveuxpas-0.3.py", line 140, in ?
          (client, addresse) = serveur.accept()
          File "/usr/lib/python2.4/socket.py", line 161, in accept
          sock, addr = self._sock.accept()
          KeyboardInterrupt
          nyco@x21:~/Desktop/JenVeuxPas-0.3$
  • # non merci...

    Posté par  (site web personnel) . Évalué à 6.

    ...j'en veux pas.


    (Voila ça c'est fait.)
  • # Mode réseau avec Jabber/XMPP

    Posté par  (site web personnel) . Évalué à 8.

    Donc tu as fait un soft en python avec un mode réseau, bravo, bien joué.

    Le truc c'est que ton soft lance un serveur JenVeuxPas ou en cherche un... encore un type de serveur de plus.

    Je te propose un truc pour la prochaine version (la v0.4 ?).

    Je te propose de refaire le mode réseau et de la baser sur Jabber/XMPP.

    Le joueur doit avoir un Jabber ID (donc tu proposes d'en créer un s'il n'en a pas). Le joueur doit connaître les Jabber ID de ses adversaires dans le jeu (comme il est nécessaire de connaître l'adresse IP du serveur dans la version 0.3), un Jabber ID (de la même forme qu'une adresse e-mail : nom@serveur.tld) étant tout de même plus facile à communiquer qu'un adresse IP (qui peut changer dans de nombreux cas).

    Tu peux peut-être te servir d'une chatroom MUC, je n'ai pas trop d'avis sur la question.

    Tu peux te faire aider de la liste JDEV de la Jabber Software Foundation : http://mail.jabber.org/mailman/listinfo/jdev/

    Il existe une XEP en « Standards Track » : XEP-0196: User Gaming http://www.xmpp.org/extensions/xep-0196.html
    Et une XEP dans « Inbox » : JEP-xxxx: Game Sessions http://www.xmpp.org/extensions/inbox/gamesessions.html

    Pour ça, tu as plusieurs bibliothèques pour t'aider :
    * jabber.py : http://jabberpy.sourceforge.net/ LGPL
    * xmppy : http://xmpppy.sourceforge.net/ LGPL
    * PyXMPP : http://pyxmpp.jajcus.net/ LGPL

    Qu'en penses-tu ?
    • [^] # Re: Mode réseau avec Jabber/XMPP

      Posté par  (site web personnel) . Évalué à 2.

      On me souflle dans l'oreillette là que tu peux aussi faire un bot comme arbitre... ou bien un composant avec Twisted Words en LGPL : http://twistedmatrix.com/projects/words/
    • [^] # Re: Mode réseau avec Jabber/XMPP

      Posté par  (site web personnel) . Évalué à 3.

      Qu'en penses-tu ?

      Je pense que comparé à mon programme fait à la va vite ton projet me semble tout de suite bien plus ambitieux et plus couteux en temps :)

      Mais bon, j'irai jeter un oeil car c'est interressant, même si je ne suis pas préparé à entendre mes potes raler quand je leur dirai qu'il leur faut désormais un compte jabber pour jouer à mon jeu...
      • [^] # Re: Mode réseau avec Jabber/XMPP

        Posté par  (site web personnel) . Évalué à 2.

        Si tu implémentes le cryptage TLS tu pourras leur dire d'utiliser un compte gmail...

        Et sinon, ya peut etre moyen de coder ca sous la forme d'un plugin pour un client Jabber déjà existant... Je ne sais pas où ca en est exactement de l'implémentation de la gestion de plugin sous Psi qui devait permettre justement la création de jeux plus facilement.
      • [^] # Re: Mode réseau avec Jabber/XMPP

        Posté par  (site web personnel) . Évalué à 1.

        > Mais bon, j'irai jeter un oeil car c'est interressant, même si je ne suis pas préparé à entendre mes potes raler quand je leur dirai qu'il leur faut désormais un compte jabber pour jouer à mon jeu...

        S'ils ont déjà un compte Jabber, ils pourront y jouer à partir de n'importe quel client respectant le standard ouvert, ils n'auront pas à installer le jeu puisque le bot-arbitre (ou maître de jeu, c'est selon) est online (entité du réseau Jabber/XMPP), ils n'auront pas non plus à mettre à jour, lancer un serveur, puis diffuser l'adresse IP aux joueurs identifiés et connus, ce qui est extrêment compliqué et fastidieux pour certains, par exemple ma grand-mère.

        Les joueurs seront potentiellement tous les utilisateurs du réseau fédérateur Jabber/XMPP : plusieurs dizaines de millions. Là ton jeu est réduit au gens qui savent installer Python, qui daignent ouvrir une console, qui se connaissent déjà, qui sont présents et disponibles pour jouer. C'est toute une partie de l'immense puissance de Jabber/XMPP : tu connais la présence en ligne de correspondants, ainsi que leur statut, c'est-à-dire s'ils sont disponibles pour jouer ou déjà en train de jouer.

        Ton jeu aura un potentiel immensément décuplé sur Jabber... Tu vas bénéficier de toute l'infrastrucuture Jabber.
  • # Petite remaraque sur le code

    Posté par  . Évalué à 1.

    En python pas besoin de faire: recu[:len(recu)-2]
    utiliser des valeur negative fonctionne directement il les soustraits de la taille global du string

    recu[:-2] est équivalent eu code précédent et un peu plus lisible
    • [^] # Re: Petite remaraque sur le code

      Posté par  . Évalué à 1.

      de même:
      somme = somme + carte
      peut s'écrire :
      somme += carte
      • [^] # Re: Petite remaraque sur le code

        Posté par  (site web personnel) . Évalué à 2.

        Oui je connais ces notations (d'ailleurs pour la 2ème je l'ai utilisée à d'autres endroits du code), mais il faut bien garder en tête que les fondations de ce programme ont été écrite avec la méthode de La Rache ( http://www.la-rache.com )

        Merci donc de me souligner ces détails, que je m'efforcerai de corriger au fur et à mesure des versions (la 0.4 est en préparation)
        • [^] # Re: Petite remaraque sur le code

          Posté par  . Évalué à 1.

          autre remarque, dans la fonction

          def calculScore(cartes,jetons):
          somme = 0
          prev = 0
          for carte in cartes:
          if carte != prev+1:
          somme = somme + carte
          prev = carte
          somme = somme - jetons
          return somme

          losque la carte 1 est en première position dans la liste de carte elle n'est pas comptabilisé, il faudrai initialiser somme à -1 a mon avis
          Aussi cette fonction est dépendante du fait que les cartes arrivent trier, hors lorsque tu rajoute une carte à la liste elle n'est pas directement trié, tu ne trie qu'une seul fois dans ton programme, juste avant d'appeler la fonction. Par sécurité il vaudrai mieux soit déplacer le tri dans calculScore(), soit maintenir la liste constamment dans un état trié, c-à-d faire un insertion trié des éléments.

          Sinon, tu es faché avec les objets ? me semblai pas pourtant que c'était interdit dans la méthode La Rache ;)


          Hope this help,
          Staz
          • [^] # Re: Petite remaraque sur le code

            Posté par  . Évalué à 2.

            (oui j'insiste)

            J'ai fait les diverses corrections dont j'ai parlé plus quelques unes :
            * Mettre les infos sur le clients dans une classe client
            * Corrigé plein de petites erreurs
            * J'ai mis le code pour lire depuis le socket qui était copié-coller partout dans une fonction
            * Viré les globals qui ne servaient à rien (on a besoin de les utilisers que lorsqu'on va modifier la variable)
            * Embellification générale du code

            Un patch est disponible ici:
            http://staz.be/tup/2006-12/JenVeuxPas/JenVeuxPas-Staz.patch
            le fichier directement modifié est la :
            http://staz.be/tup/2006-12/JenVeuxPas/jenveuxpas-0.3.py
            • [^] # Re: Petite remaraque sur le code

              Posté par  (site web personnel) . Évalué à 3.

              aie...

              comme dit dans mon message précédent, la version 0.4 est déjà en cours de fabrication, avec pas mal de changement dans le code

              Pour intégrer ton patch, j'vais donc devoir faire ça à la main :)

              J'vous tiens au courant pour sa sortie :)

              Merci pour ta contribution

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.