[TUTO] Créer un jeu avec GameMaker

Pour tout ce qui est fan arts, homebrew, shooters codés à la main, rip de sprites, doujins et toute autre productions artistiques ou logicielles faites maison.
Répondre
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Créer un jeu vidéo avec GameMaker.

Attention : Dans ce tutoriel, j'utiliserai la version GameMaker Pro 8.0 pour le code. Je n'utiliserai que très peu le drag&drop.

I] Le game design

a)Etape préliminaire.

Avant de se lancer dans les graphismes ou le codage, il y a une étape de réflexion indispensable qui se passe. Un personne peut avoir envie de créer un jeu vidéo. Et ca se travail. J'utilise un cahier pour travailler. Cela me permet de mettre des croquis, des schémas, des bouts de codes qui me passe par la tête. Mais avant tout ca, je réfléchi au game design.

Le game design répond à des questions que doit se poser la personne qui veut créer un jeu. Cette personne sera le game designer; ou en français et plus parlant, le concepteur du jeu. C'est lui qui a dans sa tête comment doit être le jeu. Pour cela, il se pose des questions.
En voici quelques unes :

-" Quel type de jeu ? "

-" Quelle sera l'histoire ? "

-" Quelle ambiance graphique ? "

-" Quel style graphique ? "

-" Quelle ambiance sonore ? "

-" Quels seront les mécanismes dans le jeu ? "

-" Est-ce que je peux innover avec de nouveaux mécanismes ? "

-" Qu'est-ce qui marche bien dans les autres jeux de ce genre ? "

-" Quel type de rendu graphique ? "

-" Quelles sont les compétences nécessaires au développement du jeu ? "

-" Quelles sont mes compétences ? "

-" Est-ce que j'ai besoin d'autres personnes pour mon projet et quelles sont ces personnes ? "


En voilà quelques unes qui permettent de mettre sur pied un début de projet. A ce stade, il n'est pas encore viable.
Il faut parfois discuter avec d'autres personnes pour soulever des questions auxquelles on ne pense pas immédiatement en tant que concepteur.
Et il y a d'autres étapes dans la conception du jeu à suivre.

Pour la suite de ce tutoriel, je me baserai sur la création d'un shoot 'em up.
( yoyogames peut porter un jeu sur d'autres plateformes , Android, iPhone, Ipad, PSP, mais avant de s'y attaquer, il vaut mieux bien maîtriser la conception pour PC )

b) Vers un projet viable, recherche et développement.

Nous avons donc notre type de jeu, un shoot 'em up. Reste à définir dans quelle catégorie... On va le faire horizontal old school.

On entre dans une phase de documentation et de recherche.

L'histoire, on se dit qu'il faut innover... Le gentil terrien qui défend la planète c'est du vu et revu...
On est un petit alien de la planète Ziqs, et notre mission et d'infiltrer le territoire ennemi en vu d'une invasion une fois le gentil QG terrien détruit.

Et là, on peut commencer le premier croquis/schéma du vaisseau que le joueur va contrôler.
On a toujours pas ouvert gamemaker ou tout autre logiciel à se stade hormis peut-etre un éditeur de texte.

Ensuite, on va pas s'attaquer directement à la Terre et au QG... Sinon nous n'aurions qu'un seul niveau. Et on met en place un storyboard.

Donc soit on le fait textuel, soit avec des croquis, le mieux, c'est de faire les deux !

On fait quelques recherches sur le système solaire, les autres jeux du genre... Il y a 8 planètes... Ca fait trop de stages. La terre est la troisième planète... Ca fait 6 niveaux et le final on le fait sur le QG terrien. Ca nous fait donc 7 stage ce qui est une bonne moyenne.
Donc ca nous fait les niveaux suivant :
1)Avant-garde de Neptune
2)Avant-poste Uranus
3)Les anneaux de Saturne
4)Base militaire spatiale de Jupiter
5)Complexe de production de Mars
6)La défense Terrienne spatiale
7)Le QG de la Terre ( que l'on mettra en boss final si le joueur est bon et arrive à finir le niveau 6 avec un seul continue )

Mais, ce n'est toujours pas assez pour que se soit viable. Et commencer à produire des graphismes...
On a même pas encore défini les graphismes des vaisseaux ennemis, l'ambiance graphique...

Bon... On a déjà le contexte du premier niveau et le contexte des ennemis.

Qu'est-ce qu'une avant-garde ? Se sont surtout des unités éclaireuses ou légères qui permettent d'avertir le gros des troupes. ( Il faut rester cohérent, le joueur y est assez sensible, et on est toujours dans la phase documentation/recherche )
On peut y trouver des unités moyennes pour offrir un minimum de résistance le temps que les renforts arrivent.
Et on a bien entendu un vaisseau amiral ( le boss ) qui commande tout ce petit monde.

En graphisme de fond, je verrai bien un fond spatial étoilé, Neptune et les autres planètes en arrière plan... ( on met un croquis ici )
Coté ennemi, allons voir ce qui se fait ailleurs...
Ha bah tient ! Pourquoi ne pas prendre comme modèle la navette spatiale Discovery ?!! On l'arrange un peu... ( et hop un croquis )

Bon... et le boss ? Hummmm... Allons voir du coté des satellite... Le satellite Intégral à une belle gueule sur google ( et vous aller BEAUCOUP l'utiliser )... On modifie un peu et hop le voila notre vaisseau amiral ! ( et encore un croquis grossier )

Coté musique... Bah on verra plus tard j'ai pas d'idée...

Hé mais ! il tire avec quoi mon vaisseau alien ?
Bon... On va pas se fouler, du plasma vert qui dégouline genre morve pour devant... Du violet pour tirer derrière... Et des petits yeux en modules de supports qui tournent autour du vaisseau. ( hop des petits croquis des tirs )

Sinon j'ai trouvé coté musique ! J'ai bien envie de mettre un truc facon Robert Miles, de la bonne techno relaxante mais un brin entrainante !

Reste plus qu'à faire 3 ou 4 ennemis de plus, et j'ai mon niveau 1. Enfin sur le papier...

Là, on a suffisamment de matière pour entamer le dossier du projet sur l'ordi.
On va donc se faire un tit dossier sur le disque dur qui s'appellera... Comme le titre du jeu. Et je vais l'appeler après mûre réflexion... Earth vs Ziqs. ( Oui, j'étais en manque d'imagination, mais ca peut changer par la suite, c'est pas vital pour le moment )
Et on va faire la première architecture de dossiers.

-graphisme -> contiendra les graphismes du jeu
-son -> contiendra tous les sons du jeu
-code -> contiendra du code, des scripts externes
-textes -> tout ce qui est texte, manuel du joueur, documents techniques, todolist
-wip -> contiendra les versions de travail et mini projet d'étude de mécanismes


Il ne faut pas hésiter à faire des sous-dossiers quand nécessaires !

Par exemple dans les graphismes, il n'est pas bon de mélanger les backgrounds, les sprites ennemis, sprites des boulettes... Ce ne sont pas les meme types d'images. ( bg, sprites, artworks )

Dans le son, pareil... On va pas mettre dans le meme dossier les musiques de fond et les bruits d'explosions ou de tirs... On créera un sous-dossier pour chaque type de son. ( bgm, sfx )

Et d'autres si nécessaires. Et il y aura forcément de nouveaux dossiers par la suite !
Voir meme plusieurs copies du dossier et sous-dossiers complet du jeu.

c) Plate-forme de destination et caractèristiques techniques.

Etape importante celle-là aussi. Et nous ne coderont encore rien et ne produiront que du texte encore une fois.
Donc notre jeu sera pour PC. Il faut définir comment on va jouer au jeu sur PC et quels sont les périphériques de jeux disponibles.
Pour quels types de machines ? Les super puissantes ? Les peu puissantes ?
Quelle sera la résolution du jeu ? ( dépendant de la plateforme visée et donc de la puissance disponible pour le développement)
Quels seront les périphériques utilisés en jeux ? ( idem )
Je décide de ca une fois que j'ai bien cerné le jeu que je veux faire. On pourrait inclure ces questions dans la première étape. Moi je me les pose là.

J'ai décidé de le faire en 640*480 et contrôles claviers. Ca permet de faire des jeux pas trop gourmands et le travail graphique sera moins conséquent par rapport à des résolutions plus élevées.
Et c'est très important de le faire. Ca finalise la fiche du jeu et on peu parler d'un projet viable, car on aura cerné la majorité des aspects du jeu avant d'avoir produit la moindre chose.
C'est un gain de temps précieux.
On peut rentrer maintenant en phase suivante, la production.

d) Conclusions.

Nous n'avons, à proprement parlé, rien produit du tout. Nous avons juste transformé une idée en projet. C'est un processus nécessaire qui se répètera tout au long du développement.
Pourquoi ne pas avoir produit les graphismes au moment des croquis ? Ou la musique quand on avait les idées de musique ?
Parce que sinon, on aurait jamais dépassé le stade du "projet foireux". ( et je sais de quoi je parle au sujet des projets foireux )
Là, on a un projet relativement solide et une feuille de route. Ca nous évite de nous perdre en cours de développement.
Alors oui, ca peut être relativement long et chiant... Mais sans ca, essayez, vous ne ferez que des "projets foireux". Et vous perdrez un temps précieux ou terminerez dans des impasses.
De plus, si jamais vous développez à plusieurs, il faut ABSOLUMENT cette feuille de route. Sinon personne ne sauras où aller. Le codeur ne pourra pas produire de code efficacement. Le graphiste ne sauras pas quoi dessiner précisément, le musicien ne sauras pas quoi composer et où trouver son inspiration.
Donc, on gagne du temps et on évite les impasses par ce travail de réflexion préalable.
Il faut prendre le temps de gagner du temps.


II] En route pour la première démo.

