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

[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-----------------------




reply via email to

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