Générer une map

BenjoBenjo Membre
mai 2015 modifié dans API UIKit #1
Bonjour à  tous,


J'ai créé sur iOS un petit jeu de plateforme avec une map, deux personnages dont le but est de tirer sur les ennemis. Mais je me pose des questions sur la génération de map. Ici, ma première idée très basique a été de créer une méthode avec un tableau prédéfini contenant des objets "Platerformes" qui ont une propriété "frame" de type CGRect. Et j'ai rentré toutes mes plateformes une par une avec toutes les positions et les tailles. Autant dire que dans un petit monde, ça marche bien, mais si le monde devient plus grand ça va vite devenir embêtant...


Du coup je me demande comment feriez vous pour construire une map ? Dans un fichier texte ou je ne sais pas mais une méthode simple qui me permettrai de générer facilement une map avec des positions que j'aurais définies moi même et qui serait facilement éditable.


Auriez vous une idée sur la question ? Merci d'avance :)

Réponses

  • LarmeLarme Membre

    Une génération automatique à  partir d'un fichier que tu n'as qu'à  rajouter à  ton bundle est une idée très sympathique.


    Le tout ensuite est d'avoir un format lisible par toi et facilement modifiable.


    En bref, si pour rajouter un objet à  un endroit dans ton fichier il te faut 30minutes, il faudrait peut-être trouver un autre système.


    Après, dépendant de ton type de map, ça peut-être intéressant d'avoir une sorte de graphique ASCII, avec par exemple des charactères spécifiques pour l'entrée des personnages, des ennemies, etc, et potentiellement au départ quelques textes "normaux" avec des indications supplémantaires (nombre d'ennemis max en même temps, coefficient multiplicateur de zoom, etc.)


  • DrakenDraken Membre
    mai 2015 modifié #3

    Tu peux effectivement utiliser un fichier texte pour .. grilled par Larme !


    Utilise une font non-proportionnelle pour que les caractères soient bien alignés.


     


    Exemple rudimentaire :


     


    + = limite de l'espace de jeu ou plate-forme


    V -> Ennemi volant


    T -> Ennemi terrestre


    B -> Bonus


     


    ++++++++++++++++++++++++++++


    +                                V                      +


    +                     V                                 +


    +            B               ++++                  +


    +       +++++                                       +


    +                      T                  T            +


    ++++++++++++++++++++++++++++


     


    Tu peux éditer le contenu du fichier texte avec Xcode ou TextEdit.


     


    Ce système n'est valable qu'avec un espace de jeu organisé en cases de taille identique (généralement 32x32 points). On ne peut pas l'utiliser pour placer des objets au pixel prés. 


     


    Sinon, il te reste la possibilité de créer un éditeur spécialisé. Ou encore d'utiliser SpriteKit, qui possède une sorte d'éditeur de map graphique, pour créer des "scènes de jeu". 


     


    EDIT : Maintenant que j'y pense tu peux aussi utiliser un storyboard classique pour créer des scènes de jeu avec des contrôles graphiques. Ensuite, tu parcours la liste des objets, pour connaà®tre leurs tailles et leurs positions, avant de sauver les données dans un fichier. C'est un peu de la bidouille, mais permet de définir la position des objets au pixel point prés.


  • BenjoBenjo Membre

    Merci pour vos réponse. J'avais pensé aux fichier textes mais j'avoue que je n'aurais jamais pensé que c'était une idée "fiable". Il me semble qu'il est possible de lire facilement un fichier texte sur iOS. Je vais me renseigner sur la question et je posterais une solution lorsque j'en aurai trouvé une.


  • lucluc Membre

    oui un fichier texte est un petit interpreteur (lecteur) pour mieux visualiser le fichier (ton decor), modifier...


  • Je fais remonter ce sujet car j'ai trouvé un petit tutoriel sympa : http://www.raywenderlich.com/62049/sprite-kit-tutorial-make-platform-game-like-super-mario-brothers-part-1


    J'ai regardé ils montrent comme importer une map avec Tiled.
Connectez-vous ou Inscrivez-vous pour répondre.