a) Introduction

Là, que vous soyez seul ou à plusieurs ( et plusieurs ca commence à 2 personnes ), vous avez le choix entre prendre le chemin que j'appelle "pro" et le chemin que j'appelle "fun".
En cheminement "pro", la première étape est loin d'être terminée. Avant quoi que se soit, vous devrez TOUT planifier, le storyboard, le level design, le sound design, décortiquer tous les mécanismes, des premières ébauches graphiques ( artworks ), des premiers rendus graphiques et décider ce que l'on garde ou pas. Ensuite l'étape de production, on fait tous les graphismes, son, le code.
On intègre tout ca.
On test en espérant que ca fonctionne du premier coup. Sinon, on repart au premier chapitre.

J'aime pas trop, et en petite équipe, ca peut décourager. En plus, on se doit de créer et respecter un cahier des charges très strict et précis.

En chemin "fun", on utilise un cycle dit "extrem programming". C'est pour chaque élément du projet, un condensé d'un projet "pro".

1-réflexion
2-conception
3-production
4-intégration
5-test


Ca permet d'avoir quelque chose, qui "tourne", très rapidement et de voir ce qui fonctionne et ce qui ne fonctionne pas beaucoup plus vite.
Je vais donc utiliser ce schéma dans notre cas, qui est plutot bien pour débuter, car on aura du plaisir plus rapidement.

Ce cycle très cours pour arriver à un résultat tangible, possède ces qualités et inconvénient. Il faut dans le cas d'un développement en équipe une grande communication entre les membres et rapide. Vous devinerez avec ça, que c'est à double tranchant pour l'avancement d'un projet.

Le plus gros avantage, c'est que l'on peut présenter l'avancement du projet à des testeurs externes et cela permet de faire connaitre le projet. Ca peut devenir un moteur important, car ces testeurs peuvent donner un coup de boost au moral quand le projet commence à devenir gros et s'enlise dans la monotonie en demandant plus et en montrant leur intérêt.

Si le scepticisme est de mise, ca permet de reprendre la phase de design avant que le ou les éléments incriminés ne plombent durablement le jeu.

Et donc, on a beaucoup plus souvent des cycles de réécriture d'un même mécanisme.

Reste maintenant à voir l'outil que vous avez choisi pour le développement, Gamemaker en version 8.0 Pro.

b) Présentation de Gamemaker

b.1) Généralités

Gamemaker est un environnement de développement tout intégré ou presque. Et avec un gros travail graphique, il est possible de ne pas se limiter qu'à la conception de jeux, mais aussi de logiciels divers. Même si ce n'est pas la fonction première de Gamemaker.
Il est vendu comme un environnement fourni avec tout ce qu'il faut, c'est presque vrai. Se sera détaillé plus tard.
Gamemaker fourni donc tous les moteurs nécessaires pour faire tourner un jeu. Certains qui connaissent le logiciel vous dirons que non, il n'y a pas de moteur physique. Et ils disent vrai. Ce qui peut s'en rapprocher serait le moteur de collision.
En premier, le moteur de jeu, qui va coordonner tous les autres "petits moteurs" (le moteur sonore, le moteur graphique entre autres).
Il est présenté comme orienté évènement. C'est plus ou moins vrai. Il faudra mélanger la programmation traditionnelle ( dite itérative ou séquentielle ), orientée objet, et évènementielle. On ne peut pas faire qu'un seul type de programmation si l'on veut exploiter le maximum de capacités de Gamemaker.
Le seul regret que je peux formulé, c'est que le concept d'héritage, de la programmation orientée objet, est tronqué ( ou alors je n'ai pas poussé assez loin... Pour les connaisseurs, j'expliquerai plus en détail dans la partie consacrée à la partie objet de Gamemaker ).

Le GML doit être l'outil que vous utiliserez pour développer vos jeux. Se contenter de drag&drop, c'est chercher les emmerdes. D'une, une simple condition devient un calvaire et deux, pour peu que l'on ait des conditions imbriquées, ca devient juste illisible.
Cependant... le drag&drop faisant appelle directement aux routines de Gamemaker, c'est plus rapide que le GML.
Pourquoi ?
Pour la simple raison que le GML est un langage interprété. Il subit donc la lenteur de l'interpréteur qui sera intégré à l'exécutable du jeu.

La puissance du GML vient du fait que c'est un langage orienté développement de jeu. On retrouve des fonctions de pathfinding prêtes à l'emploi. Ce qui évite de devoir se taper la programmation d'un algorithme relativement complexe ainsi que son codage en GML et la perte en perf qui en découle.
Il est possible de faire de la 3D avec Gamemaker. Mais c'est de la 3D facon Saturn. C'est à dire que l'on prend un plan 2D, et on lui fait subir une projection en perspective. Ce n'est pas de la 3D pure ( environnement virtuel en 3D ).

b.2) Un cycle de jeu type dans Gamemaker

Quand on démarre un jeu conçu avec Gamemaker, les moteurs de jeux et les actions de ces moteurs sont exécutés dans un ordre très précis.

1 Evènement de création d'objet ( create event )
2 Evènement de lancement du jeu. ( Game start ) * Dans le cas où l'on se situe dans la première room du jeu *
3 Evènement de création de salle ( creation code )
4 Evènement de début de salle. ( room start )
5 Evènement de début de cycle ( begin step )
6 Evènement de cycle ( step )
7 Evènement de fin de cycle ( end step )
8 Evènement de collision ( collision event )
9 Evènement graphiques ( draw event )
10 Evènement de fin de room ( room end )


Cet ordre peut sembler étrange mais est logique pour peu que l'on connaisse un peu la programmation orientée objet ( en tout cas, moi je comprend la logique, même si c'est pas forcément comme cela que j'aurais fait en développant mon propre moteur de jeu ).
Dans certaines conditions, certains events seront ignorés.
Vous remarquerez aussi l'absence d'event sonores. C'est compréhensible dans le fait que l'on peut charger et jouer un son dans n'importe laquelle de ces étapes.
Il y a des events plus ponctuels comme les alarmes.

Une fois le jeu lancé, et que l'on se trouve dans une room, les étapes 5 à 9 se répètent en boucle jusqu'à ce que quelque chose permette de sortir de cette boucle.

C) L'interface

Quand on lance gamemaker pro en mode avancé ( utilisation recommandée pour suivre ce tutoriel ), on voit tout un tas de trucs dont on sait pas à quoi ca sert.
Il y a un éditeur plus ou moins avancé pour chaque section de la liste de gauche. Certains sont très sommaires, d'autres sont plus poussés.

L'outil le moins visible mais le plus utile sera l'éditeur de sprite.
Un "paint" amélioré très pratique pour faire du pixel art. Il gère nativement le PNG et donc la transparence. C'est un format d'image très pratique, je n'utilise que celui-ci. Il permet de ne pas détruire l'image, et gère la transparence.
Vous pourrez aussi créer des backgrounds. Et vous pourrez configurer vos BG en image pleine ou en tileset.

Un éditeur de script avec coloration syntaxique et un embryon de correcteur syntaxique, celui que vou utiliserez le plus, il vous permet d'écrire le code GML. A utiliser avec la documentation.

Un éditeur de room
, c'est avec lui que vous ferez une grosse partie du level design.

L'éditeur de path, il vous permettra de créer des chemins pour vos objets et vous pourrez mettre l'affichage de la room pour avoir un repère visuel.

L'éditeur d'objet qui vous permettra de configurer aux petits oignos le comportement des évènements de vos objets. La partie drag&drop se fera ici.

Pas d'éditeur sonore, il vous faut un logiciel externe.

Tous ces éditeurs ne sont pas forcément visibles avec un bouton. Mais ils se lancent automatiquement quand vous double-cliquez sur les éléments correspondant. Un double-clic sur un sprite et l'éditeur de sprite se lance tout seul.

Tout projet gamemaker commence de la même manière. La création des éléments de bases nécessaires. A savoir :

-Une room ( sinon le jeu refuse de se lancer )
-un objet ( sinon on a rien pour agir dans la room )
-un sprite ( pour que l'objet soit visible )


C.1) L'éditeur de sprite

La première chose à avoir, du graphisme pour le premier objet. On va donc commencer par là.

Qu'est-ce qu'un sprite ?
Un sprite, c'est une image en 2 dimensions. Et c'est tout ? Presque. Un sprite peut être animé et sera donc constitué d'un ensemble d'images pour créer une animation et par extension, un sprite animé.

Créons notre premier sprite.
Clique droit sur le dossier "Sprite" dans la colonne de gauche, puis "Create sprite". L'éditeur de sprite se lance. La première chose à faire, est de donner un nom à ce sprite.

Là, il faut ABSOLUMENT respecter une convention de nommage... AUCUN ESPACE DANS LES NOMS ! Si vous voulez espacer des groupes de lettres, utiliser l'underscore, "_", c'est la touche 8 juste au dessus les lettres de votre clavier ( si vous en avez un normal ). On ne met pas de "." dans les nom non plus. Le "." est utiliser pour définir l'appartenance d'un élément à un autre. Par exemple "Pierre" possède une "voiture". On va écrire "Pierre.voiture" .
Pas de signes mathématiques non plus... ( - + = * / ) Sinon vous allez droit à de graves problèmes. Pour faire simple, n'utilisez que des lettres et des chiffres avec "_" pour marquer les séparations.

Nous aborderons une convention de nommage ( c'est comme une charte graphique, sauf que ca s'applique à TOUS les noms que l'on va utiliser pour TOUS les éléments, ca défini comment nommer nos éléments ) plus approfondie plus tard, pour le moment, on va prendre un peu de plaisir avec l'interface et voir comment fonctionne gamemaker.

On va donc l'appeler... Hummmm...

vaisseau_joueur

On voit tout de suite ce que va représenter le sprite. Car l'icone affichée sera parfois trop petite pour distinguer ce que c'est. Il faut avoir des noms bien distingués pour savoir ce sur quoi on travail.

Donc maintenant que je vous ai bien pris la tête sur le nom, je vais vous prendre la tête sur le sprite à proprement parlé !

L'éditeur créé automatique un sprite vide. C'est pour cela que vous ne voyez pas de bouton "Create". Utilisez plutot le bouton "edit" si vous voulez créer de toute pièce votre sprite. Si votre graphiste vous a déjà pondu un sprite, utilisez le bouton "load sprite".
Avec le bouton "edit", vous pouvez voir un aperçu de votre sprite en cliquant sur la case en haut à gauche "Show preview". Pour le moment vous ne voyez rien, c'est normal il est vide. On va donc ajouter une image en passant par "File"->"New" en haut à gauche. Il vous demande la taille.
Width correspond à la largeur.
Height correspond à la hauteur.

On va laisser les valeurs par défaut pour le moment...
Hop on a un sprite ! Mais je vois rien dans preview !!! C'est normal, votre sprite est actuellement transparent. Allons lui donner un peu de couleur.

Double-clic sur image0 dans la partie droite.
Et là, un simili paint se lance.
Bon, comme c'est pour des tests, pas besoin de sprites super évolués... On prend le pot de peinture situé à gauche... La couleur bleue ( parce que j'aime le bleu ) et hop en rempli ! On valide en cliquant sur la coche verte en haut à gauche. Et là, la preview change ! On voit notre beau carré bleu ! On revalide avec la coche verte toujours à la meme place.
Miracle ! Le sprite dans la liste de gauche affiche le nom, et mon zoli carré de couleur bleu !

Le bouton "save sprite" vous sera utile en temps voulu. Il n'est en aucun cas prévu pour exporter un sprite créé avec gamemaker et le retravailler dans un autre logiciel de dessin. Il sert à sauvegarder un sprite au format gamemaker. Ce format contient toutes les informations comme son origine, sa taille, son masque de collision, sa hitbox.

Parlons de l'origine.
C'est la coordonnée d'où sera affiché le sprite.
Il est par défaut en [0;0]. C'est à dire, que son affichage commencera par le coin en haut à gauche de l'image. Toutes les élément graphiques de gamemaker ont leur origine [0;0] en haut à gauche. Faites-y attention. Surtout si vous voulez que l'origine soit au centre de votre sprite.
Pour modifier l'origine, vous utiliserez les deux cases en dessous les boutons, dans un petit cadre marqué "Origin".
X modifie la position horizontal, Y la position verticale.
Vous avez un petit bouton très pratique pour le mettre automatiquement au centre, "center" juste en dessous.
On clique dessus.
Et là, on voit apparaitre sur la partie droite qui sert de preview, une croix au milieu de notre carré. C'est pour vous montrer où est actuellement l'origine.

