NanDeck, c'est bon mangez-en!

NanDeck est un outil d'aide à la création ludique. Initialement développé pour créer des jeux de cartes, il s'est rapidement étendu et permet maintenant la création de tout un tas d'objets liés à la création ludique: plateaux héxagonaux, piste de score, tokens...

Quand on regarde l'interface de plus prêt, on s'aperçoit tout de suite qu'il s'agit d'une application windows. Mais rassurez-vous braves linuxiens qui me suivez, il tourne très bien sous Wine. Donc on peu continuer.

NanDeck propose un meta-langage descriptif pour créer des cartes. Par exemple, lorsque j'écris:

rectangle="1-10",3,2,0,0,#000000,EMPTY  

J'indique tout simplement à NanDeck que je veux un rectange de 3cm de large sur 2cm de haut, en haut à gauche des 10 premières cartes de mon deck. Et qu'en plus, je veux qu'il ait une bordure noire et que son intérieure soit vide.

Vous voyez, c'est pas très compliqué.

Il existe de nombreuses directives permettant notamment de tracer des ellipses, des courbes de bézier, d'insérer des images, des zones de texte au format RTF,...

En plus de ces directives, NanDeck permet la déclaration de variable avec la syntaxe suivante qui produira exactement le même résultat que la commande précédente:

[ma_var]=3,2,0,0
rectangle="1-10",[ma-var],#000000,EMPTY  

Mais NanDeck ne s'arrête pas là. Il offre des outils intelligents de gestion de l'espace sur une carte, les frames.

Une frame, au sens de NanDeck, est juste une zone rectangulaire avec tout un tas de propriété de centrage de l'information. Pour définir une frame, rien de plus simple:

<ma_frame>=3,5,2,4  

Ici, nous avons défini une frame de 3cm de large sur 5cm de haut situé à 2cm du bord gauche et à 4cm du haut de la carte. Si je veux dessiner un rectangle au milieu de ma frame, rien de plus simple:

rectangle="1-10",<ma_frame,1,1,CC>,#000000,EMPTY  

Ici, j'ai tracé un carré noir de 1cm de côté situé à l'exact milieu vertical et horizontal de ma frame. Si je remplace CC par CT, le carré se retrouve au centre de ma_frame collé en haut, et si c'est par CB, et bien c'est en bas. Mais comme un exemple vous mieux qu'un long discours, je reprend l'illustration du manuel très très bien:

<frame> = 1, 1, 4, 7  
FONT = Arial, 16, , #FFFFFF, #0000FF  
RECTANGLE = 1, <frame>, #CCCCFF  
TEXT = 1, "TL", <frame, TL, 1, 1>, CENTER, CENTER  
TEXT = 1, "TC", <frame, TC, 1, 1>, CENTER, CENTER  
TEXT = 1, "TR", <frame, TR, 1, 1>, CENTER, CENTER  
TEXT = 1, "CL", <frame, CL, 1, 1>, CENTER, CENTER  
TEXT = 1, "CC", <frame, CC, 1, 1>, CENTER, CENTER  
TEXT = 1, "CR", <frame, CR, 1, 1>, CENTER, CENTER  
TEXT = 1, "BL", <frame, BL, 1, 1>, CENTER, CENTER  
TEXT = 1, "BC", <frame, BC, 1, 1>, CENTER, CENTER  
TEXT = 1, "BR", <frame, BR, 1, 1>, CENTER, CENTER  

Bref, vous l'aurez compris, NanDeck permet de créer très facilement à peu près tout ce qui peut vous passer par la tête. Pour ceux que ça intéresse, je met à disposition le petit script suivant, qui permet d'obtenir ce résultat et qui m'a servi à prototyper mon jeu de carte.

'#####################################  
'Standard cards 2.5 x 3.5 - 750 x 1050  
'#####################################

CARDSIZE=6.35,8.89  
BORDER=NONE  
DPI=300  
MARGINS=0.5,0.5,0.5,0.5

'Your code here  
[fn_card_val]=Rio Oro,24,"T"
[fn_card_sig]=symbol,24,"BT"
[rtf_font_def]=\fonttbl{\f1 Rio Oro;\f5 Bree Serif;\f4 FontAwesome;}

[fn_pv]=\f1\fs24{}

[fn_titre]=Rio Oro
[fn_card_text]=Patrick Hand,8,T
[fa]=fontawesome,10,N

[pos_sig]=0.25,1,1,1
[pos_val]=0.18,0.3,1,1
[pos_tl]=0,0,1.5,3
[pos_br]=4.5,6,1.5,3
[seq]="A|2|3|4|5|6|7|8|9|10|J|Q|K"



