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 Mobile en Java Discussion :

Application multijoueurs, comment faire transiter les données ?


Sujet :

Développement Mobile en Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Points : 21
    Points
    21
    Par défaut Application multijoueurs, comment faire transiter les données ?
    Bonjour,

    Dans le cadre d'un stage je dois faire une appli jeu multijoueur sur mobile.
    Afin de faire du multi-plateforme et pour d'autres raisons techniques et personnelles, j'ai choisi d'utiliser libGDX.
    Mais une autre grande question m’apparaît : comment gérer l'envoi, réception, traitement de données ?

    Je pourrai développer 2 types de jeu :
    - une en réseau local, les joueurs se connectent entre eux sur une distance limitée.
    - une en réseau distant, dans n'importe quelle zone du monde, les joueurs peuvent jouer.

    Dans ces deux cas, quel matériel serait nécessaire ? Borne wifi ? Serveur ? Rien ?
    J'ai du mal à visualiser comment programmer ces envois de données sachant que libGDX est capable de networking (https://github.com/libgdx/libgdx/wiki/Networking).

    Edit : autre chose, comment doit marcher une application en background ?

    Merci pour vos réponses,

    Cordialement

  2. #2
    Membre averti
    Avatar de smarlytomtom
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2014
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 139
    Points : 373
    Points
    373
    Billets dans le blog
    1
    Par défaut
    d'après ce que j'ai vu libGDX reste assez limité au niveau du Networking !
    seul la communication par socket est supporté, après peut être que cela à été amélioré avec des nouvelles versions ?
    Je te laisse quand même un lien vers une intro au networking avec libGDX !

    http://www.gamefromscratch.com/post/...etworking.aspx

    bonne chance !
    Thomas Gredin.
    Développeur Unity 3D/VR

    Mon site personnel : http://thomasgredin.com/fr
    Mon portfolio : http://thomasgredin.com/fr/portfolio

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Points : 21
    Points
    21
    Par défaut
    La communication par socket n'est pas bonne ou fiable ? Comment font les autres applications pour échanger avec internet ?
    Merci pour le tuto, je l'ai déjà survolé ce qui m'a permis de voir que libGDX sait gérer ça.

    J'ai découvert Nuggeta Server qui semble être à la fois peu connu du web (faute des nuggets qui réussissent à passer en tête de Google) et aussi utilisé dans beaucoup d'applications. Mais le site semble pauvre en informations. Il semblerait qu'en plus le système puisse travailler avec libGDX (http://www.nuggeta.com/nuggeta-server/how-it-works). Ils ont une petite chaîne youtube qui a 5 petits tutos.

  4. #4
    Membre averti
    Avatar de smarlytomtom
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2014
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 139
    Points : 373
    Points
    373
    Billets dans le blog
    1
    Par défaut
    Je penses que si une lib comme libGDX à mis en place un système de networking qui supporte seulement les socket (d'après les dire du lien que je t'ai donné plus haut), c'est que c'est un bon début !
    Je ne voudrais pas dire de bêtises mais il me semble que les socket permettent une communication entre un client et un serveur ...
    Le socket serveur permet d'attendre qu'un client se connecte sur le serveur pour demander quelque chose à ce dernier et le socket client lui permet de se connecter au serveur pour demander des informations.
    Ce qui est gênant dans tout ça c'est que ton envie de faire ne semble pas réclamer de serveur !

    Et pourquoi pas juste faire un jeux multi mais en local en passant par une API Bluetooth pour l'échange d'information ! Je penses que le protocole est plus simple à utilisé (ou pas).
    Pour ce qui de nugget je connais pas !
    Thomas Gredin.
    Développeur Unity 3D/VR

    Mon site personnel : http://thomasgredin.com/fr
    Mon portfolio : http://thomasgredin.com/fr/portfolio

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Points : 21
    Points
    21
    Par défaut
    Bon alors on va dire que LibGDX est capable de faire ça correctement.
    Si quelqu'un à quelque chose à dire tout de même, il ne faut pas hésiter

    Ce qui est gênant dans tout ça c'est que ton envie de faire ne semble pas réclamer de serveur !
    Excuse moi, je ne développe pas assez mes idées.
    Alors comme je le disais du coup je pensais à plusieurs types de jeux dans lesquels je distingue 2 cas :
    - Le réseau distant ( utilisant la 3G )=> Serveur obligatoire, non ? Et là je suis un peu dans le vague quant à sa gestion.
    - Le réseau Local.(utilisant le Wifi / Bluetooth ? ) Mais là le principe serait par exemple que l'application transforme le téléphone en manette et tout le monde jouerai sur un seul écran, les mouvements de chaque joueurs étant transmis quelque part. Et dans ce cas que faudrait-il ?

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Mars 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2014
    Messages : 21
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    Il me semble que la question de la technologie à utiliser est prématurée. En effet pour choisir une technologie, il faut savoir quels sont les besoins, et là on se heurte au premier problème: quel jeu veux-tu faire ?

    Ou même sans donner exactement le jeu, quelles sont ses caractéristiques ?

    Répondre à cette question te permettra de choisir une architecture pour le jeu, et de pouvoir nous en dire plus sur le type d'information à échanger, ceci afin que l'on puisse te conseiller.

    Les questions relatives aux caractéristiques du jeu pourraient être:
    Combien de joueurs ? 2 (tennis, échecs,..) plusieurs
    Doivent-ils se connaitre pour initier une partie (dans le sens savoir qui est l'autre et donc le joindre) ?
    Le jeu est-il réactif (genre un shoot'em up) ou est-ce un jeu où le temps à peu d'importance (genre jeu de stratégie: dames, ... ) ?
    Le jeu nécessitera-t-il beaucoup d'échange de données (à priori à éviter ...)
    Le jeu est-il un jeu à tours où l'ordre des actions de chacun des joueurs est déterminé à l'avance, ou est-ce un jeu très interactif où chacun peut intervenir à n'importe quel moment, et dont les actions influence le comportement des autres.

    En effet ces questions ont pour but de déterminer si, une plateforme de mutualisation sous forme d'un serveur (généralement, dans ce cas hébergé sur une machine connectée au réseau) est nécessaire. Sinon, cela peut-être un jeu en mode pair à pair, ou chacun des mobiles à une partie de l'état du jeu et la communique à l'autre (aux autres pairs). [je pense que les jeux reposent souvent sur un serveur, ce qui aide aussi à trouver les autres joueurs, car dans la cas pair à pair il faut initier la connexion entre les mobiles et là ... c'est ou très sale ou très peu user-friendly]
    Ses questions ont aussi pour but de savoir si une connexion de type client serveur est suffisante (le programme sur le mobile a un client dirigé vers le serveur et s'en sert pour retrouver des états et envoyer des actions) ou besoin d'une communication bidirectionnelle (où le serveur va informer le client de modifications d'état que ce dernier devra prendre en compte, tout en continuant à envoyer des actions).
    Après en connaissant la fréquence et le volume des échanges tu pourra choisir une technologie et après choisir une librairie qui te permet d'utiliser la technologie (rien ne t'interdit d'utiliser autre chose que LibGdx pour effectuer la connectivité réseau, d'ailleurs la stack Android marche plutôt bien pour une connectivité http).
    En tout cas, je procèderai dans ce sens là, si ce problème m'était donné.

    peut-être y-a-t-il d'autres critères comme (il n'est pas pensable d’héberger un serveur sur le réseau).
    peut-être as-tu déjà répondu à toute ces questions...

    Enfin je ne comprends pas quel différence tu fais entre le réseau local et le réseau distant vis à vis du fonctionnement du jeu ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Points : 21
    Points
    21
    Par défaut
    Bonjour tac.p et merci,
    Hmmm je vois je ne donne encore pas assez de détails

    Alors j'ai en tête deux types de jeux différents, l'un comme l'autre pourrait être développé et je voudrais savoir le matériel et la technologie nécessaire pour les réaliser. (habituellement on choisit surement le jeu à créer d'abord non ? )

    Première idée : Un jeu qui se base sur la map et le GPS. (comme Ingress :https://play.google.com/store/apps/d....ingress&hl=fr d'ailleurs lui aussi a été réalisé avec libGDX)

    La transmission de donnée devrait être
    Client → Serveur*: propre position GPS / Utilisation d'objets.
    Serveur → Client*: Position de tous les joueurs / Si objet utilisé, la zone d'affectation.
    Le jeu est réactif, il faut savoir en temps réel ( toutes les secondes / 2 secondes / est-ce trop rapide ? ) où sont les autres joueurs. Au final chacun peut intervenir à n'importe quel moment, et dont les actions influence le comportement des autres.
    Cela représente-t-il un gros échange de données ?

    Un joueur pourrait rejoindre le jeu à n'importe quel moment.
    Il pourrait y avoir de 1 à 50 joueurs voir bien plus si le jeu est connu.

    Deuxième idée : (ce que je voyais comme local)

    admettons : "Les voient un écran dans la rue leur proposant de se connecter à un réseau en particulier pour jouer"
    Les joueurs sortent leur smartphones et se connectent. Pas plus de 10 connexions.
    Tant qu'il n'y a pas au moins deux joueurs il ne se passe rien.
    Si la majorité décide de lancer la partie, le jeu se lance.
    Là, chaque smartphone est une manette. Les actions en temps réelles sur le smartphones sont retransmises sur le grand écran.
    On va avoir par exemple un jeu de course très simple.
    Typiquement ceci : https://www.chrome.com/supersyncsports/
    Il devrait y avoir pas mal de données à échanger mais pour 10 personnes, pourquoi pas ?

    Dans les deux cas les smartphones ne devraient pas avoir à communiquer entre eux. Si ?
    J'espère que mes explications avec des exemples concrets d'application permettent de voir plus clair
    Il semblerait que Kryonet soit souvent régulièrement utilisé avec libGDX (https://www.youtube.com/results?sear...gdx+networking)


    Edit : je viens de me rendre compte que libGDX ne gère pas le GPS
    Quelqu'un connaitre donc un éditeur multiplateforme capable de faire ceci ? (que pensez vous de phonegap ?)

  8. #8
    Membre averti
    Avatar de smarlytomtom
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2014
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 139
    Points : 373
    Points
    373
    Billets dans le blog
    1
    Par défaut
    dans le premier cas tu envisage donc un serveur centrale qui gère les partie.
    dans le second c'est la même chose mais quelle type de connexion voudrais tu utiliser ?
    Si tu pose une borne dans le rue (chose peu probable) il te faut un moyen de connexion courte porté (Bluetooth ?).

    Dans le premier cas libGDX semble convenir après au niveau de l'affichage de la carte tu comptes utiliser google Map ? c'est vrai que tu es amené à te poser vraiment beaucoup de questions avant de commencer le code ! Je penses que le mieux serait que tu te fasses un cahier des charges pour poser les choses correctement et ne pas arrivé devant des problèmes que tu n'as pas envisagé auparavant !
    Bonne chance
    Thomas Gredin.
    Développeur Unity 3D/VR

    Mon site personnel : http://thomasgredin.com/fr
    Mon portfolio : http://thomasgredin.com/fr/portfolio

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Points : 21
    Points
    21
    Par défaut
    Bonjour et merci de vos réponses.

    Bon avant de continuer je vais faire valider une des idées. Chercher les outils et ensuite chercher ce que l'on veut créer n'est pas la meilleur solution...

  10. #10
    Membre averti
    Avatar de smarlytomtom
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2014
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 139
    Points : 373
    Points
    373
    Billets dans le blog
    1
    Par défaut
    Cela dépend de ta façon de travailler et de voir les choses !
    Personnellement je penses qu'il ne faut pas partir à fond depuis le début sans avoir une idée de ce à quoi on veut aboutir ! Le mieux est de faire une sorte de cahier des charges qui mais en relation un résultat (multijoueurs, graphismes 2D, 3D, ...) et les technologie qui vont être utilisé. Ensuite on peut chercher les outils plus facilement car on sait exactement ce qu'ils doivent faire dans notre projet.

    Une façon de penser inverse pourrai t'amener à te servir d'outils qui ne sont peut être pas adapté à tes besoins ! Après c'est à toi de choisir mais je penses que prendre des bonnes habitudes depuis le début c'est mieux pour la suite !

    Bonne chance !
    Thomas Gredin.
    Développeur Unity 3D/VR

    Mon site personnel : http://thomasgredin.com/fr
    Mon portfolio : http://thomasgredin.com/fr/portfolio

Discussions similaires

  1. Comment faire déconnecter les utilisateurs d'une base
    Par ENIT-Info dans le forum Access
    Réponses: 23
    Dernier message: 28/02/2017, 14h57
  2. Réponses: 1
    Dernier message: 12/09/2006, 14h44
  3. [VBA-W]Comment faire suivre les macros d'un modèle?
    Par gusrom86 dans le forum VBA Word
    Réponses: 7
    Dernier message: 23/02/2006, 10h26
  4. [Debutant] comment faire passer des donnée ???
    Par cyrill.gremaud dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 17/01/2006, 22h28
  5. comment sont stoquées les données
    Par Biosox dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 12/01/2006, 09h17

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