Nous avons ensuite la hitbox et le masque de collision.
Pour le moment, c'est réglé sur "precise collision checking" dans la colonne centrale donc nous ne pouvons pas modifier. Cette option dit à gamemaker de calculer des collisions pour chaque pixel de l'image pour avoir une collision dite "pixel perfect" basée sur l'image du sprite.
On verra plus tard l'utilité de ces options sur les collisions. Pour le moment, on va juste utiliser les paramètres par défaut.

Bon... Après tout ca, nous avons notre premier sprite ! Ouf... Mais... on a pas pu définir son comportement et rien n'a permis de le faire... Il faut donc passer par un objet pour cela !
Allons donc créer notre premier objet.

C.2) L'éditeur d'objets

Qu'est-ce qu'un objet ?
C'est un "conteneur" dans la programmation orientée objet, un sorte de boite virtuelle, que l'on va remplir d'informations pour qu'il effectue des actions sur lui-même ou sur d'autres objets. La majorité des actions sont effectuées par les objets.
Le vaisseau du joueur dans un shoot, c'est un objet qui contient des information sur son apparence ( le sprite qui s'affichera ), sur les actions qu'il doit effectuer ( le code qui sera exécuté ) quand le joueur appuie sur une touche du clavier.

Allons donc créer notre premier objet !
On suit la même procédure. Clic droit sur le dossier "Objects", "Create object". Et l'éditeur d'objet s'affiche devant nous !

Il est divisé en 3 colonnes. La première contient le nom ( et il va encore falloir réfléchir pour donner un nom convenable ), le sprite que l'on va utiliser pour l'objet si on le met visible ou non, solide ou non. Quels intérêt à ces options ? Nous le verrons plus tard. Mais sachez que c'est très utile pour le développeur de mettre certains objets visibles, et d'autres non. Il sera parfois nécessaire d'avoir tous les objets visibles, surtout lorsque l'on voudra tester des collisions.
Solid et une option pour les collisions aussi. Nous verrons dans quel cas utiliser celle-ci.
Il y a Depth qui peut vous paraitre étrange pour la création d'un jeu en 2D. Depth veut dire "profondeur". C'est en fait, pour définir l'ordre de superposition. Un objet qui est à 0 sera affiché tout en haut de la pile, donc au premier plan. Alors qu'un objet avec 25 sera afficher sur le 26ième plan derrière ( le plan 0 étant le plan numéro 1, un ordinateur compte toujours à partir de 0 qui est son premier chiffre au contraire de nous ce qui nous donne donc le 26ième plan ), l'objet avec Depth 0 sera affiché "au-dessus" de l'objet avec la valeur à 25 dans le cas où il se superposent.
Persistent, qui défini l'objet s'il est persistant ou non. C'est utile pour les objets de contrôles ( des objets qui n'ont aucun sprites, et qui vont contenir des informations importantes, comme le score, le nombre de vies du joueur, qui ont besoin d'être "transportées" d'un niveau à l'autre )
Parent, vous ne devriez pas trop comprendre à quoi ca sert pour le moment... Et c'est normal. C'est un concept de programmation orienté objet. Je préfère ne pas vous en parler sans tomber dans de longues explications. On développera cette option avancée et très pratique plus tard. Ca permet de faire un objet modèle qui défini certains comportements génériques à tous ces "enfants". Retenez pour le moment : les objets parent sont des modèles de comportement, les objets enfants sont ceux qui exécutent le modèle de comportement.

Mask, cela concerne les collision, c'est pour dire quel masque de collision utilisé. On peut utiliser un masque qui a une forme différente du sprite d'origine. On verra leur utilisation dans le chapitre des collisions qui sera relativement technique et complexe.

Le bouton show information permet de voir les informations sur l'objet, un récapitulatif des propriétés de l'objet.

La colonne "Events". C'est là que vous allez définir quels sont les évènements auxquels l'objet "réagira". En bas de cette colonne, les boutons "add event", "Delete", "change" pour respectivement Ajouter, supprimer ou changer un évènement. En cliquant sur Add event, vous verrez une nouvelle fenêtre avec des boutons représentant les diverses catégories d'évènement. C'est la partie drag&drop que nous utiliserons le plus.
Nous avons donc :

-Create ( évènement de création de l'objet )
-Destroy ( évènement de destruction )
-Alarm ( quand une alarm se déclenche )
-Step ( quand un évènement de début de cycle, de cycle, fin de cycle apparait )
-Collision ( évèhnement de collision avec un objet )
-Keyboard ( évènement clavier )
-Mouse ( évènement souris )
-Other ( les évènements concernant les rooms, view, le jeu; je détaillerai leur utilisation au fur et à mesure )
-draw ( évènement d'affichage à l'écran )
-Key_press ( évènement de pression sur une touche du clavier )
-key_release ( évènement de touche du clavier relachée )
-Trigger ( évènement déclencheurs définis par l'utilisateur )


Et enfin, la dernière colonne avec des onglets triés par catégories qui permet de définir les actions exécutées au moment d'un event.
L'action que l'on utilisera presque exclusivement sera dans l'onglet "control" section "Code", "execute script". On pourrait choisir "execute a piece of code", mais l'intérêt est très limité. Le problème majeur sera la non visibilité de ce qui sera écris comme code dedans car c'est une action qui sera stockée dans le drag&drop et non pas dans la colonne des ressources de gauche. Donc la maintenance et le debugging ( recherche et résolution de comportement incorrect ) sera beaucoup plus long et difficile.

Créez juste un objet sans rien ajouter pour le moment.
Définissez son nom et son sprite.

Le sprite sera vaisseau_joueur.

Et le nom ?
objet_joueur

Je ne vous ai certes pas tout expliquer sur l'éditeur d'objet, mais ce n'est qu'une présentation et une navigation de l'interface pour le moment avec de petites manipulations qui nous donnerons des éléments de base.

C.3) L'éditeur de background

Qu'est-ce qu'un background ? Traduit, ca donne l'arrière-plan. La forme la plus simple est une image. La forme plus complexe s'appelle un tile set. Un tile set est un ensemble de petites images qui vont former ce que l'on appelle des tuiles, car comme avec une toiture, on va poser nos tuiles pour dessiner un décors. C'est très pratique quand nous avons des décors répétitifs. Cela permet d'économiser le chargement en mémoire d'une énorme image, on va charger en mémoire plein de petites images et au final la quantité de données chargées en mémoire sera beaucoup plus petite.

Pour créer un background, même procédure que les sprites, clic droit sur le dossier "Background" dans la colonne de gauche, Puis "create background". La procédure de création est similaire à celle d'un sprite.
Même interface que pour le sprite, donc vous ne serez pas dépaysés et l'on va créer les deux types de background.
Un premier où l'on va utiliser le contour d'un carré qui servira de background normal, et un deuxième qui servira de tile set.

Le background normal :
Donc on passe par "edit", le "paint" se lance et nous créer une image transparente. On va prendre la couleur noire, l'outil pour faire des carré et prendre le premier de la liste un peu plus bas. On zoom un peu avec la "loupe +" en haut de l'écran, on par du coin en haut à gauche et on va jusqu'en bas à droite. Nous avons donc un carré vide.
On valide et nous voyons que l'image fait 64x64. 64 pixels de large pour 64 pixels de haut. On valide une dernière fois.

Le tileset :
Même procédure, on créer un nouveau Background avec le clic droit dans la liste des ressources, on fait "edit", on rezoom, on reprend l'outil carré, mais ce coup-ci, on prend l'outil carré plein. On prend donc la dernière option. On va dessiner 4 petits carrés de couleur différente dans l'image. Je vous laisse le choix des 4 couleurs. On fait 4 carrés de 32x32 pixels de coté. Pour voir les coordonnées, il faut regarder en bas, l'éditeur vous marque le nom de l'outil, et vous dit que si vous voulez faire des carré, maintenez la touche SHIFT ( MAJ ) et dessinez vos carrés.
Une fois que c'est fait, validez, puis cochez la case "Use as tile set". De nouvelles options apparaissent. Une colonne appelée "tile properties". Tile width pour la largeur d'une tuile, mettez le à 32. Tile Height pour la hauteur, mettez le à 32 aussi. Vous verrez le quadrillage de droite se modifier selon les valeurs que vous mettez. Horizontal offset et vertical offset servent à définir respectivement un décalage horizontal et vertical de votre quadrillage. Horizontal et vertical sep servent à définir l'espace de séparation respectivement horizontal et vertical entre vos tuiles. Attention ! Ca ne créera pas d'espace dans votre image ! Cela sert si vous avez mis des espaces entre vos tuiles quand vous avez conçu votre tile set.
On valide.

Vous pouvez renommer vos background. Vous remarquerez qu'il n'y a pas de différence visible entre un tile set et un background normal. Je recommande de le spécifier dans le nom du background. Par exemple pour le carré vide, on va le nommer "carre_vide", et notre tile set, "tile_carres_couleurs".

C.4) L'éditeur de rooms et de views

