maitretarot-devel-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Maitretarot-devel-fr] avance des clients/ia


From: Yves Mettier
Subject: Re: [Maitretarot-devel-fr] avance des clients/ia
Date: Sat, 26 Oct 2002 00:07:18 +0200

Coucou!

Concernant select, suite a discussion avec nico sur irc, un select
propre est pour lui un select qui ne se contente pas que d'attendre un
timeout, mais qui attend aussi des infos sur des filehandles.

Dans maitretarot, cela n'a aucune signification. En effet, il y a un
thread pour la lecture des infos via la socket, et les read sont
bloquants.
Les usleep (ou select qu'il faudrait mettre a la place pour des
raisons de compatibilite POSIX), ce ne sont que des attentes pour ne
pas monopoliser le processeur dans une boucle d'attente. Donc on
pourrait tres bien supprimer ces usleep, cela ne changerait pas grand
chose a part peut-etre monopoliser un peu plus le processeur,
inutilement.

Concernant la lenteur dont se plaint Nico (et que je remarque sur
freebsd alors qu'il n'y a aucun probleme sur mon linux), ce n'est ni
un probleme de CPU ni un probleme de traffic reseau. C'est un
probleme de latence. Reste a determiner ou se trouve cette latence, et
a la reduire.

Enfin, suggestion de Nico: des qu'on sera passe a de reelles machines
a etats, on pourra aussi passer de TCP a UDP. Ca devrait encore
ameliorer les choses. Et cette modif est transparente, normalement:
tout doit etre fait dans libmaitretarot, et peut-etre que ces modifs
se limitent meme a net.c! Mais ca, c'est pour plus tard. D'abord la
machine a etats.

Et Nico, ne focalise pas trop sur la vitesse, a moins que tu ne t'y
consacres a 100%.

Yves

On Sat, 26 Oct 2002 21:32:06 +0200
nico <address@hidden> wrote:

> Je n'upgrade pas encore, je n'ai pas encore besoin de ça.
> 
> Sinon, l'info de déconnexion, c'est juste avant de mourrir ?
> 
> J'ai encore un problème pour déterminer qui a pris. Je suis obliger
> de le déduire en fonction de l'état des enchères au premier tour ?
> (dans les fonctions de chien donc )
> 
> Pour tester mes ia, je laisse tourner. Mais je trouve que c'est
> lent. J'ai transformé les usleep(100) en usleep(10) puis en
> sched_yield() (l'ordonanceur le mets à la fin de la pile, pas bien :
> pas portable !) suite à ces manips j'ai gagner un peu de vitesse
> mais ce n'est pas transcendant.
> 
> Maintenant mt_server ne prends rien comme temps mais mon ia est au
> max tout le temps ! Je pense qu'il serait bien d'utiliser un vrai
> select propre dans libmaitretarot (propre == pas seulement en
> timeout mais aussi pour regarder l'état de la socket).
> 
> nicO
> 
> On 25 Oct 2002 17:57:22 +0200
> philippe brochard <address@hidden> wrote:
> 
> > 
> > Salut,
> > 
> > Un petit mail pour dire que :
> > 
> >  * les clients tiennent compte du nouveau protocole de score.
> > 
> >  * j'ai rajoute une option --no-start-screen au client gtk qui
> >         permet de se connecter a un jeu existant sans passer par
> >         la phase login.
> > 
> >  * j'ai rajoute une fonction de callback dans la lib pour
> >         avertir les clients que la connection a ete rompue :
> > 
> >         LIBMT_CLIENT_FUNCTION_LOST_CONNECTION
> > 
> >         Comme d'habitude, si on passe dans cette fonction,
> >         c'est qu'il y a eu une deconnexion, c'est au client
> >         de savoir comment la gerer :
> >      => mt_dolphin_ia affiche juste un message comme quoi il
> >         y a eu une deconnexion.
> >      => mt_ncurses_client affiche un ecran avec la meme info
> >         avant de quitter.
> >      => le client gtk affiche une boite de dialogue avec info
> >         de deconnexion puis revient a l'ecran de login.
> >         (je le fais demain :)
> > 
> >      => pour les autres clients il faut voir comment ils comptent
> >         gerer la deconnexion (un des usages possible est de
> >         liberer convenablement les differentes variables lors
> >         d'une deconnexion).
> >      
> > 
> >  * j'ai rajoute une fonction de callback pour avertir que le jeu
> >  s'est
> >         termine normalement :
> > 
> >         LIBMT_CLIENT_FUNCTION_NORMAL_CLOSE
> > 
> >         cette fonction peut servir a liberer les variables lors
> >         d'une fin normale du jeu (c'est le pendant de init).
> > 
> >  * j'ai rajoute une fonction de callback pour demander si le
> >  client
> >         veut rejouer :
> > 
> >         LIBMT_CLIENT_FUNCTION_ACK_REPLAY
> > 
> >         pour cela, il faut remplir le champ player->replay :
> >                 player->replay = TRUE on rejoue une partie,
> >                 player->replay = FALSE on veux quitter le jeu.
> > 
> >         par defaut, les clients demandent a rejouer de nouveau
> >         (player->replay = TRUE).
> > 
> > 
> >   Dans tout les cas, il faut penser a affecter ces fonctions de
> >   callback, sinon, on obtient un message d'erreur a l'execution du
> >   client (pas un segfault, juste que la fonction n'est pas
> >   initialisee).
> > 
> > 
> > 
> > Philippe
> > 
> > 
> > -- 
> > (    )
> >  ~oo~         Philippe Brochard    <address@hidden>
> >   .. Gnu!                           http://hocwp.free.fr
> >   / =\   \=
> >  -   -    -   -=-= http://www.fsf.org/home.fr.html =-=-
> > 
> > 
> > _______________________________________________
> > Maitretarot-devel-fr mailing list
> > address@hidden
> > http://mail.nongnu.org/mailman/listinfo/maitretarot-devel-fr
> > _________________________________________________________________
> > __ Haut D_bit: Modem offert soit 150,92 euros rembours_s sur le
> > Pack eXtense de Wanadoo ! Profitez du Haut D_bit _ partir de 30
> > euros/mois : http://www.ifrance.com/_reloc/w
> 
> 
> _______________________________________________
> Maitretarot-devel-fr mailing list
> address@hidden
> http://mail.nongnu.org/mailman/listinfo/maitretarot-devel-fr


-- 
- Homepage    - http://ymettier.free.fr  | CMG - http://www.cmg.com -
- GPG key     - http://ymettier.free.fr/gpg.txt                     -
- Maitretarot - http://www.nongnu.org/maitretarot                   -
- GTKtalog    - http://www.nongnu.org/gtktalog                      -





reply via email to

[Prev in Thread] Current Thread [Next in Thread]