[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Maitretarot-devel-fr] fin de partie
From: |
philippe brochard |
Subject: |
Re: [Maitretarot-devel-fr] fin de partie |
Date: |
01 Oct 2002 18:11:56 +0200 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 |
"Yves Mettier" <address@hidden> writes:
> [...]
>
> >> > <mode="reflexion en direct">
> >> >
> >> > Ben oui, moi quand je lance le jeu en reseau, je n'ai pas
> >> > envie d'ouvrir les xterm a la main pour lancer le serveur
> >> > et les IA. Je prefere qu'il y ai une interface qui fasse
> >> > ca automatiquement (-> mes scripts).
> >>
> >> Y'a pas besoin d'ouvrir des xterms.
> >> Tes xterms, ils sont la pour le debogage et c'est uniquement la qu'ils
> >> sont utiles, voire indispensables.
> >
> > ils sont vraiment utile pour le debogage, parce que hier j'ai
> > lancer les 4 IA et j'ai quitter le programme. J'ai voulu relancer
> > le jeu depuis le client gtk et j'ai cherche pendant 10 minutes
> > pourquoi ca marchait pas.
>
> Je m'en suis deja servi aussi (de mes xterms a moi). Tu n'est pas le seul!
>
> > En faisant un ps x (ds un xterm), j'ai vu qu'il y avait encore le
> > serveur qui tournait en tache de fond.
> > Donc, mettre les programmes en tache de fond, c'est ce qu'il faut
> > faire, mais dans ce cas, on ne sais plus du tout qui fait quoi
> > (quand tout marchera, se sera pas important, mais pour l'instant...).
>
> Il y a une fonctionnalite a ajouter a la liste que j'ai deja mise pour la
> partie avec un seul joueur. C'est le "ping applicatif". En d'autres
> termes, c'est faire un kill(pid,0) sur le serveur et les IA en cas de
> probleme.On peut aussi coder, sur un autre canal, un ping reseau. Je peux
> faire ca
> dans libmaitretarot, de maniere a ce que ceci soit totalement transparent
> dans maitretarot et les clients. Sauf en cas de pb. API a concevoir pour
> ce genre de probleme.
oui, le ping reseau me semble etre une bonne idee pour
savoir ou en est la connexion. si en plus ca peut etre
transparent -> le pied :)
> >
> >> >
> >> > Mais bon, c'est vrai que je peux faire des scripts qui lance
> >> > tout ca au debut et le client ensuite : donc dans ce cas
> >> > on peut supprimer le Advanced Start.
> >>
> >> Moi, je prefere ca. Mais tant que, quand on n'est pas en mode debug,
> >> on ne voit rien, je m'en fiche.
> >
> > C'est pas grave si on voit rien a condition que ca marche.
> > (ce qui sera (normalement) le cas apres la periode de debug).
>
> c'est le but :)
>
:)
> >
> >> >
> >> > Mais le jeu en reseau va etre moins user friendly :
> >> > lancer un xterm pour lancer le serveur
> >> > lancer un xterm pour rajouter une IA
> >> > lancer le client
> >> > attendre que les autre joueurs se connectent
> >> > (enfin un simple script peut le faire)
> >>
> >> Non.
> >> mt_gtk_client va forker une fois pour faire un exec de maitretarot,
> >> puis trois fois pour faire un exec de l'IA. Pas besoin de scripts. Pas
> >> besoin d'xterms.
> >>
> > euh, je parle pas du jeu seul (dans ce cas tout est camoufle,
> > et on est d'accord la dessus)
> >
> > je parle de l'interface pour lancer le jeu en reseau.
>
> Quand tu fais un jeu en reseau, c'est a mon avis pas au client de lancer,
> ni une intelligence artificielle, ni maitretarot. Donc y'a rien a mettre.Par
> contre, il est tout a fait envisageable de faire une application a
> part entiere, dont le role serait de lancer maitretarot avec les bonnes
> options, ainsi que le nombre d'IA voulues. Et bien sur de controler leur
> bon fonctionnement.Voila comment un projet nait :)
>
> En attendant ce front-end pour maitretarot, on lance maitretarot et les IA
> a la main, dans un xterm, ou via des scripts si on prefere.
toutafait : on dit la meme chose depuis le debut : il faut une interface
pour lancer le jeu en reseau : soit c'est le client qui s'en charge
(c'est le cas actuelement, mais c'est pas une bonne idee pour l'ergonomie),
soit on le lance a la main (moi ca me fait c...r de faire 15 fois
les memes operations pour lancer le serveur et qq IA -> je fais des
scripts), soit on fait des scripts, soit on fait une belle interface
pour lancer tout ca avec les bonnes options (Tcl/tk ?).
> >> > Ca y est, bon apres reflexion, met en #ifdef la partie
> >> > avec les scripts.
> >> > Et fait ce que tu veux pour lancer les programmes (je
> >> > pourrai toujours faire des scripts exterieurs si ca me
> >> > plait pas :)
> >>
> >> Il faut pouvoir se passer de scripts quand on n'est pas en mode debug.
> >>
> > meme reflexion, en mode jeu seul, pas de script.
> >
> > en mode reseau : on lance le serveur a part (on fait des
> > script s'il y en a besoin ie: lancer le serveur + 1 IA + 1
> > client et attendre les autre client... mais _seulement_ dans
> > le mode reseau).
>
> Non: cf plus haut.
>
oui, cf plus haut
> >
> >> Par contre, il faudra adapter maitretarot et les IA pour ce genre de
> >> situation.- Ne pas lancer maitretarot n fois par exemple.
> >
> > ca c'est l'interface en mode jeu seul -> un seul serveur est lance, les
> > IA le sont ensuite. Comme c'est le client qui lance le serveur, il ne
> > devrai pas etre trop difficile de lui dire d'en lancer qu'un.
> >
> > Tient, petite question : comment tu fais pour changer l'odre
> > des joueurs ? pour l'instant le 1er qui se connecte est en place 1, le
> > second en 2 ... Donc pour l'instant on joue toujours en dernier parce
> > que le client gtk se connecte en dernier (ceci n'est valable qu'en mode
> > jeu seul).
>
> Bah suffit de configurer quelque part la place.
> Exemple: place 3.
> Algo:
> exec(maitretarot)
> exec(IA,"ia1")
> exec(IA,"ia2")
> connect(maitretarot,"humain1")
> exec(IA,"ia3")
>
> Facile!
> Au final, ca donne:
> exec(maitretarot)
> for(i=0; i<4; i++)
> if(i==place) connect(maitretarot,"humain1");
> else exec(IA,ia->name[i]);
>
ok, c'etait juste pour savoir, il faudra donc penser a pouvoir
configurer l'ordre de lancement des IA et des clients.
>
> >
> >> - Pouvoir donner a distance a maitretarot et aux IA l'ordre de quitter
> >> (attention au trous de securite!), utile quand on quitte
> >> mt_gtk_client!- autres (completer ici)
> >>
> > ah bon parce qu'un killall maitretarot mt_ia, ca marche pas ? :)
>
> killall, c'est pas posix
> Et si on utilise un signal (ca me semble un bon moyen de communiquer dans
> ce cas), il faut programmer maitretarot et les IA pour intercepter ce
> signal et sortir proprement.
oui
> > bon, avec les canaux et les types de donnee qu'on a mis en place,
> > on doit pourvoir dire au serveur ou a l'IA de quitter.
> > (-> on peut envoyer le type de donnee : ..._TYPE_ON_QUITTE)
>
> On peut aussi.
> Mais avec ton killall, ca m'a donne l'idee du kill -TERM qu'on peut
> intercepter. Peut-etre plus direct et plus efficace?
oui, mais il faut aussi programmer maitretarot et les IA pour
l'intercepter proprement, meme si ce signal arrive a un niveau
plus haut du programme.
Philippe
--
,-------------------. ,---------------.
| Philippe Brochard | ... | address@hidden `------.
`------------------(_ (. .) | http://hocwp.free.fr |
-------------------ooO--(_)--Ooo-----------------------