Jeu réseau

goutbouyo Messages postés 429 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008 - 19 nov. 2004 à 19:07
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 - 27 nov. 2004 à 19:02
Salut,

J'essaye de mettre une fonction réseau à mon jeu.

Dans l'initialisation, j'ai mis un thread qui initialise soit un serveur ou soit un client.

Ensuite, je sais pas trop comment faire pour envoyer la position du personnage au cleint ou au serveur.

Si je le fais à chaque frame ça fait beaucoup non ???
Donc si je crée un thread qui tout les x temps envoie la pos du joueur aux autres c'est bon ou pas ???

Merci d'avance pour votre aide !

5 réponses

dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
19 nov. 2004 à 22:09
en meme tps ca depend de ce que tu veux faire....
Parce que si tu ne le fais pas a chaque frames tu va voir le perso adverse en saccades....par contre ca demande beaucoup de tps si tu l'envois a chaque frames...

Le mieux donc c'est que le client donne la future position de son perso au serveur (ou l'inverse) et que le serveur calcule lui meme la trajectoire ensuite le serveur ne renverra sa future position que lorsque qu'il aura atteind la precedente...

Pour les cours reseau--->Msdn

Pour la reception des position je ferais un thread du genre:

DWORD WINAPI RecvData(LPVOID param)
{
for(;;)
{
memset(recvbuf,0,sizeof recvbuf);
recv( m_socket, recvbuf,1024, 0 );
}
}
des qu'un message est recu celui ci est stocké dans recvbuf a toi de le recuperer ensuite...

Et aussi pense a bien synchroniser les 2 PC sinon bonjour les degats!
0
goutbouyo Messages postés 429 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008
20 nov. 2004 à 19:51
Salut,

J'ai fait une ébauche :

DWORD WINAPI ThreadServerProc(LPVOID lpParam)
{
while (1)
{
int posZ=g_Camera.m_vPosition.z;
int posX=g_Camera.m_vPosition.x;

sprintf(data,"%d %d",posZ, posX);

send(csock_server, data, sizeof(data), 0); // envoie de donnee

if (sortie==1)		break;

Sleep(20);
}
return 0;
}


c'était juste pour savoir si c'était correct ou pas ???
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
20 nov. 2004 à 19:59
euh la tu fais un thread pour envoyer des données...ca sert a rien c'est plutot pour les recevoir! send n'est pas bloquante c'est recv() qui est bloquante

Parce ce que justement la t'envois tout le tps les données ca va pas par rapport a ce que j'ai dit avant il faut que t'envois que quand t'as besoin
0
goutbouyo Messages postés 429 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 12 janvier 2008
20 nov. 2004 à 22:08
Oui mais pour l'instant c'est un peu compliqué ce que tu me proposes...
Si j'envoie tout les 20 ms la positions du perso c'est génant ???
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
27 nov. 2004 à 19:02
tout depend de ce que tu veux faire !!
0
Rejoignez-nous