Page 8 sur 10

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 04 déc. 2013, 15:53
par Karmer
Je suis en pleine lecture, pour le moment ça passe bien même si des fois les explications vont vite, mais j'en suis très content et tout est bien expliqué !
C'est intéressant aussi de voir que pour déplacer le vaisseau par exemple, le processus est différent de ce que j'ai vu à présent. Là en l’occurrence on créé des variables résultat pour stocker "l'état" de chaque touche haut/bas etc (c'est d'ailleurs une "longueur" de type bouléen, si je me rappele bien mes cours :) ) ... et on appelle la valeur de ces variables dans du code, pour le déplacement. Là où avant on me proposait de juste mettre, par exemple :

Code : Tout sélectionner

if (keyboard_check_pressed (vk_up))
{  y -= 5 }
D'ailleurs quel est l'intérêt de passer par une variable et ensuite appeler sa valeur dans du code, plutôt que de faire comme au dessus ? Pour pouvoir plus tard "jouer" avec cette variable? J'espère ne pas trop dire de conneries quand j'utilise les termes, faut pas hésiter à me corriger.
Bon allez je vais continuer la lecture ! @ + tard. :binouze: (> remplacer la binouze par du café, j'ai pas trop dormi cette nuit :))

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 04 déc. 2013, 16:46
par Gunny
L'intérêt est de voir comment fonctionne ceci :

Code : Tout sélectionner

if (keyboard_check_pressed (vk_up))
{  y -= 5 }
C'est exactement la meme chose, juste que ca te montre comment travailler avec une fonction que tu ne connais pas et observer quels sont les résultats que tu obtiens en mode debug.

Le bout de code juste là au dessus, rien n'apparait en mode debug.
De plus, j'utilise un keyboard_check pour connaitre l'état de la touche. Ca a ptete changé avec le passage en version studio, mais utilisé un keyboard_check_pressed pouvais poser des problèmes quand on voulait par exemple mettre en place un shot et un tir chargé sur la meme touche...

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 04 déc. 2013, 18:14
par Karmer
J'ai fait une petite erreur, Je voulais juste parler de la fonction "if (keyboard_check ())" sans le "pressed" et du faite que dans ton tuto on procédait différement en utilisant une variable : "résultat". Mais c'est intéressant de voir qu'avec l'autre méthode rien n'apparait en debbug, j'avais pas pensé.

En ce qui concerne mon projet, utiliser des manettes sera possible à mettre en place, pas trop compliqué ?

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 04 déc. 2013, 18:22
par Gunny
En principe ca devrait pas etre plus difficile qu'avec le clavier.

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 04 déc. 2013, 18:43
par Karmer
Bon ça va ça me rassure, j'avais déjà réussi à utiliser des touches simples (une manette PS2 raccordée à un adaptateur usb pour 2 joueurs max): déplacement haut/bas et tir, mais sélectionner une direction avec le joystick, avant de tirer, pas moyen. Bon je vais continuer de lire ton tuto, j'en suis au scrolling, d'ici ce soir j'aurai fini et je continuerai de bosser sur mon projet en appliquant ce que j'ai appris !
j'avance par étapes :
étape 1 : déplacement, tir, pv, mort.
étape 2 : créer un écran titre, une fin à la mort de l'un des deux joueurs.
etc ... je reste a chaque fois "basique", et une fois que j'aurai produit les bases des mécaniques, je peaufinerai. Est-ce que je dois avancer comme ça ?

La dernière fois tu parlais de passer à la version studio, qu'est-ce ça t'apporterai ? (moi je bosse sur la version pro) j'espère que ça ne te dérange pas, étant donné que c'est payant... et pour ton idée de vidéos, c'est toujours d'actualité ? :))

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 04 déc. 2013, 19:36
par Gunny
C'est toujours d'actualité pour les vidéos, faut juste que je me motive et ca prendra du temps car ca nécessitera une réécriture avant que se soit agréable à regarder.

