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

Réseau et multijoueurs Discussion :

Mini MMO, incidence du type de client sur le serveur


Sujet :

Réseau et multijoueurs

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Mini MMO, incidence du type de client sur le serveur
    (Pavé Inside)

    Bonjour à tous,

    Je me présente, Myrtill, codeur en herbe ayant des heures à perdre
    Navigant sur l'immense toile, je suis tombé un jour sur des petits jeu flash que les gens adorent et c'est le nombre de visiteurs qui m'a interpelé.

    Motivé par l'idée que même un jeu mal fait (à mon gout bien sur) pouvait devenir "célèbre", je me suis lancé dans un petit projet, me disant qu'apparement, même si je faisais un truc pourri, certaines personnes allaient peut être aimer

    J'étais parti sur une sorte de combat automatique en flash, pour au final m'orienter vers du pseudo temps réel afin de rendre la chose plus agréable. Je me suis ensuite dis qu'il serait plus sympa de faire ca en multijoueur et j'ai découvert les sockets. Puis, maintenant que je connaissais la facon dont pouvait communiquer un client flash avec une application server, je me suis dit que je pourrais peut être aller plus loin. Par exemple, déplacer un personnage dans une map.

    Et de fil en aiguille, j'étais en train de me lancer une sorte de mini mmorpg. Certe le premier M de mmorpg est un peu éxagéré, mais dans l'idée, ça y ressemble.
    J'essaye de ne pas y penser car cela me fait peur. Je n'ai fais que des petits site web et loin de moi l'idée de refaire un mmo .

    Bref, je me lance toute de même dans le projet et un ami me conseil alors de me tourner vers le Java pour créer mon application server. J'allais acheter un bon bouquin du style, Java pour les GROS nuls, mais, miracle, un second ami (oui j'en ai quelques un !) me propose de regarder sur developpez.com

    La je trouve mon bonheur et je m'inspire d'un superbe pdf de M. TAHE que je ne remercierais jamais assez tant j'ai appris grace à son cours. Je suis donc très chaud et je me lance dans mes premiers bout de code en objet (aie).
    Non sans douleur, j'arrive tout de même à faire quelque chose et ca marche :o
    Ne connaisssant rien au flash non plus et désireux de me focaliser sur un seul nouveau langage, je tente de trouver une alternative pour tester mon server, et le telnet me sauve.

    Heureux de pouvoir tester mes connections clients, l'envoi de message, déplacement dans une map virtuelle etc, j'en viens à me poser des questions.

    Actuellement, j'ai une application serveur qui gère tout (Gestion du Socket, Creation de clients, lecture du socket et interpréation, déplacement des clients etc etc etc).
    Plus tard, je pensais avoir donc un client en flash, qui s'occuperait de la partie graphique et d'envoyer sur le socket ouvert les diverses informations que mon client souhaite envoyer.

    Mais le flash étant limité, je me suis demandé si il était compliqué de le remplacer par un moteur 3D. Et c'est la que je seche. Je trouve plein de doc sur les fonctionnement des moteurs, ce qu'ils font, leur complexité etc, mais je n'arrive pas à savoir comment ils s'incrustent dans un mmo.

    Pour moi, ce n'est qu'un autre support et je n'ai rien à faire coté serveur. Le client n'est la que pour envoyer/recevoir des informations sur un socket et afficher le résultat. Après, que ca soit en 3D ou 2D, en flash ou autre, ca ne change rien.


    Ais-je tord ? Un client qui integre un moteur 3D m'oblige-t-il à ajouter un paquet de code du coté serveur ? Est-ce compliqué ?

    C'est ma plus grosse question. Bien sur, j'en ai plein d'autre, mais je crois que j'ai assez raconté ma vie actuellement

  2. #2
    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 : 44
    Localisation : France

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

    en un mot : il faut bien séparer tes différentes couches de ton application. La programmation orientée objet est d'ailleurs tout indiquée pour bien séparer les différents blocs d'une application.

    en gros, tu peux implémenter différentes parties côté client:

    - la brique réseau, qui s'occupe uniquement d'envoyer et de recevoir des données
    - la brique 'modèle de données' qui contient l'ensemble des données de ton jeu (les persos, leur position, ...)
    - la brique 'moteur graphique' qui s'occupe elle uniquement d'afficher un rendu des données à l'écran.

    Comme souvent répété: les projets amateurs de MMORPG-like sont légions sur la toile. Ceux qui sont arrivés à leur terme se comptent sur les doigts d'une seule main. Faire ce genre de jeu demande des compétences énormes dans pleins de domaines différents (où l'expérience nécéssaire dans chaque domaine se compte en années), et un temps fou (on parle toujours d'années, là).

  3. #3
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 148
    Points : 232
    Points
    232
    Par défaut
    Bonjour,

    Ais-je tord ? Un client qui integre un moteur 3D m'oblige-t-il à ajouter un paquet de code du coté serveur ? Est-ce compliqué ?
    Pour répondre correctement à la question, il faudrait avoir toutes les informations concernant le fonctionnement théorique de ton jeu, donc avoir le cahier des charges de ton projet ...
    Plus sincèrement, si tu définis clairement ton projet (déja à toi même) plutôt que d'avancer à l'aveuglette, les questions que tu te poses trouveront leur réponse d'elles-même.

    Ceci étant, je ne pense pas qu'il faille modifier radicalement le code côté serveur ... mais une fois de plus, tout dépend de ce que tu attends du client et du serveur. {je n'affirme pas, je suppose }

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Merci pour cette réponse nounouk,

    Si j'interprete bien ce que tu as marqué, cela confirme ce que je pensais.
    Quelque soit le rendu graphique choisi, le client garde en gros la même structure.

    Actuellement je me focus sur le serveur, la creation des clients lors de leur connection, déplacement, intéractions etc. Vu que je peux "simuler" un client grace au telnet, ca me suffit actuellement. Si vraiment j'arrivais a faire quelque chose de sympa, alors peut etre je me pencherais sur un vrai client avec moteur 3D.

    Comme tu dis, un vrai mmo est quelque chose d'énorme, et c'est en codant un simple déplacement en x ou y que j'ai vu le nombre de choses à implémenter. Un travail gigantesque. C'est pour ca que je n'aime pas parler de mmo. Plutot d'un petit jeu que j'essaye de mettre au point


    edit : @Shaidak
    En effet, je n'ai pas posé tout mon travail sur papier. Je l'avais fait il y a 1 an et j'ai oublié le mot de pass de mon fichier Doc -_-.
    Le soucis est qu'étant techniquement limité (je découvre le Java et la programmation Objet), je ne peux pas me dire : je veux que la map entière soit customisable, que les mur puissent etre détruits etc.
    J'ai du mal à me définir des limites car je ne sais pas comment les coder. Ce qui fait que je pense à une idée, je tente de la mettre en place, et je la valide ensuite. Ca ne doit pas etre la bonne méthode, j'avoue ^^ C'est d'ailleur pour ça que je travaille seul sur le projet. Déjà parce que je suis trop nul pour demander une aide des pro sur les forums, mais surtout parce que rien n'est bien posé du à mon manque de connaissances techniques.

    Dans mon idée, quelque soit le contenu que je souhaite ajouter, et même si celui ci n'a pas été pensé au début, je n'aurai à modifier que le serveur. Le client lui ne ferait qu'interpreter les commandes (ajout d'une animation etc).

    C'est peut être pas très clair ce que j'écris la ^^

  5. #5
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 148
    Points : 232
    Points
    232
    Par défaut
    En même temps, il faut bien commencer quelque part
    Ceci étant, au moins tu essayes de faire quelque chose en gardant les pieds sur terre, et ça c'est un gros plus.

    Le soucis est qu'étant techniquement limité (je découvre le Java et la programmation Objet), je ne peux pas me dire ...
    J'ai du mal à me définir des limites car je ne sais pas comment les coder.
    Si tu veux un conseil, si tu as du temps et que tu veux te perfectionner, ne t'y prend pas comme cela pour faire une application. Penses d'abord à ce que tu veux faire, et ensuite cherches les limites (s'il y en a ).
    Partir de ce que tu sais déjà faire ne te fera pas progresser, c'est en cherchant à faire des choses qui te sont inconnues que tu découvriras, que tu progresseras et que tu seras à même d'apprendre plus rapidement par la suite.
    Bien entendu, tu risques de te heurter à de grands murs avec cette technique, mais personnellement, ça me permet de savoir ce que je dois chercher ou ce que je dois demander.

    En tous cas, bon courage !

  6. #6
    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 : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    Attention à ne pas penser que le serveur doit faire TOUS les traitements et le client n'être qu'un afficheur de résultat. en termes de charge pour le serveur comme en consommation de bande passante, ce ne serait pas viable.

    Une bonne architecture client / serveur est un savant partage des responsabilités entre chaque partie (client et serveur). Et ça, il n'y a pas grand chose d'autre que les nombreux ouvrages sur le sujet et l'expérience qui pourront te l'apprendre.

  7. #7
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Je l'ai déjà remarqué oui.
    Par exemple, vu que je souhaite implémenter l'angle de vision dans mon jeu (oui j'ai toujours trouvé débile de pouvoir voir a 360° dans un mmo), j'ai compris vite fait qu'il était plus judicieux de le faire coté client que coté serveur, vu le nombre de calcul à faire.
    Ce qui m'embete, c'est qu'un petit malin pourrait réussir, en modifiant le client, à tout afficher par exemple. Mais ca, je laisse tomber, j'aurai bien le temps de trouver des méthodes pour etre sur de l'intégrité du client utilisé plus tard.

    @Shaidak : j'applique plus ou moins cette méthode tout de même. Par exemple, je ne savais pas comment faire un system de message privé car le client visé pouvait etre dans une autre map (et donc une autre liste de client). Je pensais abandonner l'idée puis j'ai modifié mon code de facon à avoir une class qui dispose de toutes les map et donc de toutes les liste de client (ce qui me permet de trouver ma cible).

    Mais bon, on est d'accord, c'est surtout le fait de savoir que cette fonction existe déjà dans certains jeux qui m'a forcé à me pencher dessus. C'est déjà plus compliqué quand on essaye de faire quelque qui n'a jamais été fait (enfin que j'ai jamais vu xD)


    Merci pour votre soutient en tout cas. Je vais continuer sur mon appli coté serveur et déjà implémenter tout ce que je peux. Je reviendrais surement à la charge ici même ou dans un autre topic concernant le lag compensation. Utile ou pas utile dans un mmo ? Je me demande.


    edit : j'ai peut etre trop les pieds sur terre justement. Je me limite grandement dans mon code car j'ai l'impression que le serveur ne va pas suivre, du moins, pas avec le nombre de client maximum que j'envisage. Et j'ose pas me dire : osef, tu codes, meme si c'est bourrin. Tu optimiseras plus tard. J'ai l'impression de coder encore plus mal que d'habitude xD. (j'ai été traumatisé par certains mmo mal codé qui lag trop ...)

Discussions similaires

  1. authentification compte local client sur windows serveur 2012
    Par p7500 dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 10/06/2014, 12h24
  2. Pb d'accès client sur un serveur 2012Server et Firebird 2.5.2
    Par b.heinrich dans le forum Connexion aux bases de données
    Réponses: 3
    Dernier message: 21/02/2013, 07h38
  3. Réponses: 1
    Dernier message: 25/04/2012, 10h54
  4. Recuperation du login windows du client sur le serveur
    Par gueguenkevin dans le forum ASP.NET
    Réponses: 10
    Dernier message: 15/02/2008, 09h20
  5. lire un fichier du client sur le serveur
    Par danathane dans le forum Langage
    Réponses: 5
    Dernier message: 27/09/2007, 15h19

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