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: Yves Mettier
Subject: Re: [Maitretarot-devel-fr] fin de partie
Date: Tue, 1 Oct 2002 14:20:27 +0200 (CEST)

[...]

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

>
>> 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]);


>
>> - 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.
> 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?
Yves
-- 
- Homepage - http://ymettier.free.fr                   -
- GPG key  - http://ymettier.free.fr/gpg.txt           -
- MyAM     - http://www.freesoftware.fsf.org/myam      -
- GTKtalog - http://www.freesoftware.fsf.org/gtktalog  -








reply via email to

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