Pour passer en version studio ca va me couter 10€ grace à une mise à jour de licence.

Pour apprendre, rien de mieux que de faire par étape. Si tu commences à partir dans tous les sens, tu feras rien de bien et tu mélangeras tout.

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 04 déc. 2013, 20:40
par Karmer
Pour l'exercice 10 du tuto: faire bouger la view vers la droite, j'ai donc créé un objet "scrolling".
Dans son évenement CREATE j'ai créé une variable defilement et je l'ai initialisée à 1 (avec l'action Execute Code). Dans STEP j'ai mis le code suivant (toujours avec "Execute Code") : view_xview[0]+= defilement; ça fonctionne (en oubliant pas de placer l'objet dans la Room.)
J'ai aussi vu qu'en mettant juste view_xview[0]+= 1; ça fonctionnait sans passer par la création d'une variable et son initialisation dans CREATE.
Est-ce que c'est la bonne méthode ?

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 04 déc. 2013, 21:04
par Gunny
L'une te permet d'avoir un retour en mode debug l'autre non ( ou en tout cas pas directement ).

Après, libre à toi de faire comme tu veux ^^ Du moment que tu arrives à trouver une solution qui fonctionne et ne bug pas, c'est correct.

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 04 déc. 2013, 21:16
par Karmer
Ok =) je préfère avoir un retour dans le debug, donc je garde la première alors.
Merci encore à toi Gunny de prendre du temps pour m'aider ! Je t'enverrai bien une paire de chaussettes pour te remercier :)) !!

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 05 déc. 2013, 12:15
par Radigo
Hop, je m'incruste.

Je suis en train de bidouiller Game Maker (j'ai eu la chance de rencontrer les gens qui le font cet été et ça m'a donné envie de tester).

Du coup j'ai une question à Gunny pendant que ça parle de debug : peux-tu me donner les grandes lignes des différentes façons de debugger un projet GM ? Y'a du pas à pas ?Un inspecteur de variables en temps réel ? C'est quoi le debug overlay ?