Que j'explique un peu l'utilité des deux avant d'aller plus loin.
La room est une surface qui sert de support pour les graphismes un peu comme une toile de peinture pour le peintre.
La view, c'est un objectif de caméra.
Une room devrait avoir une taille plus grande que la view pour plusieurs raisons qui seront expliquées plus tard.
La view, c'est ce qui sera affiché à l'écran. L'intérêt d'une view plus grande que la room est assez limité, mais permet dans certain cas de ne rien perdre en qualité graphique. Et vous verrez qu'une view de la taille de la room possède de petits inconvénients qui ne sautent pas aux yeux immédiatement.
La taille de la room et de la view est exprimée en pixels.

Nous allons donc créer notre première room.
Clic droit sur le dossier "Room" dans la colonne de gauche. Sélectionner "create room". Là, s'ouvre l'éditeur de room avec des onglets.

Première chose notable, on voit un fond gris avec une grille. Il est possible de configurer cette grille pour plus de finesse dans les différentes manipulations qui utiliseront cette grille. Pour la configurer, en haut, vous voyez les mots Snap X et Snap Y juste à gauche d'un bouton formant une grille normale, le second qui a une forme de losange avec des pointillés sert à passer à une grille isométrique. Snap X sert à définir la hauteur d'une case de la grille en pixels, Snap Y la largeur d'une case toujours en pixels.

A gauche, vous avez une colonne avec des onglets pour la configuration de la room ainsi que des views.

Nous avons à gauche les onglets suivant :

-objects pour insérer les objets que nous avons créer via la liste déroulante en dessous. Un clic gauche et hop on voit notre carré posé, un clic droit sur celui-ci et zou, il disparait ! Si vous voulez superposé deux objets, décochez l'option "delete underlying". Ca signifie "supprimer ce qui est en dessous" et ce, quelque soit l'objet qui sera en dessous.

-settings pour configurer le nom dans "name", un sous-titre dans "caption of the room", Width et Height pour configurer la taille de la room respectivement largeur et hauteur en pixel. Speed, c'est la vitesse globale du jeu. Cela influence le nombre d'image par seconde ( FPS ) et le nombre de cycles par seconde. Par défaut il est à 30. Nous aurons donc un jeu à 30 FPS et 30 cycles par seconde. Ce qui manque un peu de fluidité dans la pratique. Et supérieur à 75 c'est un peu inutile, la majorité des écrans ne peuvent pas afficher plus de 75 images par secondes. Une valeur correcte sera de 60, et vous verrez que c'est une valeur très pratique à l'usage. On retrouve aussi un bouton "Creation code". C'est du code qui sera exécuter à l'évènement de création de la room. Comme la fonction des objets appelée "execute a piece of code", ce qui est mis dedans ne sera pas visible dans les ressources de gauche. On verra plus tard pour utiliser les possibilités de ce bouton tout en ayant en vue le code dans les ressources. On a une case qui s'appelle "Persistent", cela sert à conserver l'état de la room en mémoire quand on la quitte.

-Tiles, vous permet d'utiliser un background de type tile set. Vous voyez une liste déroulante pour sélectionner le background que vous voulez ( attention à bien sélectionner un tile set ), puis vous sélectionnez la tuile que vous voulez placer en cliquant directement sur l'image juste au dessus de la liste déroulante et ensuite vous la placez dans la room. Appuyer et maintenir la touche SHIFT ( Maj ) permet de "peindre" des tuiles en maintenant le bouton gauche de la souris et en effectuant des mouvements. Cela s'avère peu pratique. La touche ALT permet de placer une tuile non pas alignée sur la grille, mais aux coordonnées de votre curseur de souris. Utilisez la touche CTRL pour déplacer une tuile déjà placée. La case "delete underlying" qui supprimera la ou les tuiles en dessous celle que vous allez poser, à décocher si vous ne voulez pas que se soit le cas. "Current Tile Layer" sert à définir à quelle "profondeur" seront affichées les tuiles. Vous pouvez ajouter une couche avec le bouton ADD juste en dessous, la supprimer avec DELETE ou changer cette valeur avec CHANGE. La valeur par défaut est d'un million, donc elles seront sur une couche très "lointaine" et seront assurément dans l'arrière-plan.

-Backgrounds, "Draw background color" vous permet de mettre une couleur en fond, c'est pratique quand nous n'avons pas encore d'image à mettre en arrière plan. Vous voyez une liste qui va de background 0 à 7. Ce qui nous fait 8 niveau de décors. "Visible when room start", c'est bien entendu pour activer l'affichage du background. La case "foreground image" vous permet de définir l'arrière plan en tant qu'avant-plan. Pratique pour les interface en jeu comme dans les jeu de stratégie. Ensuite la liste déroulante pour sélectionner l'image. "Tile hor" et "tile ver" vous permette de tapisser une salle avec une image respectivement horizontalement et verticalement. Les cases X et Y vous permettent d'effectuer un écallage sur l'axe X et Y du background. Ce n'est pas lié exclusivement à tile hor/tile ver. Stretch vous permet d'étirer une image recouvrir la totalitée de la room. Hor.speed et Ver.Speed vous permettent de mettre en place un scrolling du background ( et non pas de la vue )

