Quelle logique pour ce type de jeu ?

vico92vico92 Membre
03:31 modifié dans Vos applications #1
Bonjour tt le monde :)

J'ai envie de retenter de faire un jeu pour l'iPhone, j'en ai une idée très précise en tête, seulement je me pose des questions sur la logique de programmation à  utiliser  :o

Voilà , il y aura un personnage qui progressera de manière verticale pour aller le plus haut possible à  l'aide de plateformes fixes ou amovibles (comme dans Doodle Jump, i.e., mais avec un mode de déplacement spécifique).
Une vue d'ensemble du parcours ressemblerait donc à  un très long conduit de cheminée. Ma question concerne donc la création dynamique de décors et d'objets:

(car je suppose que ce parcours n'est pas créé dans son ensemble dès le début de la partie, mais qu'il se génère au fur et à  mesure que le personnage évolue, non?)

Dans ce cas, comment cela fonctionne t'il ? Quel est le déclencheur qui fabrique l'objet hors-écran, et comment l'objet créé défile correctement dans la vue, etc ?

J'espère être clair dans mes propos...Merci d'avance :))) !!
Vico

Réponses

  • 03:31 modifié #2
    C'est pas moi qui pourrait t'aider là  dessus. Mais peut-être qu'un fonctionnement comme les Page Control ferait l'affaire.. Tu a toujours 2x la taille de l'écran chargé quoi..
    Par exemple, tu commences le jeu : 2x la hauteur de l'écran est chargé. Une fois que tu as fait une hauteur, tu charges la 3eme, etc.. etc..
  • vico92vico92 Membre
    03:31 modifié #3
    ben je sais pas, ça me semble assez évident aussi au premier abord, mais je me dit que ça peut poser des problemes, par exemple si j'ai besoin ponctuellement que le perso monte à  toute vitesse (grâce à  un reacteur dans le dos, comme dans doodle jump), je me demande si cette méthode pourra charger les objets à  la volée assez vite...

    En fait j'ai une lacune dans ce type de raisonnements du fait de mon in-experience dans le jeu...
    Personne sur ce forum n'aurait déjà  pondu une appli qui fait défiler du décors et des objets à  l'infini"?
  • 03:31 modifié #4
    Ou réutiliser les décors en changeant simplement leur position dans la vue?  :P
    Bon allez j'arrête là  et je laisse les pro du genre apporter leur savoir faire.
  • DrakenDraken Membre
    03:31 modifié #5
    Il y a plusieurs solutions à  ce problème. Mais ce n'est pas pratique a expliquer sans un crayon et un papier. Si tu veux, on peut retourner boire un coup un de ces soirs, et je t'expliquerais de vive voix.


     
  • yoannyoann Membre
    03:31 modifié #6
    dans 1267405338:

    Il y a plusieurs solutions à  ce problème. Mais ce n'est pas pratique a expliquer sans un crayon et un papier. Si tu veux, on peut retourner boire un coup un de ces soirs, et je t'expliquerais de vive voix.


    Par hasard il se situe où ce coup à  boire ? Ce n'est pas toi qui est de Marseille aussi ? :-°
  • DrakenDraken Membre
    03:31 modifié #7
    Non, j'ai bossé à  Marseille un certain temps, mais je suis retourné à  Paris depuis. L'opération Glou glou se fera donc en territoire civilisé. * se penche pour éviter les jets de pommes *

    Effectivement, on peut organiser un  coup à  boire entre dev iphone sur la région parisienne, pour parler de jeux iphones et autres sujets.

  • vico92vico92 Membre
    03:31 modifié #8
    Au dernier "Meeting des développeurs d'Ile de France" on était... 2, mais je suis prêt à  remettre ça :):p

    Bon, en attendant met moi juste sur la bonne voie, Draken  :'(
    En gros, je dois créer des instances d'objets juste avant de les faire rentrer dans l'écran, puis les détruire quand ils sont sortis ?
    Après, comment, je sais pas trop mais c ça l'idée ?
  • yoannyoann Membre
    03:31 modifié #9
    dans 1267476357:

    Au dernier "Meeting des développeurs d'Ile de France" on était... 2, mais je suis prêt à  remettre ça :):p


    Pensez au CocoaHeads si vous voulez voir d'autre dev ^^
  • DrakenDraken Membre
    mars 2010 modifié #10
    Donc, tu veux que ton personnage puisse sauter de plate-forme en plate-forme, de plus en plus haut, jusqu'à  se casser la figure ? Et que les plates-formes soient générées aléatoirement au fur et à  mesure de la progression ?

    Considère que le personnage se déplace dans un espace virtuel de grande taille, où chaque objet possède une position horizontale et une altitude. Et que l'écran de l'iPhone est une fenêtre de visualisation sur une petite partie de l'espace.

    Tu auras besoin d'une fonction pour dessiner l'écran, à  partir de sa position, genre :

    - (void) drawEcranDeJeuAvecAltitude:(int)hauteur;

    Et d'une liste contenant la position des objets de jeu.

    A chaque redessin, la fonction drawEcran devra parcourir la liste des objets pour n'afficher que ceux présents dans la fenêtre de visualisation. Si le personnage se trouve à  l'altitude 2000, le moteur d'affichage ne doit se préoccuper que des objets à  proximité.

    Si ton jeu est en orientation paysage, l'écran fait 480x320 pixels, soit 320 pixels de haut.

    Au fur et à  mesure que le joueur monte en altitude, tu génère des plates-formes au dessus de lui, a disons .. 300 pixels plus haut. Elles ne seront pas affichées tout de suite sur l'écran, parce qu'en dehors de la zone visible.

    Dans le même temps tu effaces de la liste les plates-formes situées en dessous, à  une altitude de 200 ou 300 pixels plus bas que la hauteur atteinte par le personnage. Si le personne ne fait que monter sans cesse, sans jamais redescendre les plates-formes inférieures n'ont plus d'utilité.

    La position d'affichage d'un objet sur l'écran dépend de son altitude et de l'altitude de la fenêtre de visualisation.

    yObjetSurEcran = altitudeObjet - altitudeFenetre;

    En considérant que l'altitude de la fenêtre est mesurée à  partir du bas de son extrémité basse. Fenêtre au raz du sol = altitude de 0 pixels.

    Pour que le système fonctionne, il faut recalculer la hauteur de la fenêtre à  chaque déplacement du personnage, de manière à  ce qu'il reste a peu prés au milieu de l'écran.

    Voilà , c'est juste un début de piste pour toi, pour te donner des idées.

  • vico92vico92 Membre
    03:31 modifié #11
    hello Draken :)

    Merci pour ta réponse, je suis en train d'y réfléchir donc mon post est un peu prématuré, mais déjà  tu m'as confirmé que les plateformes sont positionnées dans un repère global, et non par rapport à  la zone affichée. (car j'imaginais aussi un système dans lequel je génererais des plateformes à  -20px en y et les détruisait à  + 500px en y, par ex. pour une vue orientée en portrait).

    C'est ta méthode pour redessiner que je comprend moins bien, serait-ce une logique OpenGl ou autre ? Car moi jusqu'à  présent je crée une vue (plateforme) avec addSubview, et elle est rafraà®chie tant qu'elle n'est pas détruite par un removeFromSuperview. Sa position dépendrait en effet de l'altitude de la zone affichée. Si l'altitude augmente de 20px, la position y de la plateforme descend de 20.
  • DrakenDraken Membre
    03:31 modifié #12
    WARNING WARNIG * invoque Muqaddar *
    Je viens de répondre à  Vico, et mon post à  disparu, ou plutôt n'a pas été enregistré !
    Je remarque que j'étais le dernier à  poster. Il est possible que le démon tueur de post refuse qu'une personne poste deux fois à  la suite !

  • muqaddarmuqaddar Administrateur
    03:31 modifié #13
    Oui peut-être y-a-t-il un vieux réglage de ce genre qui traine... je vais faire des tests.
Connectez-vous ou Inscrivez-vous pour répondre.