Concrètement je suis en train de bidouiller les ds_map et je tente de mettre des instances dedans pour accéder à n'importe quel objet d'un niveau par exemple (à partir d'une variable appelée self.truc_id que je pilote très précisément lors de l'instanciation, pas l'id généré automatiquement par GM). Comment je peux lister de façon pratique les éléments de mon ds_map, voir leur type, etc... Parce que j'ai l'impression de tâtonner en aveugle et c'est pas très agréable.

Merci d'avance !

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 05 déc. 2013, 15:35
par Karmer
Punaise ça y est j'ai eu mon premier vrai obstacle qui a fait que mon code ne fonctionnait pas et sur lequel j'ai buté pendant un moment... une bête erreur de logique :
Une variable que je n'avais pas pensé remettre à zéro. :x :x
Y'a bien eu le fameux EUREKA dont tu parlais quand j'ai trouvé c'qui clochait. Et après, la jubilation de voir que tout fonctionnait correctement ! allez jy retourne

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 05 déc. 2013, 16:01
par Gunny
Radigo a écrit :Hop, je m'incruste.

Je suis en train de bidouiller Game Maker (j'ai eu la chance de rencontrer les gens qui le font cet été et ça m'a donné envie de tester).

Du coup j'ai une question à Gunny pendant que ça parle de debug : peux-tu me donner les grandes lignes des différentes façons de debugger un projet GM ? Y'a du pas à pas ?Un inspecteur de variables en temps réel ? C'est quoi le debug overlay ?

Concrètement je suis en train de bidouiller les ds_map et je tente de mettre des instances dedans pour accéder à n'importe quel objet d'un niveau par exemple (à partir d'une variable appelée self.truc_id que je pilote très précisément lors de l'instanciation, pas l'id généré automatiquement par GM). Comment je peux lister de façon pratique les éléments de mon ds_map, voir leur type, etc... Parce que j'ai l'impression de tâtonner en aveugle et c'est pas très agréable.

Merci d'avance !
Houlaaaa t'es parti loin toi ! Très loin :D

Y a pas de gestion de la mémoire avec gamemaker. ( ou en tout ca pas directement comme tu tentes de le faire ) Et donc on a pas à implémenter de truc comme tu essaie de le faire.

Vaut mieux utiliser une approche "retour de fonction" plutot qu'une approche "smart pointer" si tu veux vraiment debugger qqc en profondeur et tester le code.

Je suis pas allé aussi loin avec GM. ( en même temps j'ai jamais eu besoin de vouloir gérer les ressources de cette manière )

Jvais te faire une petite vidéo du mode debug demain ou après demain.

On a un mode pas à pas, un inspecteur d'objet temps réel. Par contre, en version 8.1 ils sont encore assez rudimentaires et peu ergonomique ( mais ils font leur taf )

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 06 déc. 2013, 12:02
par Radigo
Merci d'avance pour la vidéo. J'ai hâte !

Si je réussi à faire ce que je dis je posterai, ça peut être trèèèès utile.

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 06 déc. 2013, 15:40
par Gunny
Oui oui je vois l'intérêt, le problème, du moins en 8.1, c'est que les map, c'est super lent. Donc tant qu'on a du temps de calcul sous le pied, ca pose pas de soucis.

Comme il y a déjà un outil de debugging, j'ai jamais eu besoin de gérer les ressources manuellement comme tu le fais ^^

Les problèmes qui peuvent apparaitre sont du fait de l'implémentation de l'orienté objet.
Si je compare à du C++ :

Toute variable d'un objet est publique par défaut
Toute fonction d'un objet est publique par défaut

Donc quand je disais qu'il n'y avait pas d'encapsulation, c'était pas vraiment du chiqué :mrgreen:

Et j'ai pas trouvé comment rendre privé ces variables et fonctions.
Ca simplifie certaines choses, mais faut toujours garder ces deux points à l'esprit.

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 07 déc. 2013, 14:44
par Gunny
Bon je suis passé à gamemaker studio standard, et il y a pas mal de truc qui ont changés niveau interface...
Le mode debug à changé un peu aussi...

Faut que j'aille récupérer d'anciens projets sur mon ancien disque dur ( qui contenait le tuto ) et je fais la vidéo.

Faut que je vois aussi pour changer l'interface, parce que du tout noir comme ca, c'est pas agréable pour moi travailler.

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 07 déc. 2013, 15:27
par Karmer
Oui c'est vrai que l'interface noire sur studio est assez spéciale ...

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 08 déc. 2013, 13:56
par Gunny
J'ai pris un peu de retard sur la vidéo pour cause de soucis de micro ^^
J'essaie d'uploader la vidéo rapidement.

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 08 déc. 2013, 23:11
par Gunny

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 09 déc. 2013, 10:43
par Radigo
Wo, merci beaucoup, y'avait un message personnalisé en plus, c'est très sympa.

Je vois mieux les qualités du debugger et je pense que ça va m'être utile. Merci beaucoup.

Sinon j'ai réussi à faire ce que je voulais faire. Mais je vais ouvrir un autre topic pour éviter de polluer celui-qui est plus généraliste.

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 09 déc. 2013, 10:50
par Gunny
Y a les watch que j'ai pratiquement jamais utilisé donc j'en ai pas parlé.

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 12 déc. 2013, 11:20
par Karmer
Je m'en vais y jeter un oeil aussi !

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 16 déc. 2013, 17:24
par Karmer
J'ai besoin de ton aide Gunny ! j'avance toujours sur mon projet, doucement, mais il y a un point sur lequel je bute : l'utilisation des manettes.

Je ne sais pas comment faire et par où commencer. l'utilisation serait simple il faudrait pour chaque perso sur une manette différente:
Mouvements dans 8 directions (joystick gauche) + choisir entre 3 directions de tir verticale, horiz, diagonale (joystick droit) + tirer avec une gâchette (R1 par exemple) + un bouton pour déclencher des aptitudes.

j'ai regardé un peu la documentation du logiciel et sur le net, mais rien n'y fais, jy capte que dalle ! j'sais pas quoi faire -__- ! j'espère que tu pourras m'aider

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 16 déc. 2013, 19:38
par Gunny
Faut que j'aille lire la doc et que je fasse un projet test...
Donc va falloir attendre.

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 16 déc. 2013, 21:11
par Karmer
y a pas de problèmes!
De toute façon c'est pas primordiale pour constituer la bases des règles, en attendant je reste sur le clavier, je l'adapterai par la suite.
Merci à toi, je suis impatient =) !

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 17 déc. 2013, 09:17
par Gunny
Bon...
A première vue, le support des pads est issu de Xinput ( ca ne parlera qu'aux programmeurs confirmés ).

Un maximum de 4 contrôleurs est supporté sur des manettes types X360.
( note perso : utiliser Xinput est juste une connerie monumentale vu que ca ne supporte pas les contrôleurs PC correctement )

En sachant cela, La gestion des manettes se fait comme une programmation traditionnelle.
A savoir :

1) Détecter manuellement ce qui est connecter aux "slots"
2) Récupérer/assigner les ID des pads connectés sur les "slots"
3) Définir quel ID utiliser pour quel joueur
4) Faire un mapping des boutons