-Views, c'est l'endroit où nous allons configurer l'objectif de la caméra expliqué plus tot.
L'option à cocher "Enable use of views" est pratiquement obligatoire, elle permet l'utilisation, la configuration et la manipulation des "views". En dessous, comme pour les backgrounds, on voit qu'il y a 8 views disponnibles. Cela peut-être pratique dans certaines situations. En dessous, "visible at room start" obligatoire aussi, sinon on ne verra rien. Vous remarquerez qu'en activant cette option, un cadre apparait dans la room. C'est la zone couverte par la view.
Ensuite, un petit cadre "View in room", cela sert à définir la taille de l'objectif en pixel. X et Y servent à positioner la vue. L'origine de la vue et de la room se situent au coin haut-gauche. En modifiant ces valeurs, vous positionner le coin haut-gauche de la view dans la room. Les options W et H permettent de régler respectivement la largeur et la hauteur de la vue toujours en pixels. En dessous, "Port on screen" sert à afficher à l'écran ce que contient l'objectif de la view mais à une échelle différente. Si la valeur est plus grande que la view, l'image affichée sera étirée. Si elle est plus petite, l'image affichée sera rétrécie. Cela ne touche pas aux fichier d'origine. Dans le jargon, c'est l'upscale et le downscale.
Dernier cadre nommé "Object following" et une liste déroulante. Cela vous permet de faire suivre la view à un objet que vous sélectionnez dans la liste déroulante. Hbor et Vbor pour permettent de configurer à partir de quelle distance en pixels par rapport aux bordure, respectivement horizontales et verticale, démarrer le suivi de l'objet.
Hsp et Vsp vous permettent de configurer la vitesse de défilement horizontale et/ou verticale en pixels par cycle pour créer un scrolling continue. Ces options ne sont pas liées au suivi d'un objet. La valeur -1 indique aucune restriction de vitesse et est la valeur par défaut.

C.5) L'éditeur de script

Qu'est-ce qu'un script ?
C'est une portion de code GML ( Game Maker Language, littéralement, langage de game maker ) qui sera exécuté selon l'évènement dans lequel on veut qu'il s'exécute.

Comme son nom l'indique, c'est avec lui que nous allons coder nos fameux objets. On suis la même procédure que pour les autres ressources. Clic droit sur le dossier "Scripts", "Create script".
L'éditeur s'ouvre à vous et est relativement vide.
Hormis 4 boutons, rien de particulier à dire. Ces boutons se trouvent sur le haut de l'éditeur. Un bouton "ouvrir" en forme de dossier qui vous permet d'importer un script depuis un fichier texte ( qui doit être écris en GML sinon gamemaker ne va pas l'aimer ), une disquette bleue pour enregistrer votre script dans un fichier texte ( pratique pour partager un script, mais sur des projets à plusieurs, il y a une fonctionnalité beaucoup plus puissante demandant un minimum de communication et de travail en équipe ), une loupe pour chercher un morceau de code, très pratique. Un bouton avec deux cercle et deux baton bleus. Ce bouton sert à activer ou désactiver le correcteur syntaxique. Il peut-être pratique, mais ne fait pas vraiment gagner de temps comme sur d'autres logiciels, sont utilisation principale sera la correction du texte. De temps en temps, vous utiliserez ces suggestions.

A gauche de la zone de saisie, vous verrez une colone avec des nombres, c'est pour numéroter les lignes.
Voilà, c'est a peu près tout.

Pour ce qui est de la colorisation syntaxique :

-bleu foncé : pour les mot clé type if...else, while et les accolades.
-rouge sombre : fonctions et variables propres à gamemaker
-rose : vos propres fonctions
-jaune-gris : nom de ressource autre que script
-bleu clair : pour le texte entre guillemets et pour les valeurs numériques.
-vert : pour les commentaires
-noir : texte normal
( ainsi que les variables que vous avez créé vous même )

Rien ne vous empèche de configurer ces couleurs à votre convenance. Pour cela il faut aller dans "File", puis "preferences" ensuite l'onglet "script and code" dans la fenêtre qui s'ouvre.

Et c'est tout ? Oui c'est tout sur l'éditeur en lui-même.

C.6) Configurations générales du jeu

Nous avons aussi une petite fenêtre de configuration du comportement de la fenêtre de jeu et de quelques propriétés du jeu.
C'est dans la colonne de gauche, l'avant dernière icone en forme de fichier avec une coche rouge.
Quand vous double-cliquez dessus, une fenêtre avec 6 onglets s'ouvre.
Le premier vous permet de définir le comportement graphique de la fenêtre.

Onglet graphics :

Vous permet de configurer le comportement graphique du jeu

-Case à cocher "start un full-screen mode" : Quand le joueur lancera le jeu, il démarrera automatiquement en plein écran.

-Le cadre scaling vous permet de définir la mise à l'échelle de l'affichage. En laissant les valeur par défaut, gamemaker fera en sorte que le jeu remplisse toute la surface affichable. Suivant les options, cela peut déformer l'apparence des jeux suivant votre résolution de développement et l'écran qui affichera votre jeu. Les valeurs par défaut respecteront les proportions que vous avez définies et remplira l'image avec l'option décrite ci-dessous.

-Interpolate colors between pixels : Quand vous devez agrandir votre image, la position de vos pixels change et peut créer des vides. Gamemaker s'occupera de remplir ou non les espaces en interpolant les couleurs.

-Color outside region of the room : Permet de remplir l'espace autour de votre room avec une couleur de votre choix si l'affichage de votre jeu ne rempli pas l'écran.

-Allow the player to resize the game window : Donne la permission au joueur de redimenssionner la fenêtre en cours de jeu en mode fenêtré.

-Let the game window always stay on top : L'affichage du jeu se fera toujours au premier plan, même si le joueur active une autre fenêtre.

-Don't draw a border in windowed mode : Enlève les bordures de fenêtre en mode fenêtré.

-Don't show the button in the window caption : traduction littérale, ne pas afficher de bouton dans la fenêtre de saisie de texte.

- Display the cursor : afficher ou non le curseur de la souris

- Freeze the game when the form loses focus : Mettre en pause quand le jeu n'a pas le focus ( quand je jeu n'est pas au premier plan dans le cas où le joueur active une autre fenêtre )

-Disable screensaver and power saving actions : Désactiver les écrans de veille et les actions d'économie d'énergie ( comme la mise en veille automatique sur les ordinateurs portables ).


Onglet Resolution:
-Set the resolution of the screen : vous permet de spécifier la résolution d'écran ( pour contraindre un écran à travailler dans une résolution que vous aurez définie )
Diverses options apparaissent, et c'est suffisemment explicite.

