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 :

Créer un serveur pour MMORPG


Sujet :

Réseau et multijoueurs

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut Créer un serveur pour MMORPG
    Bonjour,
    j'ai commencé à bosser sur un rpg géolocalisé qui consistera essentiellement en du monster bashing, je voudrais en faire un jeu online et donc par exemple permettre la création d'équipe pour tuer des mob en coop et rendre ça persistant comme tout MMORPG.

    Le concept est proche de celui là https://playorna.com/ sauf que je le fais en 3D.

    Par contre je n'y connais rien dans le domaine de serveurs pour ce style de jeu, je sais moi même développer des webservices classique mais les problématiques ne sont pas les mêmes, j'ai fait quelques recherche et voilà où ça m'a amené :
    Privilégié les WebSockets pour la communication.
    Le serveur gère toutes les opérations pour éviter la triche (c'était évidant)

    Par contre pour le stockage je me pose la question doit-on utiliser une bdd classique ou c'est à proscrire et il faut se tourner à tout prix vers du NOSQL ? (J'ai vu qu'il y a une version de Firebase juste pour ça)

    Pour les serveurs existe-il des outils déjà tout prêt permettant la gestion de MMO, j'ai vu qu'il y a SmartFoxServer, Photon ...
    Mais je vois pas ce qu'ils font exactement et les possibilités, le but quand même ça serait de pouvoir développer ses propres api ou méthodes et les intégrer dessus, quelqu'un a déjà utilisé ce genre de serveur et pourrait me conseiller ?
    Sachant que j'aimerai pouvoir dev en C# si possible (JS est une possibilité, au pire JAVA après le reste des langages je ne connais pas assez ...).

    Ou sinon faut-il créer son propre serveur? quel architecture choisir ? Comment se passe l'authentification ? où l'héberger (cloud ou dédié) ?

    Si des gens s'y connaissent qu'ils se signalent j'ai plein de question ...

    Actuellement pour mes tests je développe une API Rest (pour l'instant sans persistance).

  2. #2
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    Citation Envoyé par youtpout978 Voir le message
    Privilégié les WebSockets pour la communication.
    Effectivement c'est un bon support

    Citation Envoyé par youtpout978 Voir le message
    Le serveur gère toutes les opérations pour éviter la triche (c'était évidant)
    Oui, absolument tous les calculs doivent être fait sur le serveur, mais ça ne t'empêche pas de les faire sur les client aussi, pour plus de réactivité, et ensuite corriger le résultat si besoin.

    Citation Envoyé par youtpout978 Voir le message
    Par contre pour le stockage je me pose la question doit-on utiliser une bdd classique ou c'est à proscrire et il faut se tourner à tout prix vers du NOSQL ? (J'ai vu qu'il y a une version de Firebase juste pour ça)
    un serveur sql fera très bien l'affaire.

    Citation Envoyé par youtpout978 Voir le message
    Ou sinon faut-il créer son propre serveur? quel architecture choisir ? Comment se passe l'authentification ? où l'héberger (cloud ou dédié) ?
    C'est une possibilité, c'est ce que j'ai fait, l'architecture dépendra du jeu en lui même, un rpg tour par tour n'a pas les mêmes contraintes qu'un real time par exemple.
    L'authentification se fait idealement sur une app distincte, elle a aussi ses propres contraintes (se protéger des comiques qui tentent les mots de passe en brute force par exemple...)

    Citation Envoyé par youtpout978 Voir le message
    Actuellement pour mes tests je développe une API Rest (pour l'instant sans persistance).
    du REST, ça risque d'être verbeux, mieux vaut un protocole plus léger et solide en général.

  3. #3
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Oki merci.

    Dans l'idée je partirai sur du websocket (la diff de perf avec les sockets classique est-elle importante ?)
    Pour la connexion un serveur avec identity server permettant soit de crée un compte classique soit de passer par fb/google, j'aurai juste à transmettre le token.
    Après pour l'appli server en elle même surement du microservice permettant d'isoler les fonctionnalités et chacun sa base de donnée et je sauvegarde toutes les interactions (event driven design avec rabbitmq ?) afin de prévenir la triche.
    Ce n'est pas des design que j'ai déjà mis en oeuvre, j'essaye de me renseigner pour savoir comment les mettre en oeuvre, docker semble un outil indispensable.

    Comme je l'ai dis pour le moment j'ai une simple api rest et des fonctionnalités pour me gérer mes zones et mes monstres par zone mais rien de persistant, tout est en mémoire résultat des bon temps de réponse le premier appel met 400ms mais les suivants 50ms, bon je test seul mais c'est déjà bon signe.

  4. #4
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    Citation Envoyé par youtpout978 Voir le message
    Oki merci.

    Dans l'idée je partirai sur du websocket (la diff de perf avec les sockets classique est-elle importante ?)
    Il y a un overhead lors de l'upgrade http -> socket, sinon c'est kif kif

    Citation Envoyé par youtpout978 Voir le message
    Pour la connexion un serveur avec identity server permettant soit de crée un compte classique soit de passer par fb/google, j'aurai juste à transmettre le token.
    C'est une bonne approche.

    Citation Envoyé par youtpout978 Voir le message
    Après pour l'appli server en elle même surement du microservice permettant d'isoler les fonctionnalités et chacun sa base de donnée et je sauvegarde toutes les interactions (event driven design avec rabbitmq ?) afin de prévenir la triche.
    Ce n'est pas des design que j'ai déjà mis en oeuvre, j'essaye de me renseigner pour savoir comment les mettre en oeuvre, docker semble un outil indispensable.
    Pas fan du microservice, ça veut dire un gateway qui va rediriger, donc un hop de plus, pour un jeu temps réél ça peut devenir compliqué.
    J'utilise aussi une archi event driven, c'est bien adapté pour les jeux.

    Citation Envoyé par youtpout978 Voir le message
    Comme je l'ai dis pour le moment j'ai une simple api rest et des fonctionnalités pour me gérer mes zones et mes monstres par zone mais rien de persistant, tout est en mémoire résultat des bon temps de réponse le premier appel met 400ms mais les suivants 50ms, bon je test seul mais c'est déjà bon signe.
    Le premier c'est sans doute l'upgrade websocket.

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Oui met l'overhead implique-t-il une grande différence? j'ai trouvé aucun benchmark comparant socket et websocket.

    Comment tu as mis en place ton archi, tu utilises quel techno ?

    Pour les microservices si tu héberges tout chez le meme provider ça devrais aller, surtout que les opérateurs cloud propose souvent leur propre solution pour ca style servicefabric que j'ai utilisé chez azure, mais qui contraint à leur techno mais j'ai cru comprendre que certains supportait RabbitMQ.

    Donc tu préconise un seul gros projet avec toute la logique de gestion du jeu dedans ?

  6. #6
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par défaut
    Citation Envoyé par youtpout978 Voir le message
    Oui met l'overhead implique-t-il une grande différence? j'ai trouvé aucun benchmark comparant socket et websocket.
    Pour l'overhead, c'est juste à la connexion, typiquement lors du loading screen par exemple, donc ce sera invisible.

    Citation Envoyé par youtpout978 Voir le message
    Comment tu as mis en place ton archi, tu utilises quel techno ?
    Mon moteur est basé sur netty pour le réseau, pour la persistence, jooq et puis peu importe le rdbms mais c'est postgres dans le jeu.
    Tu peux jeter un oeil sur https://github.com/yildiz-online/engine-server (c'est tout petit vu que c'est modulaire, les librairies sont dans les modules adhoc que tu trouveras dans le pom.xml(et les implémentation chargées au runtime), et la logique de jeu, elle n'est pas open source).

    L'architecture structurelle est modulaire, avec un découplage entre les composants.
    L'architecture fonctionnelle est réactive(pas event driven au sens propre, mais plutot sur le pattern observer)

    le scaling horizontal n'est pas encore géré, j'ai l'archi en tête, mais pas encore implémenté vu que pas besoin pour l'instant.

    Citation Envoyé par youtpout978 Voir le message
    Donc tu préconise un seul gros projet avec toute la logique de gestion du jeu dedans ?
    Non, moi j'ai plusieurs projets, divisés en features, qui sont des librairies, lors de la construction du binaire final, tout est assemblé en un seul gros artefact dans une unique image docker(toute la chaine de build est automatisée, c'est transparent).
    C'est ce que je trouve de plus efficace quand il faut à la fois développer et s'occuper de l'opérationnel, et ce, à coté de la famille et du boulot(et les autres projets).

Discussions similaires

  1. créer son serveur pour une application android
    Par angelofsoul dans le forum Développement
    Réponses: 0
    Dernier message: 15/09/2014, 20h21
  2. créer un Serveur pour une application android
    Par Tunesischen dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 28/03/2011, 11h41
  3. Créer un serveur pour visualiser une webcam en temps réel
    Par Crepuscule3 dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 13/12/2007, 22h57
  4. Réponses: 2
    Dernier message: 22/02/2007, 19h38
  5. Est ce que vous aurez de la doc pour créer son serveur ftp?
    Par fred59 dans le forum Dépannage et Assistance
    Réponses: 4
    Dernier message: 20/02/2007, 21h52

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