Multiplayer & setactive

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
lemniscate
Messages : 30
Inscription : 24 Fév 2016 13:34

Re: Multiplayer & setactive

Message par lemniscate » 01 Mars 2016 20:44

Encore plus simple...

Joueur A
var position = 1;

Joueur B
var position = 2;

Lorsque les valeurs des deux joueurs sont identiques je veux que l'un et l'autre puissent se voir. Comment faire? :hehe:

EDIT : Je vais tester ta proposition Sekiroo
les codeurs C#, rattrapez les!

lemniscate
Messages : 30
Inscription : 24 Fév 2016 13:34

Re: Multiplayer & setactive

Message par lemniscate » 01 Mars 2016 20:48

@sekiroo ta proposition implique qu'il faille créer une variable array pour chaque zone du monde n'est ce pas? elle peut etre générée et nommée automatiquement? ou dois je les rentrer et les nommer une par une? position11, position12 etc...
les codeurs C#, rattrapez les!

Avatar de l’utilisateur
MasterNovice
Messages : 610
Inscription : 23 Juil 2011 16:03

Re: Multiplayer & setactive

Message par MasterNovice » 01 Mars 2016 21:11

Salut,

je pense que la solution de Titan est la plus adaptée à la problématique. Je boss moi même sur un projet en réseau et c'est de cette façon dont je procède (du moins si c'est j'ai bien tout compris, possible que non). Ce n'est pas un sytème de room dans mon cas, juste le chargement de certains éléments en fonction de la zone.

Quand un joueur rentre dans la "zone" je l'instancie chez ceux déjà présent et j'instancie chez lui les autres joueurs au moment du chargement de la zone. Pas besoin d'update du coups, tout se fait au moment où il rentre dans la zone. Quand il la quitte, je désactive son prefab chez les autres et les autres chez lui. J'ignore si c'est le plus otpimisé mais en tout cas c'est fonctionnel et assez facile à mettre en place.

sekiroO
Messages : 42
Inscription : 27 Fév 2016 17:07

Re: Multiplayer & setactive

Message par sekiroO » 01 Mars 2016 21:16

Ou alors une énorme array dimensionnel (je crois que j'ai oublier le nom)?

Zone[1][2]
Zone[0][player_1][null][null]..
Zone [1][player_1][player_2][player_3]

Edit: après comme j'ai dis je sais pas faire de jeu en réseau mais c'est une idée pour aider.

lemniscate
Messages : 30
Inscription : 24 Fév 2016 13:34

Re: Multiplayer & setactive

Message par lemniscate » 01 Mars 2016 21:26

Merci pour l'info mais justement comment tu fais pour dire aux autres qu'un nouveau joueur est entré dans "leur" zone? et inversement comment tu fais pour dire a ce joueur qu'il y a tel et tel joueur? Au point ou j'en suis quand j'arrive dans une zone mon debug log m'affiche clairement qui est dans la zone (le debug log me donne en fait tout les noms des joueurs qu'il a trouvé dans cette zone (X;Y) dans la base de données mysql)
les codeurs C#, rattrapez les!

lemniscate
Messages : 30
Inscription : 24 Fév 2016 13:34

Re: Multiplayer & setactive

Message par lemniscate » 01 Mars 2016 21:30

je crois que je vais carrement instancier toutes les zones les unes a cote des autres comme c'est le cas dans beaucoup de mmo ou il n'y a plus de temps de chargement, ca m'a l'air plus simple, au moins tout le monde est là... pas d'activation ou de désactivation de tel ou tel éléments...
les codeurs C#, rattrapez les!

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: Multiplayer & setactive

Message par Moi 1971 » 01 Mars 2016 21:33

Les explications de MasterNovice sont à suivre. Mais dans tous les cas, c'est pas ton code C# le problème, c'est qu'il te manque une requête SQL qui te donne les positions X et Y pour chaque joueur. Après, en C#, tu compares les X et Y de ton joueur avec ceux remontés par ta requête pour chaque joueur. A faire uniquement avec un "évènement" entré/sortie de carte/zone/room et non dans un Update.

lemniscate
Messages : 30
Inscription : 24 Fév 2016 13:34

Re: Multiplayer & setactive

Message par lemniscate » 01 Mars 2016 21:39

En fait quand mon joueur arrive dans une zone il lance un php indiquant sa direction N/S/E/W une premiere requete sql va aller chercher sa position d'origine dans la bdd, une seconde va la mettre a jour en fonction de la direction du joueur, enfin une 3em permet de dresser la liste des joueurs présents dans cette même zone au valeurs X;Y... je sais pas si ca revient a ce que tu dis...
les codeurs C#, rattrapez les!

Avatar de l’utilisateur
MasterNovice
Messages : 610
Inscription : 23 Juil 2011 16:03

Re: Multiplayer & setactive

Message par MasterNovice » 01 Mars 2016 21:53

Tu peux utiliser des triggers pour les zones. Quand le joueur rentre dans la zone :

- Tu change son ID map (voir plus bas)
- le serveur instancie sur les clients de cette zone (et pourquoi pas des zones adjacentes pour éviter les apparitions brutales) le joueur (ou l'active si il existe déjà).
- Le serveur instancie les joueurs présents dans la zone chez le joueur (ou les actives si ils existent déjà).

Chaque trigger possède un Id map. Dans ta table de localisation joueur tu peux ajouter une colonne avec l'id map et avec une simple requête savoir qui se trouve dans quelle zone en sélectionnant les joueurs par leurs id map.

Encore une fois j'ignore si c'est la manière la plus opti de faire mais c'est celle que j'ai plus ou moins choisis et qui fonctionne bien. Le client ne tient compte que des joueurs présents dans sa zone (et celles adjacentes).

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: Multiplayer & setactive

Message par Moi 1971 » 01 Mars 2016 21:54

Là j'peux pas t'aider. Le mécanisme que tu as choisi est trop compliqué pour être expliqué ici.
En gros un jeu en réseau c'est un serveur et des clients. Tu as choisi de gérer la partie serveur avec le couple PHP/Mysql. C'est très spécifique... et je ne sais pas si c'est très adapté. Le côté "Le client interroge le serveur" est facile avec Php + requête Sql, mais le côté "Le serveur informe les clients" c'est impossible! Sous Unity il y a tout ce qui faut pour créer des applis Client/Serveur et plein de tuto ... Il serait plus facile de passer par là tout en gardant ta base de données pour sauvegarder les données, mais en supprimant toute la partie PHP/MySql pour la gestion du jeu.

Répondre

Revenir vers « Unity le logiciel »