[gear]=\ql\f4\fs28\u61573\f5\fs20{}
[building]=\f4\fs18\u61852\f5\fs20{}
[pv_star]=\f4\fs24\u61446\f5\fs20{}

link=data.csv,card_num,val,sig,titre,cout,pv,action,trait,texte,type

'===============================  
' Back  
'===============================  
<full_card>=0,0,6.35,8.89  
image="1-52",back.jpg,<full_card>

'===============================  
' Titre  
'===============================  
<titre>=0.8,0.3,5.2,1.2  
fontrange="1-26",[fn_titre],14,BT,#000000  
fontrange="27-52",[fn_titre],12,BT,#000000  
image="1-52",wood_title.png,<titre>,0,N  
text="1-52","[titre]",<titre,CC,4,1>,center,center

'===============================  
' Enseigne des cartes  
'===============================  
fontrange="1-26",[fn_card_val],"#FF0000"  
text="1-26",[val],[pos_val],"center"  
fontrange="1-26",[fn_card_sig],"#FF0000"  
text="1-13","�",[pos_sig],"center"  
text="14-26","�",[pos_sig],"center"  
fontrange="27-52",[fn_card_val],"#000000"  
text="27-52",[val],[pos_val],"center"  
fontrange="27-52",[fn_card_sig],"#000000"  
text="27-39","�",[pos_sig],"center"  
text="40-52","�",[pos_sig],"center"  
'===============================  
<titre>=0.8,0.3,5.2,1.2  
fontrange="1-26",[fn_titre],14,BT,#000000  
fontrange="27-52",[fn_titre],12,BT,#000000  
image="1-52",wood_title.png,<titre>,0,N  
text="1-52","[titre]",<titre,CC,4,1>,center,center

'===============================  
' Enseigne des cartes  
'===============================  
fontrange="1-26",[fn_card_val],"#FF0000"  
text="1-26",[val],[pos_val],"center"  
fontrange="1-26",[fn_card_sig],"#FF0000"  
text="1-13","�",[pos_sig],"center"  
text="14-26","�",[pos_sig],"center"  
fontrange="27-52",[fn_card_val],"#000000"  
text="27-52",[val],[pos_val],"center"  
fontrange="27-52",[fn_card_sig],"#000000"  
text="27-39","�",[pos_sig],"center"  
text="40-52","�",[pos_sig],"center"


'===============================  
' Icone  
'===============================  
<pos_icon_action>=0.3,2.5,1.5,1.5  
image="1-52",fa_border.png,<pos_icon_action>,0,N,70  
image="1-52",[action],<pos_icon_action,CC,1.2,1.2>,0,N


'===============================  
' Card Texte  
'===============================  
<card_type>=0.2,4.3,5.8,1  
rtftext="1-52","{\rtf{[rtf_font_def]}\qc\f1\fs28{[trait]}}",<card_type,CC,4,1>,#FFFFFF,0,T  
<card_text>=0.2,4.7,5.8,3.6  
image="1-52",wood_paper_background_grey.png,<card_text>,0,N  
rtftext="1-52","{\rtf{[rtf_font_def]}\f5\fs20\par{[texte]}}",<card_text,CC,4.4,3.4>,#FFFFFF,0,T

'===============================  
' Illustration  
'===============================  
<pos_illustration>=1.7,1.4,3.8,2.9  
image="1-26",batiment.png,<pos_illustration,CC,3.2,2.5>,0,T  
image="27-52",perso.png,<pos_illustration,CC,3.2,2.5>,0,T

'===============================  
' Cout  
'===============================  
<pos_cout>=0.3,7.1,1.4,1.4  
font="Rio Oro",20,NT,#000000  
image="1-52",wood_title.png,<pos_cout>,0,N  
text="1-52","[cout]$",<pos_cout,CC,1.3,1.3>

'===============================  
' PV  
'===============================  
<pos_pv>=4.6,7.1,1.4,1.4  
font="Rio Oro",20,NT,#000000  
image="1-52",wood_title.png,<pos_pv>,0,NH  
text="1-52","[pv]",<pos_pv,CL,1,1.3>  
rtftext="1-52","{\rtf{[rtf_font_def]}[pv_star]}",<pos_pv,CR,0.7,0.5>,#FFFFFF,0,T  

Et on obtient comme par magie quelque chose dans ce goût là!

Voilà, je vous ai fait un petit tour d'horizons de nandeck, j'espère vous avoir donné envie de l'essayer, quoiqu'il en soit, il est téléchargeable à cette adresse http://www.nand.it/nandeck/

Bonne création et bon Game Design comme disent nos amis britanniques!