A première vue, la gestion du matos est hyper crade... On travail avec un "slots" plutot qu'un ID de pad...

Utiliser la version joystick sert strictement a rien.

edit :

Faites gaffe si vous lisez la doc de gamemaker...
Il y a des trucs juste n'importe kwesk !
Exemple :

Code : Tout sélectionner

for (var i = 0; i < gp_num; i++;)
    {
    if gamepad_is_connected(i) global.gp[i] = true else global.gp[i] = false;
    }
Déjà, c'est une notation utilisée pour ceux qui savent déjà programmer mais le pire, c'est le IF sans parenthèse ni accolade !
Après faut pas s'étonner que ca fonctionne pas...

Et les explications sont pourries comparées aux anciennes versions...

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 17 déc. 2013, 11:18
par Karmer
Bon pour l'instant j'ai pas tout compris mais je garde les étapes 1-4 de côté.

Je n'y connais pas grand chose en syntaxe mais il me semblait aussi avoir déjà vu des exemples un peu bizarres dans la doc qui fonctionnaient pas du tout ...

Pour ma part, j'utilise 'twin USB joystick' avec des manettes PS2. Avec le drag&drop j'avais testé ça fonctionnait. Mais est-ce que je suis quand même obligé de passer par une manette 360 avec un adaptateur ?
Aussi tu parles de 'slots' qu'est-ce que c'est ? et pourquoi on ne peut pas utiliser l'ID des pad alors que dans la doc ils en parlent ?
Enfin, j'te file un lien que j'ai trouvé sur le forum CBNA. C'est un fichier .gml avec des scripts pour utiliser une manette, je l'ai testé avec le twin et ça fonctionne! j'ai jeté un œil mais j'y pige pas grand chose et je n'arrive pas à l'adapter a mes besoins.

http://www.host-a.net/u/Caly/joystick_control.gmk > le fichier .GML
http://cbna.forumactif.com/t11593-les-exemples-de-caly > la page du forum

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 17 déc. 2013, 12:18
par Gunny
Question 1 :

Pas de soucis avec les pad reconnus par ton PC ( en théorie )

Question 2 :
Pour gamemaker, tu as 4 places dispo pour connecter des manettes. Ils sont appelés "slots". Il peut pas en gérer plus.

Question 3 :

