Tutoriel
Mark Overmars Glog: Astuces sur Game Maker - Une aide plus jolie
Comme je l'ai indiqué dans un précedent article, il est trés important de fournir de l'aide durant le jeu, pour indiquer comment y jouer. Ceci est désormais maintenant encore plus important vu que les jeux peuvent être joués via InstantPlay(Note: InstantPlay est un service de YoyoGames qui vous permet de jouer aux jeux hébergés sur leur site sans teléchargement, le jeu étant alors converti en Flash et affiché directement sur le site.).
Ajouter un fichier "Lisez-moi" dans le zip du jeu qui décrira comment jouer ne fonctionnera donc plus vu que les joueurs ne le verront plus.

Vous pouvez bien sur utiliser le système de "Game Information" inclus dans Game Maker mais ce système est assez limité et n'est pas trés joli. Il est pourtant trés facile de créer votre propre aide in-game.
Dans cet article je vais donc expliquer comment le faire. Vous pouvez télecharger le script requis et l'exemple ici.

Nous allons créer l'aide en créeant des images (fichiers jpg ou bitmaps) qui contiennent les différentes pages de l'aide. Vous pouvez utiliser un programme de dessin pour les rendre aussi jolies que vous le désirez.
Mais, elles doivent toutes avoir la même taille et avoir une taille plus petite que celle de votre room(Ce qui rendra l'aide encore plus sympathique.) Elles seront placées dans le même dossier que l'executable, donc nous ne les incluerons pas dedans. Ceci allègera votre jeu et accélerera le temps de chargement.

Vous allez devoir ajouter un script qui s'occupera de l'affichage des images. Il prendra en tant qu'arguments le nombre d'images d'aide, et les noms des images(qui seront indiquées comme des strings: n'oubliez donc pas les guillemets ). Le script contient trois parties. Dans la première partie, nous opacifions l'image à l'ecran. Voici le code GML pour ceci:

(Code):
var oldcol,oldalpha;
oldcol = draw_get_color();
oldalpha = draw_get_alpha();
draw_set_color(c_white);
draw_set_alpha(0.5);
draw_rectangle(0,0,room_width,room_height,false);
draw_set_color(oldcol);
draw_set_alpha(oldalpha);


Ce code enregistre les valeurs de la couleur et de l'alpha utilisées, dessine un rectangle partiellement transparent qur l'ensemble de la room, et restaure les vieilles valeurs. Vous pouvez changer la couleur et l'alpha du rectangle opacifiant si vous le désirez.

Ensuite nous allons afficher les images d'aide. Pour ceci nous allons créer un background. Nous utilisons les noms de fichiers donnés précedemment en tant qu'arguments, vérifions si le fichier existe, l'introduisons dans le background, le dessinons au centre de la room, rafraîchissons l'ecran pour le rendre visible, et attendons que l'utilisateur appuie sur une touche. Le code GML ressemblera alors à ceci:

(Code):
var helpimg,i,xxx,yyy;
helpimg = background_create_color(640,480,c_black,true);
for (i=1; i<=argument[0]; i+=1)
{
if (!file_exists(argument[i])) continue;
background_replace(helpimg,argument[i],false,false,true);
xxx = (room_width-background_get_width(helpimg))/2;
yyy = (room_height-background_get_height(helpimg))/2;
draw_background(helpimg,xxx,yyy);
screen_refresh();
keyboard_wait();
}


Et finalement nous devons effacer tout ce que nous avons affiché et en particulier redessiner la room afin de la rendre visible normalement de nouveau.

(Code):
background_delete(helpimg);
io_clear();
screen_redraw();


Et voilà. (Notez que vous n'avez pas besoin de comprendre tout ceci pour utiliser le script!).
Télechargez le script et utilisez-le dans vos jeux. Adaptez-le à vos propres besoins. J'espère voir plus de jeux avec de sympathiques aides dans ce genre désormais.

Voici une capture d'écran du résultat:
Screenshot


Traduit par Death_Egg pour Le CBNA.
Article original écrit par Mark Overmars.
18/11/2007 par Difègue
13 Commentaires

par [TheDarkTiger] @ 18/11/2007 11:13 pm
mouef utile ce truc

on pesse pas assez souvet à l'impact d'un fichier d'aide sur le jeu ...

par ombre @ 19/11/2007 01:16 pm
tous a fais d'accord je trouve toujourd que le fichier aide est moche (du moin les miens beh )

par shm31 @ 19/11/2007 01:31 pm
lol pourquoi se casser le cul en créer un fichier d'aide avec du gml

moi j'utilise du html compilé + la fonction execute_shell et hop le tour est joué gniah

par edi9999 @ 22/11/2007 08:19 pm
J aime bien c est bien sympa comme article

par glitch @ 14/12/2007 09:15 pm
arf merci de l'astuce shm,j'y avait pas penssé super

par Topaze22 @ 24/12/2007 11:43 am
Mince, la technique de shm31 est pas mal non plus coeur

En tout cas, l'article est impeccables clin

par DFFD @ 28/08/2008 08:03 am
fo la version pro

par arthuro @ 13/08/2009 07:22 am
(Note: InstantPlay est un service de YoyoGames qui vous permet de jouer aux jeux hébergés sur leur site sans teléchargement, le jeu étant alors converti en Flash et affiché directement sur le site.).
Les jeux sont convertis en flash? Ca m parait faux, En plus on peux retrouver les jeux télécharger dans un répertoire de notre ordi. Avec des nom codé du genre 37648390033.exe.
Je vois pas comment on pourrais convertir un .exe de game-maker en flash.
Cette info est fausse ou mal traduite je pense

par yoo @ 04/12/2009 04:41 pm
suffit de metre un sprite transparent et un autre sprite par dessus fier

par yoo @ 04/12/2009 04:42 pm
heheh

par jacque @ 12/10/2010 09:48 pm
Oui, arthuro a raison, les jeux ne sont pas du tout transformés en flash, flash est un lecteur de fichiers swf et de code actionscript.

Sinon, on peut faire ça avec la version lite ? Et une page en html, on peut ?

par bla @ 09/04/2011 01:16 pm
rien rire rire2 rouge super super snif non3 non honte heheh

par yoo @ 30/10/2011 03:28 pm
Pour un HTML on peut utiliser la .dll TinyWeb, mais on peut encore moins faire cette méthode en Lite.

Nom:
Mail: (optionel)
Êtes vous Humain? (Entrez oui si c'est le cas)

smile's:

fleche_dfleche_gbehgniihappy1questionrirerire2rougesupertristeangeclincoeurcoleredodofierghagniahhaphehehhontenonnon3ouhouisnif

| M'oublier