Ey-Lord
26/09/2005, 14h12
Bonjour à tous !
Je suis entrain de commencer a coder une classes assez importante dans mon projet de rpg 2D ( tile based ), la classe
"Map" :)
Mais heu ... comment dire ... hum je remue le prbolème dns tout les sens et pas mal d'idées me viennent, et avant de me lancer dans n'importe quoi j'aimerais avoir votre avis .
Concernant les détailles "technique", la résuolution de l'ecran sera 1024*768 ; les tiles feront du 32*32 ( ce qui fait 32*24 tiles affiché simultanéments)
Les map auront un nombres illimité de tiles en largeur/hauteur , mais seront surement TRES grande .
32*24*x ; x étant le nombre de layers ....
Commencons par le commencement ;)
Je compte mettre en donnée menbre de ma classe map , un tableau dynamique ( vector ) d'entier , un atrribut hauteur ( nombre de tile en hauteur ), idem pour la largeur .
De cette facons on accèdera aux tiles par x*hauteur +larguer ( une expression de ce style ) .
Je pense aussi y inclure une instance de ma classe "chipset" qui contiendra principalement toutes information sur le fichier ou seront sotcké les tiles utilisé par la map en question .
Notament, la texture de tout les tiles, et pour chaque tiles des informations le concernant .
((( précisions : les tiles seront uniquement consitué de la couche de base du sol ( terre, eau , sable ect ... et surement les murs des batiments et autre chose dans le genre . ) . Tout les objets seront considéré comme des entitées a part entiéres ; du tapi de bain en passant par la casserole ou le coffre du donjon 3 )))
Tout cela signifie que pour créer une nouelle map il faudra :
- En premier lieu cré un fichier décrivant un chipset ( ou en utiliser un déja créer ), en le remplissant avec toutes les information sde chaque tiles à la main . ( assez long, mais c'est réutilisable pour chaque map alors ... )
- Créer la map ( je fait un editeur pour ), en prenant juste soin de spécifier le numéro des tiles dans le vecteur de la classe Map ( ex: 1-> correspond au premier tile tu chipset rataché a la map , 2 au deuxième ect ... )
Enfin pour afficher la map , il faudra faire un truc du genre ( sans tenir compte du placement de la caméra pour le moment )
- afficher chaque tuile devant l'etre en cadrant ( dans la texture du chipset rataché a la map ) , la texure 32*32 tu tile en question, grace a son ID dans le veceur de la classe Map
( pas trop confus ? hummm )
Enfin il reste une chose a gérer .
Je me base sur un système d'Event ( un peu comme rpgmaker ), maios au sens TRES large.
Tout les pnj, monstre ect .. seront des Event ( ou dérivée de la classe event ) .
Tout les objets ( tapis, boule de cristal , porte ect ....) seront des Event.
Toutes les choses inclassable seront des Event :p ( je m'explique , par exemple un event peut être du style " Si condition Alors Effet" , au d'autre choses de ce style ... ; un event peut considérer en un simple changement de texture ou je ne sais quoi .
Et la , j'ai du mal a voir le rapport map/event .
Je pense dans mon editeur , permettre d'ajouter des event sur n'importe quel "tile", dans ce cas, les event seront rataché au tile ( ex: l'objet contiendra l'Identifiant ( int ) du tile en question ), soit de les ajouté sans tile de référence ( car ce n'est pas toujours utiles ) et la je m'et par exemple L'Identifaint du tile a -1 .
( je vient de me relire et en fait bah .... c'est un détail ce dernier paragraphe lol ) .
Le problème est que, de ce fait, je vais charger au lancement de ma map, TOUT les events qui s'y ratache ...., ca risque de faire lourd ( sachant que j'apelle une methode draw() et update() sur chaque event, a chaque frame ....
Ca risque de faire lourd en mémoire ? et en temps d'éxécution , non?
Enfin voila, je suis ouvert a toute remarque, critique, conseils ect sur la chose ;)
Mon but étant simple, un système flexible, le moins gourmand en émmoire, reccource cpu et si possible simple a mettre en place ^^
Merci d'avance .
Je suis entrain de commencer a coder une classes assez importante dans mon projet de rpg 2D ( tile based ), la classe
"Map" :)
Mais heu ... comment dire ... hum je remue le prbolème dns tout les sens et pas mal d'idées me viennent, et avant de me lancer dans n'importe quoi j'aimerais avoir votre avis .
Concernant les détailles "technique", la résuolution de l'ecran sera 1024*768 ; les tiles feront du 32*32 ( ce qui fait 32*24 tiles affiché simultanéments)
Les map auront un nombres illimité de tiles en largeur/hauteur , mais seront surement TRES grande .
32*24*x ; x étant le nombre de layers ....
Commencons par le commencement ;)
Je compte mettre en donnée menbre de ma classe map , un tableau dynamique ( vector ) d'entier , un atrribut hauteur ( nombre de tile en hauteur ), idem pour la largeur .
De cette facons on accèdera aux tiles par x*hauteur +larguer ( une expression de ce style ) .
Je pense aussi y inclure une instance de ma classe "chipset" qui contiendra principalement toutes information sur le fichier ou seront sotcké les tiles utilisé par la map en question .
Notament, la texture de tout les tiles, et pour chaque tiles des informations le concernant .
((( précisions : les tiles seront uniquement consitué de la couche de base du sol ( terre, eau , sable ect ... et surement les murs des batiments et autre chose dans le genre . ) . Tout les objets seront considéré comme des entitées a part entiéres ; du tapi de bain en passant par la casserole ou le coffre du donjon 3 )))
Tout cela signifie que pour créer une nouelle map il faudra :
- En premier lieu cré un fichier décrivant un chipset ( ou en utiliser un déja créer ), en le remplissant avec toutes les information sde chaque tiles à la main . ( assez long, mais c'est réutilisable pour chaque map alors ... )
- Créer la map ( je fait un editeur pour ), en prenant juste soin de spécifier le numéro des tiles dans le vecteur de la classe Map ( ex: 1-> correspond au premier tile tu chipset rataché a la map , 2 au deuxième ect ... )
Enfin pour afficher la map , il faudra faire un truc du genre ( sans tenir compte du placement de la caméra pour le moment )
- afficher chaque tuile devant l'etre en cadrant ( dans la texture du chipset rataché a la map ) , la texure 32*32 tu tile en question, grace a son ID dans le veceur de la classe Map
( pas trop confus ? hummm )
Enfin il reste une chose a gérer .
Je me base sur un système d'Event ( un peu comme rpgmaker ), maios au sens TRES large.
Tout les pnj, monstre ect .. seront des Event ( ou dérivée de la classe event ) .
Tout les objets ( tapis, boule de cristal , porte ect ....) seront des Event.
Toutes les choses inclassable seront des Event :p ( je m'explique , par exemple un event peut être du style " Si condition Alors Effet" , au d'autre choses de ce style ... ; un event peut considérer en un simple changement de texture ou je ne sais quoi .
Et la , j'ai du mal a voir le rapport map/event .
Je pense dans mon editeur , permettre d'ajouter des event sur n'importe quel "tile", dans ce cas, les event seront rataché au tile ( ex: l'objet contiendra l'Identifiant ( int ) du tile en question ), soit de les ajouté sans tile de référence ( car ce n'est pas toujours utiles ) et la je m'et par exemple L'Identifaint du tile a -1 .
( je vient de me relire et en fait bah .... c'est un détail ce dernier paragraphe lol ) .
Le problème est que, de ce fait, je vais charger au lancement de ma map, TOUT les events qui s'y ratache ...., ca risque de faire lourd ( sachant que j'apelle une methode draw() et update() sur chaque event, a chaque frame ....
Ca risque de faire lourd en mémoire ? et en temps d'éxécution , non?
Enfin voila, je suis ouvert a toute remarque, critique, conseils ect sur la chose ;)
Mon but étant simple, un système flexible, le moins gourmand en émmoire, reccource cpu et si possible simple a mettre en place ^^
Merci d'avance .