[DB - RS]Photon | Synchronisation des déplacements
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
Re: [DB - RS]Photon | Synchronisation des déplacements
Salut merci d'avoir posté la vidéo
Dans la vidéo on dirait que le 2ème joueur ne bouge que lors des réceptions de nouvelles positions, t'es sûre que ton code update correctement la position du joueur entre chaque nouvelle position reçue?
T'as testé le mouvement de ton 2ème joueur avec une liste de positions fictives (sans passer par le réseau) pour vérifier que le mouvement de base des joueurs internet est fluide?
Sinon pour mettre à jour la position des joueurs avec photon, tu transmets bien les positions en ne conservant que le packet réceptionné le plus récent? (Sinon tu vas recevoir des anciennes positions, ce qui pourrait également provoquer l'effect de saccade vu dans la vidéo.)
Dans la vidéo on dirait que le 2ème joueur ne bouge que lors des réceptions de nouvelles positions, t'es sûre que ton code update correctement la position du joueur entre chaque nouvelle position reçue?
T'as testé le mouvement de ton 2ème joueur avec une liste de positions fictives (sans passer par le réseau) pour vérifier que le mouvement de base des joueurs internet est fluide?
Sinon pour mettre à jour la position des joueurs avec photon, tu transmets bien les positions en ne conservant que le packet réceptionné le plus récent? (Sinon tu vas recevoir des anciennes positions, ce qui pourrait également provoquer l'effect de saccade vu dans la vidéo.)
-
- Messages : 45
- Inscription : 18 Sep 2017 17:44
Re: [DB - RS]Photon | Synchronisation des déplacements
On a l'impression que le code de "lissage" ne fonctionne pas du tout. As tu testé sans lissage du tout? et as tu une différence?
Re: [DB - RS]Photon | Synchronisation des déplacements
Salut
Pour les déplacements de mes joueurs j'ai simplement utiliser un transform dans l'update.
Et c'est vrai que je me suis pas pencher la dessus, est ce que ca peut poser un soucis dans la transmission des données selon vous ?
Le mouvement de base des joueurs est fluide, et j'utilise ce code basique c'est celui avec lequel j'ai le moins cet effet de saccades ( à l'heure d'aujourd'hui j'ai un peu moins de saccades que dans la vidéo, et le probleme aussi c'est que les joueurs se voient en décalé et non pas sur leurs position réelle, ca se joue a 1 sec environs, c'est très probablement lié)
Oui sans le lissage c'est une catastrophe pure et dure, des téléportations toutes les secondes sur de longue distance,
je ne vois l'autre joueur qu'une fois qu'il a fini de se téléporter, enfin un carnage quoi
Merci de votre soutien dans ce terrible goulot =]
Pour les déplacements de mes joueurs j'ai simplement utiliser un transform dans l'update.
Et c'est vrai que je me suis pas pencher la dessus, est ce que ca peut poser un soucis dans la transmission des données selon vous ?
Le mouvement de base des joueurs est fluide, et j'utilise ce code basique c'est celui avec lequel j'ai le moins cet effet de saccades ( à l'heure d'aujourd'hui j'ai un peu moins de saccades que dans la vidéo, et le probleme aussi c'est que les joueurs se voient en décalé et non pas sur leurs position réelle, ca se joue a 1 sec environs, c'est très probablement lié)
Code : Tout sélectionner
private void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
if (stream.isWriting)
{
stream.SendNext(transform.position);
stream.SendNext(transform.rotation);
}
else
{
TargetPosition = (Vector3)stream.ReceiveNext();
TargetRotation = (Quaternion)stream.ReceiveNext();
}
}
private void SyncMove()
{
transform.position = Vector3.Lerp(transform.position, TargetPosition, 1f);
transform.rotation = Quaternion.RotateTowards(transform.rotation, TargetRotation, 500 * Time.deltaTime);
}
Oui sans le lissage c'est une catastrophe pure et dure, des téléportations toutes les secondes sur de longue distance,
je ne vois l'autre joueur qu'une fois qu'il a fini de se téléporter, enfin un carnage quoi
Merci de votre soutien dans ce terrible goulot =]
-
- Messages : 45
- Inscription : 18 Sep 2017 17:44
Re: [DB - RS]Photon | Synchronisation des déplacements
Le code de lissage ne doit pas être le problème. Il y a forcément autre chose : normalement, sans ce code, il ne doit pas y avoir de "carnage" de cette sorte. Le joueur doit apparaître au bon endroit, au bon moment mais avec un rafraichissement qui est plus lent que notre update habituel. C'est de la l'effet saccade. Dans le tuto de palladin, il me semble qu'on voit bien cet effet et donc l'intérêt de ce code d'interpolation entre des positions qui sont bonnes.
Essais de repartir de zero, en suivant le tuto, pour voir si tu n'as pas rater quelque chose en route.
C'est peut-être pour cela que tu n'arrives pas à avoir un effet fluide puisque les coordonnées du player partent carrément dans les choux avant de revenir.
En écrivant, je me demande aussi si cela ne peut pas venir des valeurs stream que tu écris et récupères. Ce serait bon de les tracer avec debug.log afin de voir si tu ne récupères pas des valeurs à zero de temps en temps. ( C'est une bonne piste à mon avis)
Aller courage! Tu vas y arriver!
Essais de repartir de zero, en suivant le tuto, pour voir si tu n'as pas rater quelque chose en route.
C'est peut-être pour cela que tu n'arrives pas à avoir un effet fluide puisque les coordonnées du player partent carrément dans les choux avant de revenir.
En écrivant, je me demande aussi si cela ne peut pas venir des valeurs stream que tu écris et récupères. Ce serait bon de les tracer avec debug.log afin de voir si tu ne récupères pas des valeurs à zero de temps en temps. ( C'est une bonne piste à mon avis)
Aller courage! Tu vas y arriver!
-
- Messages : 45
- Inscription : 18 Sep 2017 17:44
Re: [DB - RS]Photon | Synchronisation des déplacements
Ou peut être que ton transform passe par des valeurs zero : à vérifier aussi
-
- Messages : 45
- Inscription : 18 Sep 2017 17:44
Re: [DB - RS]Photon | Synchronisation des déplacements
...et en relisant ton premier post je pense qu'il y a un problème dans ton FixedUpdate ( ou Update).
Il faut y indiquer :
Du coup, il y a peut être interférences entre les deux joueurs?
Il faut y indiquer :
Code : Tout sélectionner
if (!photon.view.IsMine)
{
fonction d'interpolation
}
else
{
fonction de management manuel du player (ce que je ne vois pas dans ton code)
}
Re: [DB - RS]Photon | Synchronisation des déplacements
Dans mon code de base j'ai bien les déplacements manuels du joueur c'est juste que je ne les avaient pas mis dans mon premier poste
Je vais essayer avec les Debug et je vais reprendre le tuto paladin du début en espérant trouver quelque chose d'intéressant
Merci
Code : Tout sélectionner
void Update(){
if(view.isMine)
{
transform.translate(0,0, currentSpeed *Time.deltaTime );
}
else
SyncMove();
}
Merci
Re: [DB - RS]Photon | Synchronisation des déplacements
Oue de retour, malheureusement sans bonnes nouvelles.
Quoi qu'il se passe j'ai toujours le soucis de position.
Je me connecte au serveur avec joueur 1 et 3secondes après je me connecte avec joueur 2
J2 voit J1 à sa bonne position ( pas non plus la position exacte mais c'est assez précis )
Mais quoi qu'il se passe J1 voit J2 en retard
Hors mis les saccades ( qui sont moindre que sur la vidéo que j'ai posté ), ce problème de position est encore plus gênant.
J'ai revu le tuto de paladin et ré-essayé les nombreuses options dispo dans le script transformView inclu dans le package, rien y fait, que c'est pesant
Le fait que je rejoigne le serveur avec J2 quelques secondes en décalé peut il une coïncidé avec le problème de position ?
Quoi qu'il se passe j'ai toujours le soucis de position.
Je me connecte au serveur avec joueur 1 et 3secondes après je me connecte avec joueur 2
J2 voit J1 à sa bonne position ( pas non plus la position exacte mais c'est assez précis )
Mais quoi qu'il se passe J1 voit J2 en retard
Hors mis les saccades ( qui sont moindre que sur la vidéo que j'ai posté ), ce problème de position est encore plus gênant.
J'ai revu le tuto de paladin et ré-essayé les nombreuses options dispo dans le script transformView inclu dans le package, rien y fait, que c'est pesant
Le fait que je rejoigne le serveur avec J2 quelques secondes en décalé peut il une coïncidé avec le problème de position ?
Re: [DB - RS]Photon | Synchronisation des déplacements
Avec des petits bouts de code par-ci par-là c'est un peu dur de pouvoir vérifier correctement le déroulement du script.
Tu pourrais pas montrer un peu plus de ton code, genre la classe entière?
J'aimerais bien t'aider, mais perso j'ai besoin d'un peu plus d'infos
Tu pourrais pas montrer un peu plus de ton code, genre la classe entière?
J'aimerais bien t'aider, mais perso j'ai besoin d'un peu plus d'infos
-
- Messages : 45
- Inscription : 18 Sep 2017 17:44
Re: [DB - RS]Photon | Synchronisation des déplacements
Salut Matt!
Me voilà de retour après un long déplacement pendant lequel je n'avais pas mon PC.
Je vois que le topic est à l'arrêt... est-ce un abandon ou as-tu trouvé la solution?
Pour répondre à ta dernière question, il n'y a aucune incidence d'une connexion en décalé.
Par contre c'est sûr qu'en postant plus de code, tu nous aiderais davantage...
Tiens-nous au jus!
Me voilà de retour après un long déplacement pendant lequel je n'avais pas mon PC.
Je vois que le topic est à l'arrêt... est-ce un abandon ou as-tu trouvé la solution?
Pour répondre à ta dernière question, il n'y a aucune incidence d'une connexion en décalé.
Par contre c'est sûr qu'en postant plus de code, tu nous aiderais davantage...
Tiens-nous au jus!