-Use synchronization to avoid tearing : Activer ou non la syncronisation verticale. Cela force à synchroniser le jeu avec l'écran pour éviter les déformations d'images. Si votre jeu tourne à 60 images par seconde et votre écran à 75hz, vous aurez un décallage car votre écran réclamera une image à afficher qui ne sera pas encore là. Cela peut occasionner des déformations ou des images coupées ( le plus fréquent reste une ligne de démarquation horizontale entre l'image courrante et la précédente ).

Onglet Other:
Concerne les touches de raccourcis et d'autres informations sur le jeu comme l'auteur, la compagnie créatrice.

-Let esc end the game : Permet de quitter le jeu avec la touche escape ( échape )

-treat the close button as esc key : Traiter la croix de fermeture de fenêtre comme la touche échape.

-Let F1 show the game information : La touche F1 permet d'afficher les informations du jeu ( à écrire dans Game information en double-cliquant sur Game information dans la colonne des ressources à gauche ).

-Let F4 switch between screen mode : La touche F4 permet de paser du mode fenêtré au mode plein écran ( fullscreen )

-Let F5 save the game and F6 load a game : Permet au joueur d'utiliser les savestates. Une savestates est une sauvegarde de l'état du jeu au moment de la sauvegarde. Quand le joueur chargera cette sauvegarde, il se retrouvera exactement où il en était, même si vous n'avez pas inclu de système de sauvegarde.

-Let F9 take a screenshot of the game : La touche F9 permet de prendre une capture d'écran du jeu. L'image se trouvera dans le même dossier que l'exécutable du jeu.

-Game process priority : Permet de définir le degrès de priorité au niveau des ressources systèmes attribuées au jeu. Cela va de normal ( valeur par défaut ) à "Le plus haut" ( highest ). Normalement, vous n'avez pas à y toucher.

-Version information : Informations diverses sur la version du jeu. Ce n'est pas la même chose que les Information de jeu ( Game information ).

Onglet Loading:
Concerne le chargement du jeu à son lancement

-Show your own image while loading : Permet de changer l'image par défaut lors du chargement du jeu à son lancement. Le bouton en dessous vous permet d'aller chercher cette image.

-Make image partially transparent : Permet d'appliquer un effet de transparence à l'image. L'option juste en dessous vous permet de définir le niveau de transparence.

-Un cadre avec une sélection contenant : No loading progress bar / Default loading progress bar / Own loading progress bar. Respectivement, Pas de barre de progression / Barre de progression par défaut / Votre propre barre de progression. La case à cochée juste en dessous met à l'échelle ou non cette barre de progression.

-Game Icon : L'icône du jeu. Le bouton juste à coté vous permet de changer cette icône.

-Game identifier : Numéro identifiant du jeu. Un numéro qui rend unique chaque jeu. On peut voir ca comme un numéro de version. Dans le cas d'un jeu en réseau, Le jeu vérifie à la connexion si l'identifiant des jeux est le même. Sinon il interrompt la connexion. ( pas utile de s'en occuper donc au début. )


Onglet Errors
Vous permet de configurer le comportement du jeu en cas d'erreur.

-Display error messages : Afficher les messages d'erreur.

-Write errors messages to file game_error.log : Ecris le message d'erreur dans le fichier game_error.log

-Abort on all message error : Interrompre à chaque erreur.

-Treat uninitialized variables as value 0 : Mettre toutes les variables non initialisées à 0 ( NE SURTOUT PAS UTILISER CETTE FONCTION ).

Onglet Infos :
Vous permet d'écrire des informations relatives au jeu pour la ou les personnes développant le jeu.
Je ne pense pas devoir expliquer les diverses cases. C'est très explicite et simple.
Ces informations ne sont disponnibles que pour les développeur possèdant Gamemaker et le fichier source. Les joueurs ne verront jamais ces informations.

C.7) Conclusions sur l'interface

Vous l'aurez remarqués, je n'ai pas abordé tous les éditeurs. Il en reste 3 qui sont les éditeurs de "Path", "Font" et "Time lines". Respectivement "Chemin", "Police d'écriture" et "Frise chronologique" ( vous pouvez ne pas être d'accord avec cette traduction, j'ai trouvé que c'est ce qui correspond le mieux à cette fonctionnalité )
Avant de les utiliser, vous allez d'abord devoir vous familiariser avec le fonctionnement de gamemaker et des premiers éditeurs. Nous verrons les derniers en temps voulu. Avec les éditeurs présentés précédemment, vous serez capable de produire une première version de démonstration qui pourra vous servir à booster votre équipe pour les étapes suivantes.
A ce niveau, vous devriez avoir dans la colone des ressources, un sprite, deux background, un objet, une room. Ce n'est pas assez pour une première démo. On va donc au travers de petits exercices compléter les ressources.

C.6) Exercices sur l'interface et la création de ressources

//Ressources pour les exercices :

Image
Exercice 1: Créer un sprite

Exercice 2: Créer un background

Exercice 3: Créer un objet

Exercice 4: Créer une room possédant un objet, un background.

Il faut que l'on voit dans une room de 640*640 pixels de coté, un arrière-plan, et un objet au centre de cette salle. Le tout sans déformation.
Pour afficher un arrière-plan, vous allez devoir chercher dans les paramètres de la room.
D) Les premiers scripts.

D.1) Introduction

Maintenant que nous avons nos premières ressources graphiques, nous allons pouvoir créer notre premier vrai script qui va dicter un comportement à un objet précis.
Avant d'écrire la moindre ligne de script, il faut réfléchir ( et oui ENCORE ) à ce que l'on souhaite faire à notre objet.
Pour notre premier script, on va s'occuper en premier de notre vaisseau ( dans le cadre du projet décris ici ), il faut qu'il se déplace, qu'il tire, ramasse des objets, gérer les collisions, et divers évènements.
Ensuite, on s'occupera des premiers ennemis.
Il faut aussi réfléchir au code que nous aurons besoin. Prendre un papier un crayon et écrire une phrase simple qui décrira l'action que devra faire notre script.

Pour chaque point abordé, j'introduirai les notions à connaitre autant sur le code que sur certains mécanismes. La syntaxe et le code seront introduits progressivement suivant nos besoins.

D.2) Les contrôles du vaisseau

On va donc s'attaquer à du codage. On va définir les déplacements du vaisseau que le joueur controlera au clavier. Nous allons aborder des notions de programmation et le fonctionnement de gamemaker plus en profondeur. Comme c'est vraiment la première fois, je vais expliquer beaucoup de choses. J'expliquerai des chose qui seront élémentaires pour certains, difficiles pour d'autres. Les variables peuvent être une des premières difficultées qu'un non programmeur va rencontré. C'est un concept abstrait et qui peut être difficile d'appréhender. La lecture pourra être fastidieuse et je risque d'appuyer certains points que vous ne comprendrez pas forcément immédiatement. Que cela ne vous empèche pas d'avancer dans la lecture et la pratique.

Sur notre bout de papier, nous avons écris :

Quand j'appuie sur la touche fléchée haut, le vaisseau monte.
Quand j'appuie sur la touche fléchée bas, le vaisseau descend.
Quand j'appuie sur la touche fléchée droite, il va à droite.
Quand j'appuie sur la touche fléchée gauche, il va à gauche.
Quand j'appuie sur la touche espace, il tire.


D.2.1) Notions à connaitre.
( A suivre )
Dernière modification par Gunny le 18 févr. 2011, 15:57, modifié 14 fois.
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15772
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

La génèse quoi !
ImageImageImage
Avatar de l’utilisateur
Yom
Empereur Bydo
Messages : 3433
Inscription : 01 oct. 2010, 12:33
Localisation : Montpellier (34)

J'ai hate d'avoir la suite ! :)
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Correction des exercices :

Les correction sont mises en blanc. Pour les afficher, surlignez le texte entre les balises.

Correction de l'exercice 4 :

[DEBUT]

