Multiplayer & setactive
-
- Messages : 30
- Inscription : 24 Fév 2016 13:34
Re: Multiplayer & setactive
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?
EDIT : Je vais tester ta proposition Sekiroo
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?
EDIT : Je vais tester ta proposition Sekiroo
les codeurs C#, rattrapez les!
-
- Messages : 30
- Inscription : 24 Fév 2016 13:34
Re: Multiplayer & setactive
@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!
- MasterNovice
- Messages : 610
- Inscription : 23 Juil 2011 16:03
Re: Multiplayer & setactive
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.
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.
Re: Multiplayer & setactive
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.
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.
-
- Messages : 30
- Inscription : 24 Fév 2016 13:34
Re: Multiplayer & setactive
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!
-
- Messages : 30
- Inscription : 24 Fév 2016 13:34
Re: Multiplayer & setactive
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!
Re: Multiplayer & setactive
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.
-
- Messages : 30
- Inscription : 24 Fév 2016 13:34
Re: Multiplayer & setactive
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!
- MasterNovice
- Messages : 610
- Inscription : 23 Juil 2011 16:03
Re: Multiplayer & setactive
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).
- 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).
Re: Multiplayer & setactive
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.
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.