IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Discussion :

[c++] Développement Client/Serveur: Quel est le principe?


Sujet :

Développement

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut [c++] Développement Client/Serveur: Quel est le principe?
    Bonjour à tous,

    Je voudrais avec un ami développer un jeu de stratégie en réseaux.
    J'aimerais que l'on m'explique clairement le principe global (et plus si affinité) d'une application client/serveur, plus particulièrement d'un jeux.
    Prenons un jeux simple comme un jeux de stratégie. Imaginons qu'il soit essentiellement dédié au multijoueur.
    Imaginons une partie entre le joueur A et le joueur B.
    Intéressons nous au joueur A.
    Il y a donc un Moteur de Jeu. Je n'ai pas une idée très précise de celui-ci. En effet, peu de site ou de forum précise réellement les étapes globales de celui-ci. J'ai donc imaginé:
    - Situation T
    - Gestion des entrées-utilisateur
    - Calcul des modifications que celles-ci impliquent en fonction de la situation T
    - Application des modifications
    - Génération d'un "état de la partie" pour le joueur A
    - Envoi de cet "état" au serveur
    - Réception de l'"état" du joueur B qui induit une situation T+1 qui deviens la sitation T précédente du au fait que ce soit une boucle.
    (Commentaires sur cela fortement appréciés, car même en l'écrivant, je ne suis pas certain que ça fonctionne ).

    Je peux installer cette application. Ensuite je peux la lancer. Je me retrouve sur un menu. Je veux jouer sur internet donc imaginons un hall avec des parties qui s'affichent. Je rejoins une partie. Je joue. Le moteur du jeu tourne. Je voudrais ainsi savoir comment envoyer cet "état" de la partie au serveur. Comment cela fonctionne? Le serveur est-il particulier? Concrètement, qui a-t-il comme fichiers sur le serveur (des .php, des .exe, etc...).

    En clair, que dois-je faire concrètement en c++ pour qu'une information soit envoyée vers un serveur, il y a un "bidule" qui dit "oki jte stock ça" puis pour une demande d'infos "Tiens voila c'est ça que tu voulais". Comment la communication ce fait-elle? Quel est le programme sur le serveur?

    Est-ce que je me trompe totalement ou est-ce que en fait il y a un super secret que personne ne veux révéler?

    Je n'ai peux-être pas mis toutes mes idées dans ce post, je reposterais en fonction des réponses.

    Merci d'avance,

  2. #2
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Bonjour,

    Si tu en as à ce point de reflexion, je te conseille de déjà cmmencer par un Tetris, puis un Tetris en reseau. Parce que vu tes questions, tu as u chemin à parcourir...

    Ceci dit, sans animosité hein.

    Sinon, rapidement :
    - Les clients ne décident pas de ce qu'ils font, ils le demandent au serveur qui gère toutes les commandes. Cela permet d'éviter la triche et de bien synchroniser tous les clients. Limite, les clients ne font que de l'affichage.
    Mindiell
    "Souvent, femme barrit" - Elephant man

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Je t'avouerai que je n'ai jamais fait de tetris ou de pacman. Cependant dans mon école nous avons bouffés plusieurs projets en C et en C++, plus ou moins terminés selon les projets. Mais nous n'avons pas vu l'aspect mise en réseau de ceux-ci.

    Le client n'envoie que les entrées utilisateurs au serveur? Oui, intéressant. A tout moment il calcule les changements, envoie des messages d'erreur du style "t'as pas assez de nourriture". Le client pourrait demander tout le temps la mise à jour de l'"état" général.

    Au point de vue du client en C++, comment cela se passe-t-il? Et puis surtout au niveau du serveur? Est-ce un serveur spécial? Qui a-t-il dessus? Un .exe qui tourne en boucle?

  4. #4
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Citation Envoyé par _pouet Voir le message
    Je t'avouerai que je n'ai jamais fait de tetris ou de pacman. Cependant dans mon école nous avons bouffés plusieurs projets en C et en C++, plus ou moins terminés selon les projets.
    Quand je lis ca et ca
    Citation Envoyé par _pouet Voir le message
    Comment cela fonctionne? Le serveur est-il particulier? Concrètement, qui a-t-il comme fichiers sur le serveur (des .php, des .exe, etc...)
    Cela me fait plutot peur. Tu veux faire du C++ et tu parles de fichiers PHP.

    Vous n'avez donc jamais fait de réseau. Je te conseille ce tutoriel afin, déjà, de te familiariser avec le concept d'un réseau et de "comment on fait du réseau ?".

    Enfin, pour ta question, un serveur est, en effet, un programme qui tourne en permanence sur une machine et qui écoute ce que lui demande les clients. Il s'agit, bien entendu, d'un exécutable (pas .exe car cela n'a une signification que sur windows) qui utilise alors différents moyens de communication (le plus souvent les sockets) pour écouter les clients.

    EDIT : Ah oui, j'ai oublié, dans un RTS style Starcraft, c'est une machine client qui fait serveur. Dans ce cas là, en général, la machine fait tourner deux processus un serveur et un client. C'est plus facile et pratique à coder au final.
    Mindiell
    "Souvent, femme barrit" - Elephant man

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Pardon pour la confusion, mais c'était pour préciser que je voulais savoir réellement qu'y a-t-il sur ce serveur? tu parles d'exécutable, mais cela a quelle forme? Je te préviens que je ne m'attribue pas des compétences de folie en programmation et en développement, cependant j'aimerais comprendre le principe. C'est un exécutable mais pas un .exe, donc c'est quoi? un .rien? y a pas de point? Est-ce que le serveur stocke quelque chose en fait? Le serveur c'est bien une grosse boite avec une carte de mère, un processeur, un gros disque dur et c'est relié à internet? Donc à partir de là il se met pas en marche tout seul? (ou alors oui, il est devenu autonome). Peut-être que le serveur en fait est le programme qui gère tout cela..

    Tant de questions..

  6. #6
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Euh, tu m'inquiètes là
    Le serveur d'une application client / serveur est un programme qui s'exécute. Le .exe ne signifie rien, mais sur une machine windows, oui ca sera un .exe.

    Il stocke des choses, ca depend du type de serveur et de l'application. Dans le cas d'un RTS, l'exécutable du jeu contient donc le serveur pour, par exemple, jouer en LAN. Le programme se coupe en deux un serveur et un client.
    Mindiell
    "Souvent, femme barrit" - Elephant man

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Je te parle de l'application sur le serveur. Tu me dis exécutable. Pour moi C++ est un langage compilé... donc si j'implémente mon serveur sur une machine windows en même temps que mon client ce sera un .exe.

  8. #8
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Toutafé
    Mindiell
    "Souvent, femme barrit" - Elephant man

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    ça veux dire que l'application sur mon serveur dépend de système d'exploitation sur celui-ci?

  10. #10
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Ah oui, complètement : Tu ne peux pas utiliser un exécutable compilé pour windows sur linux, et non plus un exécutable compilé sur un PC linux sur un sun linux (c'est à dire plateforme logicielle identique mais physique différente) en gros.
    Mindiell
    "Souvent, femme barrit" - Elephant man

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    D'accord, ça j'ai compris.
    Disons que je veux un serveur windows. J'ai regardé ce que tu m'as dis de consulter sur les réseaux. Mon exécutable serveur est sur mon serveur. Depuis mon application cliente, je peux faire des requêtes au serveur. Cependant il faut que l'application sur mon serveur soit lancée. Mais comment fais-je pour lancer cette application? Je me doute que je ne peux pas double-cliquer dessus... S'exécute-elle directement quand je l'upload sur le serveur? Ou alors doit-je par un protocole demander l'exécution de mon appli serveur? Et à partir de là pouvoir l'utiliser depuis mon appli client?

    Au fait, merci pour tes réponses et ta patiente

  12. #12
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    salut,

    il existe différents types d'hébergement que tu sembles confondre:

    - Les hébergements dit 'web' qui ne proposent que d'héberger un site web: tu as un accès (FTP) à un répertoire dans lequel tu peux déposer des pages web (pages HTML, pages PHP), pages qui seront interprétées par le logiciel de serveur web (apache) que le propriétaire du serveur (la machine) aura installé et configuré. Même principe pour la Base de données associée: on te donne un accès et la possibilité de définir une base de données.

    Dans le cas d'un tel hébergement, tu n'as pas les droits administrateur sur la machine qui héberge ton site web. tu ne peux donc pas faire ce que tu veux, juste poster des pages web et configurer/peupler ta base de données.

    L'hébergement web, c'est typiquement l'équivalent des hébergements gratuits (genre Free) que tu trouves à gauche ou à droite. Bien entendu, il existe également des offres d'hébergement web payante (pour plus de place, plus de puissance, plus de bande passante, plus de bases de données, ...).


    - Si tu veux faire un jeu multijoueur, tu voudras pouvoir exécuter un logiciel serveur, et donc louer une machine 'serveur' sur lesquels tu as tous les droits (on parle d'accès 'root' en référence au login administrateur sous linux).
    Là on parle alors de "serveur dédié" ou "serveur privé" (comprendre un serveur -la machine- qui t'es entièrement dédiée: tu peux faire tout ce que tu veux avec, y compris y installer ce que tu veux, lancer les programmes que tu veux, ...).

    Il n'existe pas de serveurs dédiés gratuits à ma connaissance. L'offre la moins chère est le serveur privé RPS 1 de chez OVH à 12€ TTC par mois.

    A noter qu'il y a de nombreux posts déjà existants sur le forum, genre:

    - Qui calcule dans un jeu multi joueur ?

    - installer son jeu sur un serveur dédié /projet multijoueur

    Il y a plein d'autres posts, à toi de chercher dans le forum
    Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.

  13. #13
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    Citation Envoyé par _pouet Voir le message
    Mon exécutable serveur est sur mon serveur...
    Pour un serveur de jeu, l'application serveur est lancée dès le démarrage de la machine. Pour windows, on aura tendance à en faire un service démarrant automatiquement.
    Mindiell
    "Souvent, femme barrit" - Elephant man

Discussions similaires

  1. Client serveur : quel algorithme choisir
    Par e-medi dans le forum Réseau
    Réponses: 1
    Dernier message: 15/07/2007, 22h54
  2. Quel est le principe de cette technologie
    Par epock29 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/03/2007, 09h54
  3. [client/serveur] Quel est format de requêtes Client/BDD ?
    Par sotuxan dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 05/03/2006, 12h52
  4. Réponses: 7
    Dernier message: 06/04/2005, 19h18
  5. Quel outil pour du développement Client/Serveur (Win XP) ?
    Par jey_bonnet dans le forum Débats sur le développement - Le Best Of
    Réponses: 5
    Dernier message: 02/11/2002, 14h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo