CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Question technique sur les jeux en ligne

thesuperbest
thesuperbest
Niveau 8
10 novembre 2004 à 12:18:01

1-Quand on fait un jeu en ligne, on créer un client qui envoie les variables au serveur et le serveur renvoie les données aux autres client connectés ?

2-Est-ce qu´avec une connaissance moyenne de la SDL et la connaissance des cours sur les sockets de www.developpez.com, on peut créer un pong en ligne ?

sanberi
sanberi
Niveau 5
10 novembre 2004 à 12:40:40

1) En gros

2)Sans probléme :-) si tu maitrises bien le C/C++ bien sur.

Si tu te lances dans ce projet, je suis assez partant pour te suivre :-) J´ai toujours voulut faire un truc de la sorte.

JeanYvesYves
JeanYvesYves
Niveau 10
10 novembre 2004 à 14:51:47

1) Tout a fait. Je te conseille cependant de faire un programme serveur, et un programme client :
Le " maitre du jeu" aura le seul prgramme serveur de lance. Et les clients auront chacun un programme client de lance.
Si le maitre du jeu joue, il aura les 2 de lances evidemment !
Le mieux est d y faire en multothreading.

2) oui tu peux, optimise les donnees que tu envoies et garde en tete qu on n est jamais a l abri qu un paquet se perde ou arrive en retard, donc envoie des donnees qui ne dependent pas des precedentes :
- genre pour pong :
n envoie PAS : " le joueur a bouge de 3 pixels vers le haut"
envoie : " le joueur est maintenant a telle position absolue"

thesuperbest
thesuperbest
Niveau 8
10 novembre 2004 à 16:12:53

Merci pour les réponses.
Voici d´autres questions que je me pose :

3- Par exemple, les clients 1 et 2 se connectent au serveur, comment le serveur les différencient ?

4- recv() est une fonction bloquante, je suppose que pour faire un pong, il faudrait un recv() non-bloquant, comment faire ?

AKD
AKD
Niveau 9
10 novembre 2004 à 16:52:24

Si mes souvenirs de cours sont bons... ( euh c sous linux, mais je pense pas qu´il y ai beaucoup de différence sous windows pour ca :-)

3- Tu peux les différencier via leur adresse ip par exemple ( y a des fonctions pour ca sous linux donc doit y avoir la même chose sous win ) ou meme faire un fork() séparant ainsi la socket auquel le client s´est rattaché de ta socket sur laquelle les clients se connectent. pour pouvoir récupérer plusieurs connections, tu mets un listen() sur ta socket juste avant...

4- Tu peux redéfinir les entrées sorties de ton programme et lui y associer ta socket... Après ca un petit cin cout... Sinon tu peux utiliser les fonctions read write en la liant à un pointeur vers fichier... ca devrait régler le problème de bloquage

sanberi
sanberi
Niveau 5
10 novembre 2004 à 17:16:15

AKD as tout dis mais je te conseil d´utiliser les threads ( version POSIX c´est encore le mieux).

Cela te permettra de pouvoir partager facillement des variables qui vont être modifiées par les deux clients. Au lieu de faire une mémmoire partagée etc...
Pour deux clients les threads c´est le top... Pour 700 je dis pas . .

AKD
AKD
Niveau 9
10 novembre 2004 à 20:49:33

C clair les threads c´est le top, mais si tu débute c´est quand même déconseillé ( y parait que c´est assez dur à mettre en place ) :-(

JeanYvesYves
JeanYvesYves
Niveau 10
11 novembre 2004 à 10:40:12

SDL te gere les threads de maniere pas trop dure il me semble :)
si tu utilises des threads, tu n as pas besoin de read non bloquants...
Je ne sais pas s il y a des reads non bloquants dispos dans les libs standard...

thesuperbest
thesuperbest
Niveau 8
12 novembre 2004 à 13:52:22

Un thread, c´est une fonction qui s´éxécute en parallèle à la fonction main(), non ?
J´ai fait un test avec la sdl, pour l´instant ça ne marche pas :
-Je créer 4 fonctions.
-Dans le main(), je demande au fonctions de s´éxécuter ( en thread).
-Le main() n´a rien a faire donc je mets quoi pour que le programme ne se quitte pas ? J´ai essayé avec un while(1){} mais je crois pas que ce soit l

thesuperbest
thesuperbest
Niveau 8
12 novembre 2004 à 13:53:40

. ..je crois pas que ce soit la meilleure solution.

PS : Bizzare, j´ai dérapé sur le bouton Tab et il m´a validé le message.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware