Développement et info sur l'avancée des projets par les développeurs

Alpha-Arts » Blog » Gestion du skin des héros

Holyspirit
Gestion du skin des héros
Suite aux nombreuses questions que vous m'avez posées à propos de ma gestion des skins des héros, j'ai décidé d'en faire un article.

Tout d'abord, il faut savoir que nous avons décidé de mettre 4 parties changeables aux héros : le corps, la tête, la main gauche et la main droite.

Nous faisons les rendus de tout le corps pour l'amure, mais nous ne rendons que l'élément concerné pour les trois autres (tête et casque pour l'un, main(s) et arme/bouclier pour les autres).

Skin en fonction de l'objet

Chaque objet contient les noms des skins qui lui sont attribués (ou pas, si c'est un objet qui ne modifie par l'apparence, comme un anneau).

Il faut savoir que suivant l'équipement du joueur, l'animation, et donc le skin, peut changer. Si le héros se bat avec une arme à deux mains, ce n'est pas le même skin d'armure que s'il se bat avec une arme dans chaque mains.
Nous sommes donc obligés d'attribuer plusieurs skins à chaque objet.

Voici un exemple d'armure :
* e0 mArmors/Chain_mail/OneHand.rs.hs e0 mArmors/Chain_mail/TwoWeapons.rs.hs e0 mArmors/Chain_mail/TwoHands.rs.hs $


Il faut donner les skins dans l'ordre : combat avec une arme à une main, combat avec une arme dans chaque main et combat avec une arme à deux mains.

L'animation de toutes les armes à une mains et de toutes les armes à deux mains sont les même. Donc nous sommes parti du principe que l'animation d'une hache à deux mains est la même qu'une épée à deux mains.


Ensuite, le e[X] représente le numéro de l'emplacement du skin :
  • 0 = corps
  • 1 = tête
  • 2 = main droite (utilisé aussi pour les deux mains en même temps)
  • 3 = main gauche


Voici un exemple de casque :
* e1 mHelmets/Iron_cap_1h.rs.hs e1 mHelmets/Iron_cap_1h.rs.hs e1 mHelmets/Iron_cap_2h.rs.hs $


Un bouclier :
* e3 mShields/Great_shield.rs.hs $

Dans le cas où nous avons un bouclier, le joueur ne peut pas se battre avec une arme dans chaque main ou une arme à deux mains.


Une épée à une main :
* e2 mWeapons_OneHand/Long_sword_r.rs.hs e3 mWeapons_OneHand/Long_sword_l.rs.hs $

Remarquez que le numéro de l'emplacement change suivant si le joueur se bat avec une arme dans chaque main ou non.


Une épée à deux mains :
* e2 mWeapons_TwoHands/Two_hands_sword.rs.hs $

Vous dites qu'il devrait se trouver en troisième position ? Et bien non, si le jeu ne trouve qu'un cas, il le force sur celui-là.


Ordre d'affichage

Bien, maintenant que nous savons comment ça marche du côté des objets, attaquons-nous à la structure de ces fichiers *.rs.hs qui contiennent le skin de l'objet.

Chaque fichier *.rs.hs est en fait un fichier *.dat (je vous conseille ce document pour gérer les *.dat : http://www.sfml-dev.org/wiki/fr/tutoriels/formatdat )

Ils contiennent un fichier info.txt, contenant toutes les infos sur les sprites (position dans l'image, centre, taille et j'en passe) ainsi que les images associées au skin.

Ces fichiers *.rs.hs sont aussi utilisés pour les autres entités (monstres, pnj, ...).

Ils sont structurés comme ceci :
*Crusader_LongSword_R_Wait0.png
*Crusader_LongSword_R_Walk0.png
*Crusader_LongSword_R_Attack0.png
$
//Ici, ce sont normalement les sons, mais je ne les mets que sur l'armure
$
* x0 y0 w45 h56 ex2 ey83 i0 a1 n0.5 g2 $
* x45 y0 w46 h56 ex1 ey85 i0 a2 n0.16 g2 $
* x91 y0 w45 h58 ex0 ey89 i0 a3 n0.16 g2 $
* x136 y0 w46 h57 ex2 ey89 i0 a4 n0.16 g2 $
* x182 y0 w46 h54 ex3 ey85 i0 a5 n0.16 g2 $
* x228 y0 w46 h52 ex4 ey82 i0 a6 n0.16 g2 $
* x274 y0 w46 h53 ex4 ey81 i0 a7 n0.16 g2 $
* x320 y0 w45 h53 ex3 ey81 i0 a0 n0.16 g2 $
$
* x365 y0 w33 h70 ex-12 ey100 i0 a1 n0.5 g2 $
* x398 y0 w30 h71 ex-11 ey103 i0 a2 n0.16 g2 $
* x428 y0 w28 h72 ex-7 ey105 i0 a3 n0.16 g2 $
* x456 y0 w30 h71 ex-5 ey105 i0 a4 n0.16 g2 $
* x486 y0 w35 h68 ex-5 ey101 i0 a5 n0.16 g2 $
* x521 y0 w37 h67 ex-6 ey98 i0 a6 n0.16 g2 $
* x558 y0 w37 h68 ex-8 ey98 i0 a7 n0.16 g2 $
* x595 y0 w35 h69 ex-11 ey99 i0 a0 n0.16 g2 $
$
* x630 y0 w8 h75 ex-17 ey113 i0 a1 n0.5 g-2 $
* x638 y0 w9 h76 ex-12 ey114 i0 a2 n0.16 g-2 $
* x647 y0 w12 h75 ex-3 ey113 i0 a3 n0.16 g-2 $
* x659 y0 w10 h76 ex-4 ey113 i0 a4 n0.16 g-2 $
* x669 y0 w8 h76 ex-8 ey112 i0 a5 n0.16 g-2 $
* x677 y0 w9 h75 ex-11 ey111 i0 a6 n0.16 g-2 $
* x686 y0 w9 h75 ex-14 ey111 i0 a7 n0.16 g-2 $
* x695 y0 w8 h75 ex-17 ey112 i0 a0 n0.16 g-2 $
$
* x703 y0 w33 h69 ex16 ey114 i0 a1 n0.5 g-2 $
* x736 y0 w36 h68 ex23 ey112 i0 a2 n0.16 g-2 $
* x772 y0 w38 h67 ex29 ey108 i0 a3 n0.16 g-2 $
* x810 y0 w37 h68 ex28 ey108 i0 a4 n0.16 g-2 $
* x847 y0 w33 h70 ex22 ey110 i0 a5 n0.16 g-2 $
* x880 y0 w31 h71 ex17 ey112 i0 a6 n0.16 g-2 $
* x911 y0 w31 h71 ex15 ey113 i0 a7 n0.16 g-2 $
* x942 y0 w31 h70 ex14 ey114 i0 a0 n0.16 g-2 $
$
* x973 y0 w45 h55 ex43 ey103 i0 a1 n0.5 g-2 $
* x0 y75 w45 h53 ex45 ey98 i0 a2 n0.16 g-2 $
* x45 y75 w45 h52 ex45 ey94 i0 a3 n0.16 g-2 $
* x90 y75 w46 h53 ex44 ey94 i0 a4 n0.16 g-2 $
* x136 y75 w46 h56 ex43 ey98 i0 a5 n0.16 g-2 $
* x182 y75 w46 h56 ex42 ey100 i0 a6 n0.16 g-2 $
* x228 y75 w46 h57 ex42 ey102 i0 a7 n0.16 g-2 $
* x274 y75 w45 h56 ex42 ey103 i0 a0 n0.16 g-2 $
$
* x319 y75 w33 h40 ex45 ey85 i0 a1 n0.5 g2 $
* x352 y75 w30 h39 ex41 ey81 i0 a2 n0.16 g2 $
* x382 y75 w28 h38 ex35 ey78 i0 a3 n0.16 g2 $
* x410 y75 w30 h39 ex35 ey79 i0 a4 n0.16 g2 $
* x440 y75 w35 h40 ex40 ey81 i0 a5 n0.16 g2 $
* x475 y75 w38 h41 ex44 ey83 i0 a6 n0.16 g2 $
* x513 y75 w37 h41 ex45 ey85 i0 a7 n0.16 g2 $
* x550 y75 w35 h41 ex46 ey86 i0 a0 n0.16 g2 $
$
* x585 y75 w8 h36 ex25 ey72 i0 a1 n0.5 g2 $
* x593 y75 w9 h35 ex21 ey70 i0 a2 n0.16 g2 $
* x602 y75 w12 h35 ex15 ey70 i0 a3 n0.16 g2 $
* x614 y75 w10 h35 ex14 ey71 i0 a4 n0.16 g2 $
* x624 y75 w8 h34 ex16 ey70 i0 a5 n0.16 g2 $
* x632 y75 w9 h35 ex20 ey71 i0 a6 n0.16 g2 $
* x641 y75 w9 h34 ex23 ey71 i0 a7 n0.16 g2 $
* x650 y75 w8 h35 ex25 ey72 i0 a0 n0.16 g2 $
$
* x658 y75 w33 h41 ex17 ey71 i0 a1 n0.5 g2 $
* x691 y75 w36 h42 ex13 ey72 i0 a2 n0.16 g2 $
* x727 y75 w38 h43 ex9 ey75 i0 a3 n0.16 g2 $
* x765 y75 w37 h42 ex9 ey75 i0 a4 n0.16 g2 $
* x802 y75 w33 h39 ex11 ey72 i0 a5 n0.16 g2 $
* x835 y75 w31 h37 ex14 ey70 i0 a6 n0.16 g2 $
* x866 y75 w32 h38 ex16 ey70 i0 a7 n0.16 g2 $
* x898 y75 w33 h39 ex17 ey70 i0 a0 n0.16 g2 $
$
* x0 y0 w45 h55 ex3 ey82 i1 a1 n0.04 g2 $
* x45 y0 w54 h48 ex12 ey75 i1 a2 n0.04 g2 $
* x99 y0 w67 h32 ex28 ey62 i1 a3 n0.04 g2 $
* x166 y0 w72 h24 ex36 ey55 i1 a4 n0.04 g2 $
* x238 y0 w70 h27 ex33 ey57 i1 a5 n0.04 g2 $
* x308 y0 w67 h35 ex27 ey64 i1 a6 n0.04 g2 $
* x375 y0 w58 h47 ex16 ey73 i1 a7 n0.04 g2 $
* x433 y0 w46 h57 ex4 ey83 i1 a8 n0.04 g2 $
* x479 y0 w33 h65 ex-7 ey93 i1 a9 n0.04 g2 $
* x512 y0 w21 h67 ex-14 ey100 i1 a10 n0.04 g2 $
* x533 y0 w19 h67 ex-18 ey104 i1 a11 n0.04 g2 $
* x552 y0 w19 h66 ex-20 ey105 i1 a12 n0.04 g2 $
* x571 y0 w19 h67 ex-17 ey103 i1 a13 n0.04 g2 $
* x590 y0 w28 h65 ex-10 ey95 i1 a14 n0.04 g2 $
* x618 y0 w40 h59 ex-1 ey86 i1 a0 n0.04 g2 $
* x658 y0 w45 h55 ex3 ey82 i1 a0 n0.04 g2 $
$
* x703 y0 w33 h70 ex-11 ey99 i1 a1 n0.04 g2 $
* x736 y0 w39 h67 ex-6 ey93 i1 a2 n0.04 g2 $
* x775 y0 w50 h55 ex6 ey79 i1 a3 n0.04 g2 $
* x825 y0 w56 h46 ex13 ey71 i1 a4 n0.04 g2 $
* x881 y0 w55 h50 ex11 ey74 i1 a5 n0.04 g2 $
* x936 y0 w48 h56 ex4 ey80 i1 a6 n0.04 g2 $
* x984 y0 w40 h65 ex-4 ey90 i1 a7 n0.04 g2 $
* x0 y69 w30 h71 ex-13 ey100 i1 a8 n0.04 g2 $
* x30 y69 w21 h74 ex-19 ey109 i1 a9 n0.04 g2 $
* x51 y69 w14 h71 ex-23 ey114 i1 a10 n0.04 g2 $
* x65 y69 w12 h64 ex-26 ey114 i1 a11 n0.04 g2 $
* x77 y69 w13 h62 ex-26 ey114 i1 a12 n0.04 g2 $
* x90 y69 w13 h67 ex-25 ey114 i1 a13 n0.04 g2 $
* x103 y69 w20 h72 ex-20 ey111 i1 a14 n0.04 g2 $
* x123 y69 w29 h71 ex-14 ey103 i1 a0 n0.04 g2 $
* x152 y69 w33 h70 ex-11 ey99 i1 a0 n0.04 g2 $
$
* x185 y69 w8 h75 ex-17 ey112 i1 a1 n0.04 g-2 $
* x193 y69 w8 h74 ex-18 ey106 i1 a2 n0.04 g-2 $
* x201 y69 w8 h65 ex-17 ey92 i1 a3 n0.04 g-2 $
* x209 y69 w10 h59 ex-15 ey85 i1 a4 n0.04 g-2 $
* x219 y69 w9 h60 ex-16 ey87 i1 a5 n0.04 g-2 $
* x228 y69 w8 h66 ex-18 ey94 i1 a6 n0.04 g-2 $
* x236 y69 w9 h72 ex-19 ey103 i1 a7 n0.04 g-2 $
* x245 y69 w12 h75 ex-16 ey112 i1 a8 n0.04 g-2 $
* x257 y69 w10 h69 ex-16 ey114 i1 a9 n0.04 g-2 $
* x267 y69 w8 h61 ex-16 ey114 i1 a10 n0.04 g-2 $
* x275 y69 w8 h54 ex-14 ey114 i1 a11 n0.04 g-2 $
* x283 y69 w8 h52 ex-14 ey114 i1 a12 n0.04 g-2 $
* x291 y69 w8 h56 ex-15 ey114 i1 a13 n0.04 g-2 $
* x299 y69 w9 h66 ex-16 ey114 i1 a14 n0.04 g-2 $
* x308 y69 w8 h74 ex-17 ey114 i1 a0 n0.04 g-2 $
* x316 y69 w8 h75 ex-17 ey112 i1 a0 n0.04 g-2 $
$
* x324 y69 w33 h70 ex15 ey114 i1 a1 n0.04 g-2 $
* x357 y69 w39 h66 ex15 ey107 i1 a2 n0.04 g-2 $
* x396 y69 w47 h57 ex12 ey95 i1 a3 n0.04 g-2 $
* x443 y69 w47 h50 ex8 ey88 i1 a4 n0.04 g-2 $
* x490 y69 w48 h53 ex10 ey91 i1 a5 n0.04 g-2 $
* x538 y69 w48 h57 ex13 ey96 i1 a6 n0.04 g-2 $
* x586 y69 w46 h63 ex17 ey104 i1 a7 n0.04 g-2 $
* x632 y69 w38 h68 ex18 ey113 i1 a8 n0.04 g-2 $
* x670 y69 w28 h63 ex16 ey114 i1 a9 n0.04 g-2 $
* x698 y69 w18 h57 ex13 ey114 i1 a10 n0.04 g-2 $
* x716 y69 w15 h52 ex15 ey114 i1 a11 n0.04 g-2 $
* x731 y69 w15 h50 ex16 ey114 i1 a12 n0.04 g-2 $
* x746 y69 w14 h54 ex13 ey114 i1 a13 n0.04 g-2 $
* x760 y69 w21 h61 ex13 ey114 i1 a14 n0.04 g-2 $
* x781 y69 w30 h68 ex15 ey114 i1 a0 n0.04 g-2 $
* x811 y69 w33 h70 ex15 ey114 i1 a0 n0.04 g-2 $
$
* x844 y69 w45 h56 ex42 ey103 i1 a1 n0.04 g-2 $
* x889 y69 w54 h48 ex42 ey96 i1 a2 n0.04 g-2 $
* x943 y69 w67 h35 ex39 ey85 i1 a3 n0.04 g-2 $
* x0 y143 w72 h29 ex36 ey80 i1 a4 n0.04 g-2 $
* x72 y143 w70 h30 ex37 ey81 i1 a5 n0.04 g-2 $
* x142 y143 w67 h35 ex40 ey86 i1 a6 n0.04 g-2 $
* x209 y143 w58 h43 ex42 ey93 i1 a7 n0.04 g-2 $
* x267 y143 w46 h51 ex42 ey101 i1 a8 n0.04 g-2 $
* x313 y143 w33 h58 ex40 ey109 i1 a9 n0.04 g-2 $
* x346 y143 w21 h61 ex35 ey114 i1 a10 n0.04 g-2 $
* x367 y143 w19 h59 ex37 ey114 i1 a11 n0.04 g-2 $
* x386 y143 w19 h58 ex39 ey114 i1 a12 n0.04 g-2 $
* x405 y143 w19 h60 ex36 ey114 i1 a13 n0.04 g-2 $
* x424 y143 w28 h62 ex38 ey113 i1 a14 n0.04 g-2 $
* x452 y143 w40 h58 ex41 ey106 i1 a0 n0.04 g-2 $
* x492 y143 w45 h56 ex42 ey103 i1 a0 n0.04 g-2 $
$
* x537 y143 w33 h41 ex44 ey86 i1 a1 n0.04 g-2 $
* x570 y143 w39 h32 ex45 ey79 i1 a2 n0.04 g-2 $
* x609 y143 w50 h18 ex44 ey69 i1 a3 n0.04 g-2 $
* x659 y143 w56 h18 ex43 ey72 i1 a4 n0.04 g-2 $
* x715 y143 w55 h18 ex44 ey71 i1 a5 n0.04 g-2 $
* x770 y143 w48 h18 ex44 ey69 i1 a6 n0.04 g-2 $
* x818 y143 w40 h26 ex44 ey75 i1 a7 n0.04 g-2 $
* x858 y143 w30 h37 ex43 ey84 i1 a8 n0.04 g-2 $
* x888 y143 w21 h49 ex40 ey93 i1 a9 n0.04 g-2 $
* x909 y143 w14 h59 ex37 ey102 i1 a10 n0.04 g-2 $
* x923 y143 w12 h65 ex38 ey108 i1 a11 n0.04 g-2 $
* x935 y143 w13 h67 ex39 ey110 i1 a12 n0.04 g-2 $
* x948 y143 w13 h64 ex38 ey107 i1 a13 n0.04 g-2 $
* x961 y143 w20 h56 ex40 ey98 i1 a14 n0.04 g-2 $
* x981 y143 w29 h45 ex43 ey89 i1 a0 n0.04 g-2 $
* x0 y209 w33 h41 ex44 ey86 i1 a0 n0.04 g-2 $
$
* x33 y209 w8 h35 ex25 ey72 i1 a1 n0.04 g2 $
* x41 y209 w8 h26 ex26 ey65 i1 a2 n0.04 g2 $
* x49 y209 w8 h19 ex25 ey64 i1 a3 n0.04 g2 $
* x57 y209 w10 h21 ex25 ey68 i1 a4 n0.04 g2 $
* x67 y209 w9 h19 ex25 ey67 i1 a5 n0.04 g2 $
* x76 y209 w8 h18 ex26 ey63 i1 a6 n0.04 g2 $
* x84 y209 w9 h22 ex28 ey62 i1 a7 n0.04 g2 $
* x93 y209 w12 h35 ex28 ey72 i1 a8 n0.04 g2 $
* x105 y209 w11 h48 ex26 ey82 i1 a9 n0.04 g2 $
* x116 y209 w9 h58 ex24 ey91 i1 a10 n0.04 g2 $
* x125 y209 w8 h65 ex22 ey98 i1 a11 n0.04 g2 $
* x133 y209 w8 h67 ex22 ey100 i1 a12 n0.04 g2 $
* x141 y209 w8 h63 ex23 ey96 i1 a13 n0.04 g2 $
* x149 y209 w9 h53 ex25 ey86 i1 a14 n0.04 g2 $
* x158 y209 w8 h41 ex25 ey77 i1 a0 n0.04 g2 $
* x166 y209 w8 h35 ex25 ey72 i1 a0 n0.04 g2 $
$
* x174 y209 w33 h41 ex18 ey71 i1 a1 n0.04 g2 $
* x207 y209 w39 h32 ex24 ey64 i1 a2 n0.04 g2 $
* x246 y209 w47 h18 ex35 ey54 i1 a3 n0.04 g2 $
* x293 y209 w47 h17 ex39 ey58 i1 a4 n0.04 g2 $
* x340 y209 w48 h18 ex38 ey57 i1 a5 n0.04 g2 $
* x388 y209 w48 h18 ex35 ey54 i1 a6 n0.04 g2 $
* x436 y209 w45 h29 ex29 ey61 i1 a7 n0.04 g2 $
* x481 y209 w38 h42 ex20 ey72 i1 a8 n0.04 g2 $
* x519 y209 w29 h54 ex12 ey82 i1 a9 n0.04 g2 $
* x548 y209 w19 h62 ex5 ey91 i1 a10 n0.04 g2 $
* x567 y209 w16 h66 ex1 ey96 i1 a11 n0.04 g2 $
* x583 y209 w15 h67 ex-1 ey98 i1 a12 n0.04 g2 $
* x598 y209 w14 h64 ex1 ey94 i1 a13 n0.04 g2 $
* x612 y209 w22 h57 ex8 ey85 i1 a14 n0.04 g2 $
* x634 y209 w30 h46 ex15 ey75 i1 a0 n0.04 g2 $
* x664 y209 w33 h41 ex18 ey71 i1 a0 n0.04 g2 $
$
* x0 y0 w45 h55 ex2 ey78 i2 a1 n0.04 g2 $
* x45 y0 w43 h46 ex8 ey68 i2 a2 n0.04 g2 $
* x88 y0 w8 h68 ex16 ey105 i2 a3 n0.04 g2 $
* x96 y0 w33 h65 ex42 ey131 i2 a4 n0.04 g2 $
* x129 y0 w69 h31 ex38 ey116 i2 a5 n0.04 g2 $
* x198 y0 w30 h53 ex-48 ey139 i2 a6 n0.04 g2 $
* x228 y0 w39 h67 ex-24 ey139 i2 a7 n0.04 g-2 $
* x267 y0 w21 h71 ex-19 ey148 i2 a8 n0.04 g-2 $
* x288 y0 w13 h52 ex-19 ey135 i2 a9 n0.04 g-2 $
* x301 y0 w22 h32 ex-9 ey117 i2 a10 n0.04 g-2 $
* x323 y0 w70 h34 ex17 ey125 i2 a11 n0.04 g-2 $
* x393 y0 w22 h71 ex-48 ey124 i2 a12 n0.04 g2 $
* x415 y0 w33 h65 ex42 ey131 i2 a13 n0.04 g2 $
* x448 y0 w12 h73 ex21 ey118 i2 a14 n0.04 g2 $
* x460 y0 w41 h49 ex9 ey72 i2 a15 n0.04 g2 $
* x501 y0 w45 h55 ex2 ey78 i2 a0 n0.04 g2 $
$
* x546 y0 w34 h70 ex-17 ey97 i2 a1 n0.04 g2 $
* x580 y0 w44 h62 ex-21 ey88 i2 a2 n0.04 g2 $
* x624 y0 w15 h67 ex-21 ey108 i2 a3 n0.04 g2 $
* x639 y0 w61 h48 ex32 ey117 i2 a4 n0.04 g2 $
* x700 y0 w52 h15 ex1 ey112 i2 a5 n0.04 g2 $
* x752 y0 w33 h64 ex-23 ey166 i2 a6 n0.04 g2 $
* x785 y0 w18 h74 ex8 ey152 i2 a7 n0.04 g-2 $
* x803 y0 w19 h74 ex11 ey156 i2 a8 n0.04 g-2 $
* x822 y0 w26 h56 ex5 ey145 i2 a9 n0.04 g-2 $
* x848 y0 w25 h31 ex1 ey124 i2 a10 n0.04 g-2 $
* x873 y0 w57 h13 ex30 ey116 i2 a11 n0.04 g-2 $
* x930 y0 w31 h68 ex-14 ey141 i2 a12 n0.04 g-2 $
* x961 y0 w61 h48 ex32 ey117 i2 a13 n0.04 g2 $
* x0 y73 w23 h68 ex-10 ey116 i2 a14 n0.04 g2 $
* x23 y73 w40 h64 ex-23 ey91 i2 a15 n0.04 g2 $
* x63 y73 w34 h70 ex-17 ey97 i2 a0 n0.04 g2 $
$
* x97 y73 w9 h75 ex-24 ey113 i2 a1 n0.04 g-2 $
* x106 y73 w23 h74 ex-34 ey113 i2 a2 n0.04 g-2 $
* x129 y73 w19 h67 ex-43 ey124 i2 a3 n0.04 g-2 $
* x148 y73 w55 h25 ex4 ey110 i2 a4 n0.04 g-2 $
* x203 y73 w10 h18 ex-34 ey129 i2 a5 n0.04 g-2 $
* x213 y73 w24 h73 ex22 ey177 i2 a6 n0.04 g-2 $
* x237 y73 w37 h67 ex60 ey140 i2 a7 n0.04 g-2 $
* x274 y73 w20 h72 ex41 ey148 i2 a8 n0.04 g-2 $
* x294 y73 w28 h64 ex27 ey148 i2 a9 n0.04 g-2 $
* x322 y73 w45 h44 ex23 ey133 i2 a10 n0.04 g-2 $
* x367 y73 w18 h13 ex27 ey115 i2 a11 n0.04 g-2 $
* x385 y73 w57 h51 ex47 ey135 i2 a12 n0.04 g-2 $
* x442 y73 w55 h25 ex4 ey110 i2 a13 n0.04 g-2 $
* x497 y73 w27 h60 ex-34 ey126 i2 a14 n0.04 g-2 $
* x524 y73 w21 h74 ex-38 ey115 i2 a15 n0.04 g-2 $
* x545 y73 w9 h75 ex-24 ey113 i2 a0 n0.04 g-2 $
$
* x554 y73 w33 h69 ex11 ey117 i2 a1 n0.04 g-2 $
* x587 y73 w20 h74 ex-14 ey127 i2 a2 n0.04 g-2 $
* x607 y73 w13 h66 ex-39 ey144 i2 a3 n0.04 g-2 $
* x620 y73 w22 h14 ex-25 ey115 i2 a4 n0.04 g-2 $
* x642 y73 w48 h19 ex-6 ey141 i2 a5 n0.04 g-2 $
* x690 y73 w17 h75 ex57 ey166 i2 a6 n0.04 g-2 $
* x707 y73 w52 h51 ex86 ey111 i2 a7 n0.04 g-2 $
* x759 y73 w24 h64 ex56 ey128 i2 a8 n0.04 g-2 $
* x783 y73 w18 h72 ex37 ey144 i2 a9 n0.04 g-2 $
* x801 y73 w45 h61 ex37 ey139 i2 a10 n0.04 g-2 $
* x846 y73 w44 h9 ex49 ey102 i2 a11 n0.04 g-2 $
* x890 y73 w52 h30 ex82 ey109 i2 a12 n0.04 g-2 $
* x942 y73 w22 h14 ex-25 ey115 i2 a13 n0.04 g-2 $
* x964 y73 w15 h55 ex-38 ey142 i2 a14 n0.04 g-2 $
* x979 y73 w19 h74 ex-18 ey131 i2 a15 n0.04 g-2 $
* x0 y147 w33 h69 ex11 ey117 i2 a0 n0.04 g-2 $
$
* x33 y147 w45 h55 ex43 ey107 i2 a1 n0.04 g-2 $
* x78 y147 w43 h63 ex35 ey124 i2 a2 n0.04 g-2 $
* x121 y147 w8 h65 ex-8 ey155 i2 a3 n0.04 g-2 $
* x129 y147 w33 h18 ex-9 ey129 i2 a4 n0.04 g-2 $
* x162 y147 w69 h31 ex31 ey154 i2 a5 n0.04 g2 $
* x231 y147 w30 h69 ex78 ey139 i2 a6 n0.04 g2 $
* x261 y147 w39 h33 ex63 ey80 i2 a7 n0.04 g2 $
* x300 y147 w21 h57 ex40 ey109 i2 a8 n0.04 g2 $
* x321 y147 w13 h74 ex32 ey134 i2 a9 n0.04 g2 $
* x334 y147 w22 h73 ex31 ey138 i2 a10 n0.04 g2 $
* x356 y147 w70 h24 ex53 ey99 i2 a11 n0.04 g2 $
* x426 y147 w22 h18 ex70 ey78 i2 a12 n0.04 g2 $
* x448 y147 w33 h18 ex-9 ey129 i2 a13 n0.04 g-2 $
* x481 y147 w12 h54 ex-9 ey154 i2 a14 n0.04 g-2 $
* x493 y147 w40 h63 ex31 ey129 i2 a15 n0.04 g-2 $
* x533 y147 w45 h55 ex43 ey107 i2 a0 n0.04 g-2 $
$
* x578 y147 w34 h40 ex51 ey88 i2 a1 n0.04 g2 $
* x612 y147 w44 h46 ex65 ey104 i2 a2 n0.04 g2 $
* x656 y147 w15 h66 ex36 ey152 i2 a3 n0.04 g2 $
* x671 y147 w61 h33 ex29 ey144 i2 a4 n0.04 g2 $
* x732 y147 w51 h54 ex51 ey162 i2 a5 n0.04 g2 $
* x783 y147 w32 h58 ex55 ey112 i2 a6 n0.04 g2 $
* x815 y147 w18 h25 ex10 ey67 i2 a7 n0.04 g2 $
* x833 y147 w19 h53 ex8 ey100 i2 a8 n0.04 g2 $
* x852 y147 w26 h71 ex21 ey125 i2 a9 n0.04 g2 $
* x878 y147 w25 h73 ex24 ey131 i2 a10 n0.04 g2 $
* x903 y147 w57 h49 ex27 ey109 i2 a11 n0.04 g2 $
* x960 y147 w31 h22 ex45 ey61 i2 a12 n0.04 g2 $
* x0 y220 w61 h33 ex29 ey144 i2 a13 n0.04 g2 $
* x61 y220 w23 h60 ex33 ey156 i2 a14 n0.04 g2 $
* x84 y220 w41 h48 ex63 ey110 i2 a15 n0.04 g2 $
* x125 y220 w34 h40 ex51 ey88 i2 a0 n0.04 g2 $
$
* x159 y220 w9 h35 ex33 ey72 i2 a1 n0.04 g2 $
* x168 y220 w23 h35 ex57 ey79 i2 a2 n0.04 g2 $
* x191 y220 w19 h67 ex62 ey136 i2 a3 n0.04 g2 $
* x210 y220 w55 h54 ex51 ey151 i2 a4 n0.04 g2 $
* x265 y220 w10 h64 ex44 ey154 i2 a5 n0.04 g2 $
* x275 y220 w24 h47 ex2 ey100 i2 a6 n0.04 g2 $
* x299 y220 w37 h31 ex-23 ey78 i2 a7 n0.04 g2 $
* x336 y220 w20 h56 ex-21 ey109 i2 a8 n0.04 g2 $
* x356 y220 w28 h62 ex1 ey121 i2 a9 n0.04 g2 $
* x384 y220 w46 h62 ex22 ey123 i2 a10 n0.04 g2 $
* x430 y220 w18 h62 ex-9 ey120 i2 a11 n0.04 g2 $
* x448 y220 w57 h36 ex10 ey67 i2 a12 n0.04 g2 $
* x505 y220 w55 h54 ex51 ey151 i2 a13 n0.04 g2 $
* x560 y220 w27 h68 ex61 ey146 i2 a14 n0.04 g2 $
* x587 y220 w21 h38 ex59 ey86 i2 a15 n0.04 g2 $
* x608 y220 w9 h35 ex33 ey72 i2 a0 n0.04 g2 $
$
* x617 y220 w32 h41 ex22 ey68 i2 a1 n0.04 g2 $
* x649 y220 w20 h35 ex34 ey64 i2 a2 n0.04 g2 $
* x669 y220 w13 h67 ex52 ey116 i2 a3 n0.04 g2 $
* x682 y220 w21 h68 ex46 ey145 i2 a4 n0.04 g2 $
* x703 y220 w48 h55 ex54 ey135 i2 a5 n0.04 g2 $
* x751 y220 w17 h46 ex-40 ey112 i2 a6 n0.04 g2 $
* x768 y220 w52 h49 ex-34 ey108 i2 a7 n0.04 g-2 $
* x820 y220 w24 h64 ex-32 ey129 i2 a8 n0.04 g-2 $
* x844 y220 w18 h54 ex-19 ey125 i2 a9 n0.04 g-2 $
* x862 y220 w45 h44 ex8 ey117 i2 a10 n0.04 g-2 $
* x907 y220 w44 h55 ex-5 ey126 i2 a11 n0.04 g-2 $
* x951 y220 w52 h57 ex-30 ey93 i2 a12 n0.04 g2 $
* x1003 y220 w21 h68 ex46 ey145 i2 a13 n0.04 g2 $
* x0 y287 w15 h73 ex53 ey130 i2 a14 n0.04 g2 $
* x15 y287 w19 h38 ex37 ey70 i2 a15 n0.04 g2 $
* x34 y287 w32 h41 ex22 ey68 i2 a0 n0.04 g2 $
$
$


Donc tout d'abord les noms des images, les sons et enfin les différents états du personnage : attente, marche et frappe, chacun contenant 8 séquences pour les 8 directions et chaque * $ représentant une image.

Au niveau des paramètres : x et y pour la position dans l'image, w et h pour la hauteur, ex et ey pour le centre, permettant de situer le morceau d'image par rapport aux pieds du héros, i le numéro de l'image, a le numéro de la prochaine image dans l'animation, n le temps avant de passer à la prochaine image et enfin le plus important g : l'index-z de l'image.

Il permet de savoir dans quel ordre afficher les éléments du personnage : z0 étant le corps.
Ici, nous avons un bouclier, vous pouvez voir que suivant le moment de l'animation, il passe tout devant ou tout derrière.

En général, je réserve 1 pour le casque, -2 et 2 pour la main droite, -3 et 3 pour la main gauche.

Il existe d'autres paramètres, comme d0 et d1, me permettant de savoir quand le héros est censé pourvoir toucher un ennemi. Je ne les place que sur l'amure de corps, qui reste l'élément principal du héros.



J'utilise alors cette sympathique petite fonction pour calculer l'ordre d'affichage de mes éléments :

Les cheminModele[] étant les emplacements de tout à l'heure (0 pour le corps, 1 pour la tête, etc).

void Hero::CalculerOrdreAffichage()
{
    for (int i=0;i<NOMBRE_MORCEAU_PERSONNAGE;++i)
        m_ordreAffichage[i]=-1;
        
    for (int i=0;i<NOMBRE_MORCEAU_PERSONNAGE;++i)
    {
        if (m_cheminModele[i] != ""
        {
            int ordre = m_personnage.getOrdre(&m_modelePersonnage[i]);
            if (ordre!=-10)
                m_ordreAffichage[(int)(NOMBRE_MORCEAU_PERSONNAGE/2+ordre)]=i;
        }
    }
}


Ensuite, pour afficher, je boucle sur m_ordreAffichage et j'affiche l'élément qui lui a été attribué.


Génération du skin

Intéressons-nous à la génération des images des skins.

Il faut faire ABSOLUMENT attention à TOUJOURS garder les mêmes animations et la même position des caméras dans la création des éléments d'équipement. Sinon, tout est foutu.


Donc l'infographiste nous produit nos images, il les fait dans toutes les directions pour les différents états, en prenant garde de ne rendre que ce qu'il faut.
En général, la simple gestion du z-index suffit, mais il faut parfois re-découper légèrement les rendus.

Nous obtenons pleins d'images comme ceci :

http://img96.imageshack.us/img96/8936/croisecamailfrappe1epee.pnghttp://img25.imageshack.us/img25/5310/croisematelassefrappesa.pnghttp://img856.imageshack.us/img856/1967/katzbalgerfrappe0105.png

Une fois qu'on a nos centaines d'images, j'utilise un petit logiciel que j'ai conçus, le TilesetCreator 2.0, qui vient les stocker dans des tilesets, en essayant de découper le plus possible les parties vides qui prennent de la place pour rien.

Il me sort un fichier texte contenant donc déjà tous les paramètres x,y,w,h,ex,ey,a et je lui passe en plus i et n en paramètre.

Ce n'est pas magique ?

On obtient ce genre de choses :

http://holyspirit.fr/img/Contenu/Rendus/CroiseMailleMarche1Epee0.png

http://holyspirit.fr/img/Contenu/Rendus/EpeeLongueMarcheDroite0.png

J'ai aussi conçu un logiciel, l'EntityCopier, qui me permet de prendre un info.txt source et un cible, il vient directement me placer où il faut les infos du z-index sur le fichier cible (il vient aussi chercher d'autres infos, comme les d0 et d1 qui se trouve sur l'armure et me permettent de savoir quand le héros touche), je ne dois donc même plus le faire pour les nouveaux objets ! =D

Voici quelques exemples en jeu :
http://img854.imageshack.us/img854/6681/equipements.png

Ceci conclut cet article, si vous avez des questions, comme d'habitude, n'hésitez-pas, les com's sont faits pour ça.

Par Gregouar - 13/03/2011