13 déc
2008
On pourrai se dire que j'ai bien dormi :) mais il n'en est rien, beaucoup de choses ont changés et le temps me manque de plus en plus mais j'ai retrouvé la petite lueur en moi qui me donne l'envi de créer des choses pour le fun! ^^
Et bien oui, tout le monde attrape la crève, je l'ai attrapée aussi mais à ma grande surprise elle est arrivée accompagnée d'une pulsion soudaine m'obligeant à reprogrammer des ptites choses sur Psp.
J'ai donc rallumé la petite portable de sony qui ne me sert jamais et je me suis mis au boulot.
Ce soir je vous propose donc une petite fonction bien crade ( dévellopée à l'arrache ) mais qui fonctionne très bien ( je penserai à nettoyer le code et à faire quelque chose de propre à l'avenir, c'est promis! ).
Nomée "oslCreateAutoMap" elle permet l'utilisation d'autotiles avec l'oslib de l'ami Brunni!
Pour les gens motivés qui souhaitent faire des jeux en vue de dessus, cette fonction peut vous permettre de gérer tres rapidement la partie graphique des niveaux, utile notament pour la génération de niveaux aléatoires avec de beaux graphismes par exemple, et pour les gens qui veulent faire des RPG elle s'avère presque indispensable pour accélerer le level design!
Telecharger les sources + l'eboot ici ! ( MAJ 13/12/08 )
Mais les autotiles c'est quoi??!
Voici un petit exemple pour vous expliquer simplement :
Tout d'abord pour comprendre le principe il nous faut un TileSet correct, comme celui-ci :

J'ai utilisé des tiles de 32*32 mais ça fonctionne avec des tiles de 16*16 ou 64*64 sans problème, le plus important c'est juste de bien garder la tiles noires à chaque fin de ligne. On prend ensuite un tableau qui représentera notre niveau :
Code:
unsigned short demo_map[16][16]=
{ {1,1,1,1,1,1,1,1,2,2,2,2,2,1,1,1},
{1,1,1,2,2,2,2,2,2,1,2,2,2,1,1,1},
{1,1,1,2,1,1,1,1,1,1,1,1,2,1,1,1},
{1,2,2,2,2,2,2,2,2,2,2,1,2,1,1,1},
{1,1,1,1,2,1,1,2,2,1,2,1,2,1,1,1},
{1,1,1,1,2,2,2,1,2,1,1,1,2,1,1,1},
{1,1,1,2,2,2,2,2,2,2,2,1,2,1,1,1},
{1,1,1,2,1,2,2,1,2,1,2,1,2,1,1,1},
{1,1,1,2,2,2,2,1,1,2,2,1,2,1,1,1},
{1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1},
{1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1},
{1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
On considère le nombre 1 comme étant de l'herbe, et le nombre 2 comme étant de l'eau!
On charge le TileSet avec l'oslib comme pour un background normal :
Code:
auto_tileset = oslLoadImageFile("demo_tileset.png", OSL_IN_RAM, OSL_PF_5551);
On applique ensuite ma fameuse fonction lors de la création du BackGround :
Code:
demo_layer = oslCreateAutoMap(
auto_tileset,
demo_map, //Map
32,32, //Tiles size
16,16, //Map size
OSL_MF_U16);
On affiche dans notre boucle principale :
Code:
oslDrawMap(demo_layer);
Et voila le résultat!

Voila voila! Cette fonction est loin d'être révolutionnaire mais j'espère que ceci permettra à certains d'entre vous de gagner du temps !
PS : Cette fonction peut-etre également utile pour la réalisation de jeux de stratégie, je prend comme exemple Starcraft et Warcraft par exemple qui utilise un procédé de tiles identique! Pour les fans de Starcraft pensaient au changement de terrain progressif lorsque l'on prend les zerg par exemple ^^ ( hummmmm... ) avec cette petite fonction rien de bien compliqué a rajouter dans le code ici présent pour faire que l'eau se propage par exemple maintenant que ce n'est plus qu'une question de "1" et de "2" dans un tableau :) !
A tres bientot !

aucune thématique

13/12/2008 à 23:42:56 Dernière modif. : 13/12/2008 à 23:51:08