1) Clic droit create room dans la section room des ressources. Valider.
2) Clic droit create sprite dans la section sprites des ressources, et charger avec le bouton « load sprite » l'image voulu. Valider.
3) Clic droit create background dans la section backgrounds des ressources. Valider.
4) Double-clic sur la room.
5) Aller dans settings, modifier la valeur de width et height à 640
6) Aller dans l'onglet backgrounds. Cliquer sur « background0 ». Dans la liste déroulante sous « Foreground » image, sélectionner votre arrière-plan ( par défaut background0).
7) Aller dans l'onglet views. Cliquer sur « enable use of views » et sur « Visible when room start ». Modifier les valeurs de « view in room » W et H à 640. Faire pareil avec « Port on screen ».
8 ) Aller dans l'onglet « objects ». Dans la liste déroulante sous « Objet to add with left mouse », sélectionner votre objet ( par défaut object0). Cliquer dans la room A peu près au centre de la salle. Valider.
9) Appuyer sur la touche de lancement de jeu. ( icône du triangle vert en haut)


[FIN]
Dernière modification par Gunny le 18 févr. 2011, 16:01, modifié 1 fois.
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
Yom
Empereur Bydo
Messages : 3433
Inscription : 01 oct. 2010, 12:33
Localisation : Montpellier (34)

J'adore sérieusement ce truc. c'est juste énorme ^^ Ca m'aide beaucoup merci bien !
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15772
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

Après on peut démarrer comme on veut mais les sous dossiers permettront une externalisation (plus la maitrise du truc) au départ, moi, j'ai fait l'inverse et c'est dûr de s'y mettre !

là au moins ceux qui voudront se lancer commenceront proprement avec ce genre de tutos !
ImageImageImage
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Petite mise à jour ^^
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
Guts
Modérateur
Messages : 10027
Inscription : 22 mai 2003, 19:02
Localisation : 28
Contact :

Gunny a écrit :Là, on a un projet relativement solide et une feuille de route. Ca nous évite de nous perdre en cours de développement.
On appelle ça un cahier des charges :charme:
Toaplan Legendary Series
** Image **
Image
Vince2
Dieu de la Borne
Messages : 1929
Inscription : 12 déc. 2009, 17:44
Localisation : LYON

Y'om a écrit :J'ai hate d'avoir la suite ! :)
Idem!
C'est très intéressant.
Image

Rage Against The Bullets Jeuvidéothèque Megadriver for ever Mon Blog: Dess'Note
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Le prochain ajout est en cours de finalisation ^^
Ca parlera de la méthode de développement ( extrem programing ) et des caractéristiques principales de gamemaker.

Vous n'aurez toujours pas de code à lire. Ou alors très peu pour expliquer les mécanismes, donc du code relativement abstrait pour expliquer le mécanisme.

Un peu comme dans les livres sur le C qui vous explique le fonctionnement et la manipulation des pointeurs. J'essaierai de ne pas être trop technique et trop abstrait.

Une fois les présentations faites, on pourra attaquer du code et certaines techniques propres à gamemaker.

Je ferai abstraction du processus de création graphique ^^
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
Yom
Empereur Bydo
Messages : 3433
Inscription : 01 oct. 2010, 12:33
Localisation : Montpellier (34)

Gunny a écrit :Je ferai abstraction du processus de création graphique ^^
Ah bon ? pas de tuto modélisation etc... ? c'est ce qui m'intéressait le plus que j'attendais... :( :ouin:
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Pour le moment, c'est sur gamemaker ^^
Pour le graphisme, j'ai pas le niveau pour prétendre faire un tuto là-dessus.

edit : petite mise à jour ^^
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
Yom
Empereur Bydo
Messages : 3433
Inscription : 01 oct. 2010, 12:33
Localisation : Montpellier (34)

dommage.. car je ne sais pas comment faire du pixel art a part sur paint et c vraiment pas top...
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15772
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

Y'om a écrit :dommage.. car je ne sais pas comment faire du pixel art a part sur paint et c vraiment pas top...
déjà ça ça peut aider :


http://www.derekyu.com/?page_id=218
ImageImageImage
Avatar de l’utilisateur
Yom
Empereur Bydo
Messages : 3433
Inscription : 01 oct. 2010, 12:33
Localisation : Montpellier (34)

han anglais... :o merci t'aurais pas le même en francais ? :p il a l'air bien et clair celui là de tuto :)
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15772
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

Y'om a écrit :han anglais... :o merci t'aurais pas le même en francais ? :p il a l'air bien et clair celui là de tuto :)

Les images parlent d'elle même !
ImageImageImage
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Petite mise à jour.
Je n'en suis pas totalement satisfait, ca sera surement modifié plus tard. Mais pour le moment, je n'arrive pas à voir ce qui cloche ou ce qu'il manque.
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15772
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

Excellent topic !
Dernière modification par Alec le 02 févr. 2011, 19:52, modifié 1 fois.
ImageImageImage
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Mise à jour.
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Vince2
Dieu de la Borne
Messages : 1929
Inscription : 12 déc. 2009, 17:44
Localisation : LYON

ça devient touffu et de + en + intéressant. :aaah:

Est ce que les fonctions que tu expliques sont disponible sur la version téléchargeable gratuitement?
Image

Rage Against The Bullets Jeuvidéothèque Megadriver for ever Mon Blog: Dess'Note
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Je le préciserai le cas échéant ;)
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Petite mise à jour !
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Mise à jour.

Quelques menues modification des paragraphes sur les sprites et les objets et l'ajout des backgrounds.
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
psychogore
1 crédit c'est déjà trop
Messages : 2357
Inscription : 23 mai 2003, 09:04

Une ou 2 captures d'ecran pour montrer certains menus et interfaces ne seraient pas du luxe.
Bonne initiative.
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Comme se soir je suis généreux, je vous donne une nouvelle mise à jour :P
Bon toujours pas de capture cependant...
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15772
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

En même temps c'est beaucoup mieux expliqué que sur certains forums !
Forums où on vous envoie chier parce que vous avez osé poser LA mauvaise question !

Pour le moment je trouve ça vraiment agréable à lire !

Mais Gunny, est ce que tu va montrer comment traiter tous les aspects d'un shmup (scrolling, tirs, collisions, scripts fonctionnels) ?

bravo, en tout cas ça peut être très utile pour démarrer !
ImageImageImage
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Je vais traiter suffisamment de points pour aller au bout d'un projet de jeu.

Avec gamemaker, c'est partout pareil, on vous explique un morceau de code, sans vous expliquer le fonctionnement des éditeurs et des mécanismes propres à gamemaker...

Tout ce que j'explique, c'est piqué à la documentation mes expérimentations. Et j'essaie de synthétiser. Alors dans les éditeurs, il y a des fonctionnalités avancées que l'on utilisera qu'à partir du moment où le tuto atteindra le niveau requis pour des explications sur ces points.

Et je pense que tu as dû apprendre un ou deux petits trucs sur certaines fonctions des éditeurs. Il y a certains points que je documente car ni la doc, ni l'interface n'est claire à ce propos, et c'est des tests qui m'ont permis de comprendre le fonctionnement de ces options. Et je ne les utilise pas forcément dans mes projets...
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15772
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

Mais justement, un tuto avec un "exemple" basique de moteur de shmup ça pourrait etre intéressant !
ImageImageImage
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Nouvelle mise à jour ^^
Pour la suite, ca devrait prendre un peu de temps...
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Dites les gars... Vous pensez pas que j'ai oublié un truc ? :)
Genre heu... l'interface principale de gamemaker à tout hasard :P
Hein Alec ? Yano ? :D

Les petits boutons qui vont bien ^^ J'ai oublié de les présenter tellement ils me sont familiers et apparemment à vous aussi, vous ne m'en avez pas fait la remarque :D

Je vais devoir insérer un paragraphe et changer la numérotation...
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Répondre