Questions pour gérer un univers persistant
Publié : 05 Déc 2018 18:57
Salut,
Je suis en train de me renseigner sur la meilleure manière de mettre en place le multijoueur dans mon jeu, et je me suis fait un peu mal à la tête hier soir. Je viens donc demander des conseils/avis ici !
Mon besoin : j'ai un univers (dans le sens avec des galaxies, étoiles...) que je dois rendre "online" et que je dois persister. C'est à dire un même univers pour tous les joueurs, chaque fois qu'un joueur fait quelque chose (récolte une ressource, gagne un niveau etc...) c'est visible par tout le monde (dans le cas de la récolte, la ressource disparaît pour les autres joueurs).
Toutes les infos du joueur doivent être sauvegardées et récupérées quand il reviendra sur le jeu (ses stats, son inventaire, ses constructions etc...).
Le jeu est un jeu de gestion en 2D.
Je n'ai pas besoin d'avoir un temps réel de malade, il n'y aura pas d'interaction directe entre les joueurs, pas de combats, peut être au maximum un échange direct de ressources entre 2 joueurs connectés, donc niveau latence j'ai pas besoin d'avoir un truc de fou.
Comment vous feriez ça ?
J'ai passé la soirée d'hier à étudier Photon, mais son système de lobby et room ne correspond pas du tout à ce que je veux faire. Je ne veux pas X joueurs par room, mais tous les joueurs dans la même instance. Il ne gère pas non plus la persistance de données...
Est-ce que Photon (ou une de ses milliards de produits/api différents) pourrait convenir à mon besoin ?
Dans le cas de le persistance des données je sais qu'il est possible d'utiliser une BDD externe et de tout enregistrer dedans. Mais concrètement comment ça se passe, je vais devoir envoyer du json dans tous les sens toutes les 2 secondes ? Un joueur récolte une ressource BIM, j'appelle mon api et j'enregistre l'info en base. Un joueur se déplace BIM j'appelle mon API et j'enregistre l'info en base etc.... C'est pas un peu lourdingue ?
Je suis dev back end sur Symfony/Laravel de profession, donc bricoler une API pour enregistrer/récupérer des données dans une base SQL est très facile pour moi donc se serait la solution idéale, mais j'ai l'impression que ça va être lourd à mettre en place vu la masse d'info que je dois sauvegarder.
Faut-il coupler plusieurs solutions ? Comme Photon (si ya moyen de bypass son système de lobby et room) + un système de persistance dans une BDD via une API ?
Bref, si vous voulez bien m'éclaircir sur tout ça se serait sympa Tout ceci me semble assez lourd à mettre en place et je n'ai pas envie de partir sur une mauvaise solution... histoire de ne pas perdre de temps !
Merci !
Je suis en train de me renseigner sur la meilleure manière de mettre en place le multijoueur dans mon jeu, et je me suis fait un peu mal à la tête hier soir. Je viens donc demander des conseils/avis ici !
Mon besoin : j'ai un univers (dans le sens avec des galaxies, étoiles...) que je dois rendre "online" et que je dois persister. C'est à dire un même univers pour tous les joueurs, chaque fois qu'un joueur fait quelque chose (récolte une ressource, gagne un niveau etc...) c'est visible par tout le monde (dans le cas de la récolte, la ressource disparaît pour les autres joueurs).
Toutes les infos du joueur doivent être sauvegardées et récupérées quand il reviendra sur le jeu (ses stats, son inventaire, ses constructions etc...).
Le jeu est un jeu de gestion en 2D.
Je n'ai pas besoin d'avoir un temps réel de malade, il n'y aura pas d'interaction directe entre les joueurs, pas de combats, peut être au maximum un échange direct de ressources entre 2 joueurs connectés, donc niveau latence j'ai pas besoin d'avoir un truc de fou.
Comment vous feriez ça ?
J'ai passé la soirée d'hier à étudier Photon, mais son système de lobby et room ne correspond pas du tout à ce que je veux faire. Je ne veux pas X joueurs par room, mais tous les joueurs dans la même instance. Il ne gère pas non plus la persistance de données...
Est-ce que Photon (ou une de ses milliards de produits/api différents) pourrait convenir à mon besoin ?
Dans le cas de le persistance des données je sais qu'il est possible d'utiliser une BDD externe et de tout enregistrer dedans. Mais concrètement comment ça se passe, je vais devoir envoyer du json dans tous les sens toutes les 2 secondes ? Un joueur récolte une ressource BIM, j'appelle mon api et j'enregistre l'info en base. Un joueur se déplace BIM j'appelle mon API et j'enregistre l'info en base etc.... C'est pas un peu lourdingue ?
Je suis dev back end sur Symfony/Laravel de profession, donc bricoler une API pour enregistrer/récupérer des données dans une base SQL est très facile pour moi donc se serait la solution idéale, mais j'ai l'impression que ça va être lourd à mettre en place vu la masse d'info que je dois sauvegarder.
Faut-il coupler plusieurs solutions ? Comme Photon (si ya moyen de bypass son système de lobby et room) + un système de persistance dans une BDD via une API ?
Bref, si vous voulez bien m'éclaircir sur tout ça se serait sympa Tout ceci me semble assez lourd à mettre en place et je n'ai pas envie de partir sur une mauvaise solution... histoire de ne pas perdre de temps !
Merci !