J'ai jeté un oeil...
C'est normal que tu comprennes pas.
J'aurais sûrement fini avec un code similaire, mais j'aurais pas utilisé la même convention de nommage, histoire que les non programmeurs comprennent ce qui se passe et avec des explications dans les commentaires...
Sous GM studio, y a pas besoin de faire une grosse partie de ce qu'il a fait ( en tout cas y a une partie de son code que j'estime inutile ).
Et puis y a du code caché dans des "execute a piece of code". Donc faut fouiller les objets pour voir comment il gère ca...

En gros, son code, c'est du n'importe quoi... Il manque des parenthèses et des accolades ( peut-être dû à l'importation, mais c'est étonnant, le gml est en principe stocké en mode texte )...

J'essaie de te faire un truc pas trop dégueu' dès que je peux.

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 17 déc. 2013, 20:59
par Karmer
Bon, ça me rassure, j'avais toujours un adaptateur de manette 360 mais je sais vraiment pas où il est ^^.
Du coup j'attends ton bout de code, encore une fois tu me sauves la vie ;)

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 18 déc. 2013, 05:34
par Alec
moi, j'ai décidé de plus me prendre le chou, je vais trouver un moyen de lancer en même temps mon exe du jeu ET joytokey, je suis sûr que c'est possible (et c'est ce que je ferai ) le joueur aura juste à configurer joytokey une fois et ce sera tout!

J'ai essayé des config pad via gamemaker et à chaque fois ça me pourri mon gameplay, j'ai l'impression que pad et clavier ne sont pas égaux sous GM alors que pourtant ils devraient !


Ils pouvaient pas faire un truc simple genre :


"if pad (1) vk(right) machin truc....alors on va à droite"

(ça c'est du SAGML, du "simplified alec game maker language" :D )


On peut même pas faire ça c'est rageant, ils auraient du inclure un utilitaire pour gérer les pads, je veux dire, n'importe quel pad !

Re: [TUTO] Créer un jeu avec GameMaker

Publié : 18 déc. 2013, 07:13
par Gunny

Code : Tout sélectionner

slots=gamepad_get_device_count();

for ( i=0 ; i < slots ; i++ )
{
    pad_connected=gamepad_is_connected(i);
    if ( pad_connected == 1 )
    {
        list_gamepad[i]=gamepad_get_description(i);
    }
}
Bon voilà une partie de l'étape d'initialisation. Pour des raisons de test, je recommande de mettre ca sur une touche pour exécuter le script.

La première ligne sert à connaitre le nombre de port manettes dispos.

La boucle "for":

Je stocke dans la variable "pad_connected" le résultat de la fonction "gamepad_is_connected" avec l'argument "i" de la boucle "for". "i" est l'itérateur de la boucle "for" ( le compteur de tour de la boucle si tu préfères ) et il est restreint par la variable "slots".

Ensuite, je vérifie s'il y a un pad connecté avec la variable "pad_connected". Et si c'est le cas, je stock le nom du pad avec "gamepad_get_description(i)" dans un tableau appelé "list_gamepad[]"

Avec ca, tu n'as rien fait, juste vérifié ce qui est connecté ou pas. Et c'est très important de le faire. Beaucoup de mécanismes utilisent un système d'initialisation du genre plus ou moins complexe.

L'utilisation d'un tableau n'est pas approprié si tu veux utiliser ces résultats plus tard de manière sûre et confortable. Mais faut que j'apprenne dans un premier temps l'utilisation des maps.

Et va falloir que je me batte avec la doc... Sérieux, c'est vraiment la mouise ste doc...

En mode debug, tu peux ajouter des "watch". ( j'ai trouvé l'utilité des watch )
Amuse-toi a brancher plusieurs pad ou non, et dans watch, tu ajoutes :
(ID_objet).list_gamepad[0]
(ID_objet).list_gamepad[1]
(ID_objet).list_gamepad[2]
(ID_objet).list_gamepad[3]

Et regarde les valeurs changer. Tu peux ainsi tester si le branchement à chaud ou non de pad fonctionne aussi ( pas testé trop la galère ).

edit : pour les watch, respecte ABSOLUMENT les parenthèses.