Par où commencer pour permettre à  son application de jouer en ligne ?

apocaalypsoapocaalypso Membre
04:49 modifié dans API UIKit #1
Bonjour,

Je souhaiterais permettre à  mon jeu d'avoir une fonctionnalité pour jouer en ligne, par exemple directement avec un autre joueur.
Mais je ne sais absolument pas par où commencer nicommen faire pour permettre cette fonctionnalité.

Quelqu'un pourrait-il m'orienter sur une idée ?

Merci beaucoup !

Guillaume.

Réponses

  • Eric P.Eric P. Membre
    04:49 modifié #2
    Bonjour,

    Je crois que l'exemple WiTap présente cela.
    Sinon le SDK 3.0 doit simplifier cela, me semble-t'il.

    Eric
  • apocaalypsoapocaalypso Membre
    04:49 modifié #3
    Et ben, il m'a l'air particulièrement compliqué !
  • AliGatorAliGator Membre, Modérateur
    04:49 modifié #4
    Il y a trois étapes à  mettre en place :
    1) Le choix des pairs
    2) La voie de communication entre ces pairs.
    3) Un protocole perso adéquat adapté à  ton jeu

    Pour le choix des pairs, le plus simple est d'utiliser Bonjour pour permettre de publier automatiquement un service (correspondant à  ton jeu, genre service du type "_mygame._tcp.") et aussi et surtout de détecter les autres services (et donc les autres iPhones ou ordis qui font tourner ton jeu) du même type.
    Ceci est fait donc avec les classes NSNetService et NSNetServiceBrowser, pour découvrir des services (donc des devices qui font tourner ton jeu) et se mettre en relation avec eux

    Une fois que tu as ça (donc que NSNetService t'a retourné une IP et un port tout seul en fait), là  il faut que tu ouvres un canal de communication (typiquement un socket) pour envoyer des données. ça ça se fait avec donc un socket et éventuellement en utilisant un NSFileHandle et/ou des NSStreams pour envoyer/recevoir des données (ou directement avec les fonctions POSIX socket, bind, select, etc...)

    Après à  partir de là  tu peux échanger les données que tu veux entre tes deux pairs (entre tes 2 iPhones typiquement)... donc à  toi de définir en interne dans ton appli ce que tu vas envoyer (un protocole perso, quoi). Par exemple envoyer juste l'octet correspondant à  un numéro de case quand ton joueur a joué cette case, s'il s'agit de cliquer sur des cases... comme ça quand l'autre iPhone reçoit cette info il sait que le premier joueur a cliqué sur cette case... enfin à  adapter à  tes besoins.


    Et comme le dit Eric, l'exemple WiTap montre tout ça... Le souci pour toi c'est qu'il montre la totale, les 3 étapes (discovery, mise en relation, et envoi de données), en plus de la partie "jeu" elle-même du jeu WiTap qu'ils ont utilisé en exemple... donc à  lire le projet directement comme ça brut de forme avec tout déjà  fait et savoir quel fichier fait quoi, c'est pas forcément trivial, mais bon...

    ----

    Après il faut savoir que pour mettre 2 iPhones en relation :

    1) Avec l'iPhone OS 2, ce n'est faisable qu'en wifi, et c'est à  toi de prévoir le NSNetServiceBrowser et l'interface graphique sur l'iPhone pour afficher les devices trouvées par ce NSNetServiceBrowser.

    2) Avec l'iPhone OS 3.0, il sera possible de mettre en relation deux pairs (2 iPhones) par Bluetooth, et ce via le GameKit... et pour ça y'a un GKPeerPickerController, qui est un peu comme le ImagePickerController, à  savoir tu le configures un minimum, tu lui demandes ensuite de s'afficher, et là  c'est Apple qui gère toute l'interface, l'affichage des pairs trouvés, etc... et qui ne rend la main à  ton code à  toi qu'une fois que l'utilisateur a choisi un des pairs (un des iPhones détectés)... ou a annulé.
    Autrement dit d'un côté c'est pratique tu n'as pas à  gérer l'interface permettant de choisir un pair, d'un autre côté si tu veux personnaliser l'interface, t'es bloqué.
  • zoczoc Membre
    mai 2009 modifié #5
    dans 1241640527:

    Et ben, il m'a l'air particulièrement compliqué !


    Tout simplement parce que ce que tu veux faire est compliqué (Enfin surtout pour quelqu'un qui n'a aucune connaissance de fonctionnement des communications réseau).

    Et encore, avec les classes fournies par Apple (NSStream, NSNetService et NSNetServiceBrowser) le travail est fortement simplifié...

  • schlumschlum Membre
    04:49 modifié #6
    Et ça recommence... Pourquoi les débutants veulent toujours faire des trucs complexes  :)

    Où est passé le bon vieux "Hello World" d'antan ?  ::)
  • apocaalypsoapocaalypso Membre
    04:49 modifié #7
    dans 1241740044:

    Et ça recommence... Pourquoi les débutants veulent toujours faire des trucs complexes  :)

    Où est passé le bon vieux "Hello World" d'antan ?  ::)

    :) Je me le demande aussi, mais maintenant on est obligé de faire des choses complexes (enfin tout du moins, plus qu'un Hello World).

  • AliGatorAliGator Membre, Modérateur
    04:49 modifié #8
    dans 1241744284:

    dans 1241740044:

    Et ça recommence... Pourquoi les débutants veulent toujours faire des trucs complexes  :)

    Où est passé le bon vieux "Hello World" d'antan ?  ::)

    :) Je me le demande aussi, mais maintenant on est obligé de faire des choses complexes (enfin tout du moins, plus qu'un Hello World).
    Bah c'est aussi pour ça qu'on dit que développer une appli n'est alors pas à  la portée du premier venu... Mais bon l'iPhone provoque l'engouement de beaucoup qui veulent s'y essayer sans spécialement connaà®tre grand chose parfois, et du coup c'est pas trop compatible avec faire des applis complexes...
  • Philippe49Philippe49 Membre
    04:49 modifié #9
    dans 1241629983:

    Je souhaiterais permettre à  mon jeu d'avoir une fonctionnalité pour jouer en ligne, par exemple directement avec un autre joueur.
    Mais je ne sais absolument pas par où commencer nicommen faire pour permettre cette fonctionnalité.

    Game Kit ...
  • zoczoc Membre
    04:49 modifié #10
    dans 1241777975:

    dans 1241744284:

    dans 1241740044:

    Et ça recommence... Pourquoi les débutants veulent toujours faire des trucs complexes  :)

    Où est passé le bon vieux "Hello World" d'antan ?  ::)

    :) Je me le demande aussi, mais maintenant on est obligé de faire des choses complexes (enfin tout du moins, plus qu'un Hello World).
    Bah c'est aussi pour ça qu'on dit que développer une appli n'est alors pas à  la portée du premier venu... Mais bon l'iPhone provoque l'engouement de beaucoup


    Surtout que l'iPhone n'est pas vraiment une plateforme de choix pour les débutants: Le peu de mémoire disponible sur l'appareil oblige à  bien réfléchir aux algorithmes que l'on emploie et surtout au respect sans faille des consignes de développement concernant le cycle de vie des objets...

    Le nombre d'applications disponibles sur le store qui plantent régulièrement en est la preuve. Je trouve d'ailleurs bizarre qu'Apple n'ait pas mis en place une procédure de test des leaks pendant la phase d'approbation d'une application.

Connectez-vous ou Inscrivez-vous pour répondre.