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

  1. #21
    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
    C'est pour ça je voulais faire de l'event driven design avec du CQRS, j'ai une bdd ou je fais juste de l’écriture (sur une bdd mongo db par exemple) et une autre pour la lecture ou j'ai juste les infos à jour (du genre mon player est lvl 15 il a tué 3000 monstres ...)
    Normalement avec mes donnés sauvegarder je peux vérifier qu'il n'y a pas de triche et recréer les données de la table de lecture.

    Après on peut se dire que c'est sortir le bazooka pour tuer une mouche, mais comme tout projet perso ça me permettra d'apprendre à utiliser de nouveaux outils, nouvelles technos ...

  2. #22
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2006
    Messages : 70
    Par défaut
    Non c'est pas forcément un bazooka.

    Car on peut récupérer beaucoup d'info utile ! N'as tu jamais vu ces "carte de chaleur" qui montrent où les joueurs meurts ? Ca permet clairement de mettre en évidence les zones les plus difficiles pour améliorer en continu l'équilibrage par exemple.

    Par contre, j'éviterais les enregistrement en continue. On n'a pas besoin d'enregistrement en temps réel, et encore moins de transaction pour ce genre de chose.
    Le modèle CQRS n'est pas forcément mauvais (même si je déconseilé de l'implémenter tel quel, ça ne serait pas adapté).

    Mais l'idée est bien d'avoir un service d'enregistrement des évènements en BDD, qui écoute sur les bus les évènements des parties, afin de les enregistrer par batch.
    Ca permet de dédier l'enregistrement à un seul service (quitte à en avoir plusieurs instance), où l'on peut régler le nombre de connexion, la fréquence d'écriture et la taille des batch de manière optimale.

    Beaucoup de MMO ne sauvegardent les données des joueurs que de manière régulière. Ca ne t'ai jamais arrivé de perdre ta progression des dernières minutes après le crash du serveur de ton MMO préféré ?

    Mais surtout, une telle archi ne ralentira pas les services qui calculent le jeu !

  3. #23
    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
    Citation Envoyé par Sebajuste Voir le message
    Non c'est pas forcément un bazooka.

    Car on peut récupérer beaucoup d'info utile ! N'as tu jamais vu ces "carte de chaleur" qui montrent où les joueurs meurts ? Ca permet clairement de mettre en évidence les zones les plus difficiles pour améliorer en continu l'équilibrage par exemple.

    Par contre, j'éviterais les enregistrement en continue. On n'a pas besoin d'enregistrement en temps réel, et encore moins de transaction pour ce genre de chose.
    Le modèle CQRS n'est pas forcément mauvais (même si je déconseilé de l'implémenter tel quel, ça ne serait pas adapté).

    Mais l'idée est bien d'avoir un service d'enregistrement des évènements en BDD, qui écoute sur les bus les évènements des parties, afin de les enregistrer par batch.
    Ca permet de dédier l'enregistrement à un seul service (quitte à en avoir plusieurs instance), où l'on peut régler le nombre de connexion, la fréquence d'écriture et la taille des batch de manière optimale.

    Beaucoup de MMO ne sauvegardent les données des joueurs que de manière régulière. Ca ne t'ai jamais arrivé de perdre ta progression des dernières minutes après le crash du serveur de ton MMO préféré ?

    Mais surtout, une telle archi ne ralentira pas les services qui calculent le jeu !
    Bein c'est le but en adoptant l'EDD, je pense que le temps réel avec des bdd tel que mongo doit être facilement réalisable, quand tu vois déjà les perfs de base sql server ...
    Bein justement j'étais sur un MMO où tu pouvais faire crash le serveur afin de dupliquer des items

  4. #24
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2006
    Messages : 70
    Par défaut
    Eh bien justement !

    Si tu sauvegarde par batch, il n'y a pas de duplication possible (ou tout du moins limité). Alors que si tu sauvegarde en continu, si !


    En effet, lors de la sauvegarde en continu, il faudra obligatoirement faire ces enregistrement en asynchrone.
    Si on attends que la donnée soit effectivement écrite sur disque avant de renvoyer la réponse au client, la simulation va obligatoirement subir des lag.
    Or, écrire des données de manière asynchrone, c'est se heurter aux problèmes de concurrence. Il est donc tout aussi possible de dupliquer des objets, que de les perdre...


    A l'inverse, si on regroupe les événements pour les -batcher-, on va pouvoir écrire en une seule fois toute une série de modifications. L'enregistrement de toute la série est donc atomique !
    L'avantage d'un service dédié à l'enregistrement est donc de pouvoir s'assurer que les batchs soit sauvegardé de manière séquentiel, même si les événements sont envoyés à ce service de manière asynchrone ( c'est une transaction coté logiciel en quelque sorte).

    Alors clairement, il ne s'agit pas d'un respect strict des propriétés ACID, mais ça permet de s'y rapprocher.

  5. #25
    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
    A voir une fois en place, je suis pas sur que dans mon cas le lag soit perturbant c'est du tour par tour, je peux comprendre que sur un action-rpg ça soit gênant ...

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