[Resolu]Photon Jeu Multiplayer avec AI

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: Photon Jeu Multiplayer avec AI

Message par EmileF » 12 Sep 2018 19:44

Je te remercie de m'encourager.
Moi j'ai commencé il y a 5 ans environ, mais j'ai sûrement plus de temps que toi car je suis à la retraite.
Je suis allé voir ton Bomberman Je l'ai trouvé super sympa. :super:

Il me semble que ce que tu me proposes, d'instancier l'avatar au moment de la connexion du joueur, m'enlève la possibililité de créer mes IA avec le premier joueur.
Ce qui me crée soucis c'est cette IA et ça depuis le début. Sinon j'arrive à connecter mes joueurs sans problème.

Que penses-tu de l'idée de spawner les 4 Avatars et les 4 Players (avec ou sans IA) à la première connexion,
et de supprimer l'avatar correspondant quand un autre joueur se connecte.
Mon problème c'est l'accès à cet avatar qui me faudra supprimer.
Je pense Que la Fonction PunRPC peut me permettre de le faire mais je n'arrive pas à la maitriser.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Photon Jeu Multiplayer avec AI

Message par Alesk » 12 Sep 2018 20:00

Si tu es à la retraite, je suppose que tu as commencé la prog à 50 ans passés, je te félicite pour cette performance ! :super:
Ou alors t'es plus jeune, et riche :p

Sinon, je ne te proposais pas d'instancier les avatars à la connexion des joueurs, mais bien au tout début.
C'est cependant la méthode d'instanciation qui va être différente.

En version code allégé, ça ressemblerait à ça :

Code : Tout sélectionner

class Avatar{
    public static List<Avatar> instances = new List<Avatar>();
    
    private int index = -1;
    
    void Awake(){
        this.index = instances.Count;
        instances.Add(this);
    }
}

class Player{
    public static List<Player> instances = new List<Player>();

   private int index = -1;
   
    void Awake(){
        this.index = instances.Count;
        instances.Add(this);
    }
}

class IA{
    public static List<IA> instances = new List<IA>();

   private int index = -1;
   
    void Awake(){
        this.index = instances.Count;
        instances.Add(this);
    }
}
Chaque classe contient une liste d'instances qui va répertorier toutes les instances créées.

Ainsi, tu peux dès le départ créer tes avatars, qui se retrouveront dans les liste Avatar.instances, et tes intelligences artificielles qui seront dans IA.instances.

Par la suite, lorsque les joueurs se connectent, tu n'as plus qu'à chopper l'avatar dans la liste Avatar.instances au même index que l'index du script Player.

Tu as ainsi 3 listes en parallèle auxquelles tu peux accéder facilement.

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: Photon Jeu Multiplayer avec AI

Message par EmileF » 12 Sep 2018 20:16

Houla!!!
J'étais loin de penser à ça. C'est niveau pro.
Je vais essayer d'implémenter cela, et surtout essayer de le comprendre.
En tout cas merci.

J'ai 65 ans, j'ai toujours été intéressé par la programmation, mais je n'ai eu le temps de m'y consacrer que depuis que je suis à la retraite. J'y passe le plus clair de mon temps et je suis pationé.

Voila J'ai toujours le même problème.
Je spawn les 4 IA et les 4 Avatars dès la création de la room
j'ai bien mes instances IA et Avatars quand je connecte le premier joueur.
Quand je connecte le 2ème joueur, il n'est pas sur le même ordi et les instances IA et Avatars sont vides.

Je suis convaincu que c'est par une fonction de photon que je peux avoir accès à des instances crées par l'ordi master.

Qu'en penses-tu ?
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Photon Jeu Multiplayer avec AI

Message par Alesk » 12 Sep 2018 21:18

Courage !

Bon déjà lorsque tu connectes le deuxième joueur, Photon devrait automatiquement instancier tous les éléments de la scène qui disposent d'une view ou un truc similaire.
Le souci c'est que je ne connais pas photon, j'ai juste mis un peu les doigts dans l'api réseau native d'unity, donc j'extrapole.
J'ai choppé une formation sur photon, mais je n'ai pas encore eu l'occasion de m'y coller... Mais ça va venir...

Donc en attendant, essaye de voir ce qui coince au niveau de la réplication de la scène chez le second joueur. Dès sa connexion, tous les GameObjects instanciés sur le réseaux devraient y être aussitôt créés.
Il doit te manquer un truc de ce côté là.

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: Photon Jeu Multiplayer avec AI

Message par EmileF » 13 Sep 2018 13:56

J'ai suivi ton dernier conseil et effectivement je faisait une grosse erreur et ça depuis le début.

J'essayais d'associé les avatars aux players à partir de la fonction "OnJoinedRoom".
En fait c'était trop tôt et la scène n'avait pas encore eu le temps de se répliquer.
Dans cette fonction il ne faut faire que l'instanciation.

Ton dernier conseil a fait tilt chez moi, et j'ai fait l'association avatar/player et Ai dans la fonction "Start" des scripts concernés ainsi que l'activation du player ou de l'Ai selon le cas.

J'ai encore pas mal de chose à voir mais ça semble fonctionner.

Grâce à toi, je vais enfin pouvoir avancer, je t'en remercie.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Photon Jeu Multiplayer avec AI

Message par Alesk » 13 Sep 2018 15:18

Yay ! :super: :super: :super:

Tu vois qu'il ne fallait pas abandonner ;)

Bon courage pour la suite !

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: Photon Jeu Multiplayer avec AI

Message par EmileF » 13 Sep 2018 16:36

En fait il m'a fallut modifier un peu.

Au lieu de déplacer l'avatar, j'avais des problèmes de synchronisation, j'ai mis l'avatar enfant de player et je déplace le player. Mais j'ai gardé quand même l'organisation que tu m'as conseillé et la List qui s'implémente au fur et à mesure, je trouve ça génial. Je ne connaissais pas. Merci encore.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Photon Jeu Multiplayer avec AI

Message par Alesk » 13 Sep 2018 16:44

Ok cool ! Du moment que tu t'en sors ;)

Mais bon, dans l'idéal, il vaut mieux garder dissociés les gameobjects player et avatar, c'est plus "souple".

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: Photon Jeu Multiplayer avec AI

Message par EmileF » 13 Sep 2018 19:53

Oui c'est vrai, cela me permet de pouvoir parenter mon avatar au gameobject player ou au gameobject IA.

Maintenant je suis un peu embêté avec les explosions. je n'ai pas la prétention d'arriver à ton niveau de particules, mais simplement scaler un objet, selon les possibilités, et surtout de synchroniser tout cela.

Quand j'y serai arrivé, je mettrai un zip pour que tu puisses me dire ce que tu en penses.

A la prochaine.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Photon Jeu Multiplayer avec AI

Message par Alesk » 13 Sep 2018 20:06

Ok, pas de problème !

Répondre

Revenir vers « Unity le logiciel »