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

VB.NET Discussion :

Jeu en VB.NET - Multijoueur [Débutant]


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2013
    Messages : 57
    Points : 44
    Points
    44
    Par défaut Jeu en VB.NET - Multijoueur
    Bonjour.
    Je suis actuellement en train de développer un jeu et je souhaite y inclure un mode multi-joueurs cependant, je n'ai aucune idée de ce que je dois faire pour y parvenir.

    J'ai cherché des tutoriels mais je n'en ai pas trouvé (si j'en ai trouvé mais y'avait trop de blablabla et c'était ******* à lire parce que j'ai tant à faire et que je n'ai pas le temp de m'attarder trop dessus donc évitez de me donner des liens vers ce genre de tutoriels s'il vous plait). Du coup je viens ici en espérant que vous pourrez m'aider.

    Comme je l'ai écrit précédemment je n'ai pas trop de temps alors évitez les réponses qui m'obligeront à aller apprendre un autre langage que vb.NET(j'en connais pas d'autre)
    De plus je ne veux pas non plus qu'on me donne un copier/coller d'un code fonctionnel sans m'expliquer comment il fonctionne car généralement après je sais pas trop comment l'incorporer dans mon jeu.

    Désolé d'être si exigent mais c'est parce que sur d'autres forums on ne comprenait pas ce que je voulais

    Je voudrais la solution la plus simple possible (mais si vous n'avez qu'une complexe je ferais avec)
    La masse d'infos a échanger entres les ordinateurs (entre 5 et l'infini de joueurs) est très extrêmement considérablement incroyablement [...] élevée
    Les ordis peuvent ne pas faire partie du même réseau (plusieurs Km)

    Merci d'avance aux âmes généreuse qui accepteront de partager leur savoir avec moi

    Bonne soirée (ou pas, ça dépend de quand vous lirez ce post)

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 206
    Points : 455
    Points
    455
    Par défaut
    Bonjour tu "souette" beaucoup...
    On est pas la pour te donner du code tout fait mais pour te donner des pistes de reflexion.
    De plus si tu comptes faire de la programmation sans prendre le temps de te former et de lire du "blablabla chiant" il faut peut être arrété directement...

    Enfin qu'est-ce que tu a pour l'heure pour tes communication entre PC ? TCP ? UPD ?
    A tu des erreurs ou veux tu qu'on fasse le truc à ta place ?

  3. #3
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2013
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    En fait je pars de 0

    Et non je ne veux pas qu'on fasse mon travail à ma place sinon c'est plus mon travail... Je veux juste qu'on me donne une aide concrète avec un exemple par exemple

    J'hésite entre TCP et UDP (je connais la différence mais je ne sais pas trop quoi choisir car je ne sais pas comment les mettre en place dans mon jeu et donc lequel est le plus adapté)

    -en fait il y aura un nombre imprévisible/irrégulier d'utilisateurs connectés
    -Je voudrais éviter que des lags chez les uns perturbent les autres (un + pour l'UDP)
    -J'ai un pc puissant mais ma connexion internet est très inprévisible
    -il y a beaucoup de données à échangerr

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Faire un jeu en VB.NET ce n'est pas forcément une bonne idée, puisque VB.NET ne supporte pas le code unsafe...

    Au niveau du multijoueurs, en général on ne fait pas communiquer directement les clients entre eux, on centralise tout ça via un serveur central qui gère les communications.

    Bref, si tu cherches des exemples tu pourras en trouver par exemple ici : Getting Started with XNA Game Studio Development.

    Ou encore ici : C# \ VB .NET Multi-user Communication Library (TCP).
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    généralités
    le principe c'est d'avoir un serveur qui écoute sur un port (entre 0 et 65000) et un client qui s'y connecte
    un fois la connexion établie la liaison est bidirectionnelle, on peut alors échanger joyeusement des octets, sachant que tout peut etre transformé en octets

    serveur or not serveur (au sens réseau)
    si une appli doit manager toutes les autres il faut un serveur unique (éventuellement un serveur de login qui reroute vers un serveur de traitement si réellement tu as besoin de beaucoup de connexions)
    si juste un groupe doit être managé, un client peut servir de serveur, c'est ce qu'on trouvait à l'époque dans "créer une partie réseau", les autres se connectant à la personne
    de nos jours même quand on créé une partie bien souvent c'est un serveur qui joue le maitre, il a en général plus de bande passante qu'une personne lambda qui devrait faire serveur
    un client qui sert de serveur ca peut poser des problèmes de configuration de firewall, autant qu'on peut souvent sortir, il est parfois difficile de rentrer

    tcp/udp
    quand on a besoin d'être sûr on utilise le tcp et quand on a besoin de vitesse on utilise l'udp
    et quand on a besoin des 2 on utilise les 2
    il peut y avoir une connexion tcp servant à mener les bases, l'udp servant pour les choses rafraichies souvent, et on peut aussi mettre du controle manuel dans l'udp, ou utiliser le tcp pour controler l'udp

    en .net il y a les classes de bases
    system.net.sockets.socket de mémoire, c'est pas super pratique
    à peine au dessus dans l'héritage il y a tcplistener et tcpclient (serveur et client) qui restent assez bas niveau, il faut manager les octets et donc se faire du controle de trame, une norme dialogue ...
    et le niveau élevé c'est WCF, ca s'appuie sur les sockets aussi mais ca permet de "rendre accessible" des membres de classes depuis un autre poste
    en gros un client qui fait moninstancedeserveur.Tellefunction appelle la fonction en question sur le serveur qui exécute le code contenu dedans
    si la fonction retourne un list(of joueur) le list(of joueur) est utilisable directement de l'autre côté au retour du code
    je ne pense pas que wcf permette autant de performances que le tcp direct, ca a juste l'avantage d'être pratique à coder (une fois qu'on a réussi à comprendre comment ca marche par contre)


    ceci dit, avec plus de détails on pourra t'en dire plus sur les orientations à prendre et les classes à potasser (sachant qu'il te faudra surement du multithreading)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2013
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    [en réponse a DotNetMatt]
    J'ai tester l'application du second exemple mais il semble que je sois contraint de donner l'IP réseau de mon pc (192.168.1.xx) et ca ne fonctionne pas(ou j'ai pas compris quelque chose)a grande distance (différents réseaux)
    Sinon c'est déjà un bon début, merci
    Mais bon si ca marche pas avec des réseaux différents je n'en tirerais pas grand chose

    [en réponse a Pol63]
    Merci pour ces explication mais peux-tu me donner un exemple ou les codes de base?

  7. #7
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par Mortlhomme Voir le message
    [en réponse a Pol63]
    Merci pour ces explication mais peux-tu me donner un exemple ou les codes de base?
    Bonsoir Mortlhomme,

    .......me donner un exemple ou les codes de base ? Tu manques pas d'air tout de même ??

    Je pense que tu es en train de griller des étapes ...... !! Pol63 t'as donnés des axes de recherche...... alors c'est à toi maintenant de potasser et d'envisager de faire un petit projet en te préparant un LAN chez toi ...... perso avec le si peu de réponses du topic j'aurais déjà fais un choix parmi ce qui a été proposé !
    Et puis si à terme ça ne te convient pas du fait que tu trouves le résultat non probant alors tu choisis une autre alternative.

    Quand on ne sait pas par ou commencer :
    - On se renseigne
    - On fait son choix
    - On s'immerge en recherchant des docs
    - On tente
    .......
    Et on arrête de réclamer des codes sources quand on ne maitrise même pas le domaine du futur projet !!!!

    A+

  8. #8
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2013
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    Je marque résolu car j'ai trouvé comment faire et pas parce que j'y suis parvenu car j'ai d'autres problèmes mais ca vous n'y pouvez rien.
    Merci de me le confirmer car je suis pas sur : En utilisant ce q'il y a dans l'exemple de DotNetMatt et en redirigent les ports de ma box.

  9. #9
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Mortlhomme Voir le message
    J'ai tester l'application du second exemple mais il semble que je sois contraint de donner l'IP réseau de mon pc (192.168.1.xx) et ca ne fonctionne pas(ou j'ai pas compris quelque chose)a grande distance (différents réseaux)
    Quand tu te cantonnes à un réseau local, il suffit d'utiliser les IP locales (ex. 192.168.x.x). Par contre, quand tu travailles sur différents réseaux, ce n'est pas la même chose, puisqu'il y a forcément du routage avec des IP différentes et des ports différents.

    De manière schématique, voici le chemin qu'emprunterait une communication partant de ton PC pour aller vers l'autre PC client, en passant par ton serveur hébergé sur Internet :
    1. TON PC (IP locale : 192.168.1.5 sur le port A)
    2. TA BOX (ROUTEUR) (IP publique : 58.47.251.68 sur le port B)
    3. INTERNET (nébuleuse, on ne sait pas trop ce qu'il s'y passe)
    4. LE DATACENTER DE TON HEBERGEUR (ROUTEUR) (IP publique : 20.85.1.199 sur le port C)
    5. TON SERVEUR (IP locale : 10.0.68.232 sur le port D)
    6. LE DATACENTER DE TON HEBERGEUR (ROUTEUR) (IP publique : 20.85.1.199 sur le port C)
    7. INTERNET (nébuleuse, on ne sait pas trop ce qu'il s'y passe)
    8. UNE AUTRE BOX (ROUTEUR) (IP publique : 68.58.251.47 sur le port E)
    9. UN AUTRE PC (IP locale : 192.168.1.5 sur le port F)


    Toujours dans le cadre de cet exemple de message envoyé, il faut configurer ton routeur avec une règle NAT pour que le message puisse passer vers Internet.
    Côté serveur, il faut une nouvelle règle NAT pour que le message puisse atteindre ton serveur.
    Ensuite il faut configurer le routeur devant l'autre PC avec une règle NAT pour que le message puisse être reçu.

    La plupart du temps ces règles NAT consistent juste à dire "les messages TCP/UDP arrivant sur l'adresse IP X port A doivent aller vers l'adresse IP Y port B".

    Considère qu'un routeur est un mur, un firewall, et que pour pouvoir passer, tu as besoin d'une règle NAT.

    Sinon, Pol63 t'a donné de bonnes indications, et wallace1 a totalement raison, si tu n'es pas prêt à te documenter tu vas rapidement te trouver bloqué. Etant moi-même totalement autodidacte en informatique, je peux t'assurer que la case lecture est obligatoire dès lors que tu ne connais pas le domaine Avec de la lecture + de la pratique (surtout de la pratique), tu pourras progresser, mais comme pour tout, si tu ne t'investis pas un minimum, tu n'iras pas très loin.

    Pour finir, je voudrais souligner le fait que tu obtiendras difficilement des exemples de code, car il n'y a que toi qui connaisse ta config réseau. Donc même si quelqu'un prenait du temps pour réaliser un exemple, ça pourrait marcher chez lui mais pas chez toi, puisque les IP seront différentes... Je pense déjà que tu devrais essayer de faire marcher l'exemple fourni avec la Multi-user Communication Library (TCP). Si ça marche, c'est que tu auras compris le principe des règles NAT. Ensuite tu pourras regarder le code, pour voir comment l'auteur de l'article a utilisé cette librairie pour communiquer entre les clients et le serveur.

    [EDIT] : Ah ben on a posté en même temps ! Tu as la réponse à ta dernière question ci-dessus
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  10. #10
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2013
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    Je craint ne pas pouvoir régler mon problème seul mais peut-être que vous saurez m'expliquer cela
    Autrefois j'avais un serveur Minecraft et j'avais utiliser cette technique de redirection de port avec succès
    Maintenant c'est de ca que j'ai besoin, j'ai fait pareil, et ca marche pas(même avec un serveur Minecraft)

    Du coup je suis bien embêté pour faire mon jeu car je sais pas si cela vient de ma box ou si c'est autre chose, peut-être dans des options...Je cherche mais je voit pas(en plus dans l'interface tout est en abrégé et j'ai peur de faire une bétise en appuyant sur tout les boutons...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. réalisation d'un jeu avec vb.net
    Par urculate dans le forum VB.NET
    Réponses: 4
    Dernier message: 24/02/2008, 20h22
  2. [Jeu MultiJoueurs] Quel choix de base de données ?
    Par Torpedox dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 20/03/2006, 10h23

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