LimbStudio

Blog de LimbStudio sur le developpement de jeux video en 2d.

Translate this page!

Affichage des articles dont le libellé est LimbEditor. Afficher tous les articles
Affichage des articles dont le libellé est LimbEditor. Afficher tous les articles

lundi 5 janvier 2015

LimbEditor - Ajout des fonctions de sauvegarde/chargement

Bonjour tout le monde!

Le projet n'est pas en standby loin de là!

Ces 2 derniers jours, je me suis penché sur l'ajout de fonction permettant d'enregistrer et charger une carte à partir d'un fichier binaire (une première pour moi! ) .

Voici en détail comment le programme fonctionne:

Lors de la création d'une carte:

 
La fonction de création  crée une carte à partir du nom donné par l'utilisateur. Elle appel également la construction d'un RessourceHolder (qui contient toutes les textures nécessaires a la carte) arbitraire qui charge les textures par défaut. (cela pourra être modifié ensuite).
Lors de la sauvegarde, Le nom de la carte est réutiliser pour créer le fichier correspondant. Pour eviter d'écraser une carte deja existante, les cartes utilisateurs, seront enregistrées dans Cartes/Perso/ tandis que celle fournit de base seront dans Cartes/

Lors du chargement:


Lorsque l'on demande de charger une carte (dont le nom est demandé avant) , on crée un objet Carte vide.

On charge ensuite dedans les données dans le même ordre que l'on a sauvegardé.On fabrique ensuite les éléments à partir du tableau d’élément que l'on stocke dans un vecteur de pointeur.Le tableau d'element est en faite un tableau qui permet stocke les informations d’élément de la façon suivante:

vector<int> tableau_element[coteCarte²]; //voila à quoi ressemble le tableau

On parcourt le tableau dans une double boucle:

for(unsigned int i=0;i<coteCarte;i++)
{
   for(unsigned int j=0;j<coteCarte;j++)
   {
        tableau_element[j*coteCarte + i] //...
   }
}
La formule j*coteCarte+i est valable car la carte est carrée et non rectangulaire.Grâce à celle ci on parcourt le tableau sans problemes , en remplacant i et j par les coordonnées sur la carte (x;y) . on peut savoir quel type d’élément se trouve à tel endroit.
Si par exemple nous voulons savoir ce qui se trouve en coordonnées (5,2)  et que coteCarte vaut 10, on interroge:

Type_element elm=tableau_element[10 * 2 + 5]   //donc en case 25 / 100 du tableau

Grâce à cette méthode, on peut donc interroger puis créer les elements en conséquence et aux bon endroits.Une fois les éléments chargés, on crée un RessourceHolder a partir du  pack enregistré dans la carte.


Les sources sont bien sur disponible dans les liens ci-contre (a gauche) :p 

Prochaine mise à jour:


*Ajouts des fonctionnalités d'édition de cartes (en parties implementées mais pas encore utilisable) .
*Choix de la taille de la carte dans une certaine limite ( entre 5x5carrés jusqua 15*15).
*Résolution de certains bug connus.



 A bientôt!



samedi 3 janvier 2015

LimbEditor

LimbEditor


Bonjour à tous, après une bonne nuit de sommeil programmation, je viens vous mettre au fait des dernieres avancées.

Tout d'abord, je suis en ce moment sur LimbEditor, l'Editeur de carte vous permettre de créer vos propre carte pour LimbEscape.

Donc pas d'avancée pour LimbEscape aujourd'hui...Cependant, comme dit ci dessus, je bosse sur LimbEditor.

Donc nous allons parler de ce petit logiciel en développement.

Quelques features...


Voici sans plus attendre un premier schéma concernant le fonctionnement de l’éditeur:

Schema du fonctionnement de l'éditeur.


 Après études, j'ai réalisé la class Carte comme suit:

Une Base :

        Afin d'optimiser la vitesse du programme, j'ai décidé de "figer" le sol de la carte. Toutes les Tiles sont recopié sur une Texture en mémoire afin que le sol ne nécessite que d'un affichage au lieu d'un nombre beaucoup plus important.

Un Tableau d'elements:

     Les caisses, les murs mais aussi le points de depart et les objectifs. Voila ce que sont les elements. Ainsi , chaque element est un objet. Le tableau d'elements est un tableau de pointeur permettant de cibler les elements un à un.

Il faudra donc veiller à réinitialiser le tableau a chaque chargement de carte car la sauvegarde ne fonctionnera pas sur les pointeurs.Je devrai surement retravailler ce point car je vais rencontrer des probleme avec la sauvegarde.

Voila, les sources sont disponible dans les liens à gauche. L'éditeur n'est pas encore fonctionnelle.

A très vite!