| Questions par Lemente | |
|
+4-Coco- Térence GDOR1 Lemente 8 participants |
Auteur | Message |
---|
Lemente Petit bavard
Messages : 58
| Sujet: Questions par Lemente Mer 10 Juil 2013 - 12:19 | |
| Bonjour, depuis quelque temps j'essai de me mettre à gamemaker, mais je manque un peu d'assiduité ... j'ai donc décidé de chercherde l'aide et de la motivation sur un forum! J'ai trouvé une idée de projet qui me plait et qui devrait me permettre d'approfondir certaines fonctionnalités de gamemaker (studio gratuit). Je m'excuse par avance, je n'ai accès à internet que par mon téléphone, ce qui m'empêche l'accès à beaucoup de contenu (notamment les tutoriels vidéo ou le téléchargement de jeux). (j'editerai ce message pour le compléter, mais je préfère faire en sorte de ne pas le perdre par erreur!! merci de votre compréhension ). |
|
| |
Lemente Petit bavard
Messages : 58
| Sujet: Re: Questions par Lemente Mer 10 Juil 2013 - 13:17 | |
| (Bon, appartement je n'ai pas non plus accès à la fonction "editer" ...).
J'ai pour projet de faire une (pale) copie de BroForce (un super jeu dont la bêta est actuellement disponible gratuitement!).
Voici une liste des choses à faire: -perso qui saute -perso qui tire (je cherche comment tirer toutes les secondes lorsqu'on reste appuyer sur une touche) -terrain destructibles -grenade -ennemies (avec une ia très simple)
Si je fais ça deja! J'ajouterai beaucoup d'autres choses ensuite.
Ma première question concerne donc les tirs: je ne trouve pas comment faire un tir qui se répète avec un laps de temps choisi entre chaque tir lorsque l'on reste appuyer sur une touche .(le tire se répète tout les "tics" du jeu je crois). Merci de votre aide! (des mon retour dans un endroit civilisé, j'éditerai ces messages). |
|
| |
GDOR1 Très bonne participation
Messages : 130
| Sujet: Re: Questions par Lemente Mer 10 Juil 2013 - 14:26 | |
| Dans l'event de création, tu initialises une variables " temps_tirs", puis tu fait qu'à chaque step (soit dans l'event step) sa valeur est diminuée de 1, tant qu'elle est au dessus de 0 ! Soit : - Code:
-
if temps_tirs > 0 { temps_tirs -= 1 } Et que l'on ne puisse tirer que quand temps_tirs est égale 0, et ensuite mettre temps_tirs sur 1 seconde : - Code:
-
if temps_tirs = 0 if mouse_check_button(mb_left) //On ne tire que si on appuie sur le clic gauche de la souris { temps_tirs = //Le nombre de steps dans 1 seconde (généralement réglé sur 30) //Code pour créer l'objet du tir }
Dernière édition par GDOR1 le Mer 10 Juil 2013 - 14:28, édité 1 fois |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Questions par Lemente Mer 10 Juil 2013 - 14:28 | |
| Même problème içi : https://cbna.forumactif.com/t12358-resolu-bruit-de-pasSinon, bienvenue, le meilleur moyen d'apprendre GM c'est de se débrouiller par soi meme au maximum ; donc faut lire les tutos (dans la section Game Maker), lire la doc ( http://gamemaker.info/fr/manual ) et surtout persévérer. Commence pas forcément par un projet très ambitieux, un casse brique c'est déjà pas mal pour un début ; si tu vise trop haut, tu va te retrouver bloqué toutes les 5 minutes... Ah et pour le terrain destructible, ca risque d'être chaud si tu veux faire un truc digne de ce nom (genre pas des cases de 32*32 qui disparaissent entièrement) ; faudrait utiliser les data structures, et à mon avis c'est un peu prématuré Par contre rien ne t'empeche de faire certains éléments destructibles (genre porte, fenetre,etc....) mais n'espère pas avoir un demi cercle arraché sur un mur après avoir balancé une grenade (cysteine parlait de développer un truc comme ca à un moment, je sais pas ce que c'est devenu par contre) Bref, bonne chance ! _________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
|
|
| |
Lemente Petit bavard
Messages : 58
| Sujet: Re: Questions par Lemente Mer 10 Juil 2013 - 17:36 | |
| Merci, ça marche bien et c'est pratique! Pour le terrain destructible, c'est vrai qu'un jeu style worms aurait été sympa, mais je vais me contenter de blocs de 32 pixels (allez voir Broforce, c'est vraiment bien!). J'ai avancé sur le terrain destructible. Par contre la grenade pose problème, je continu mes tests! |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Questions par Lemente Mer 10 Juil 2013 - 17:44 | |
| Une piste : - tu parcours la liste de tous les objets : une boucle for. Tu peux récupérer le nombre d'objets avec la variable instance_count, et un objet particulier avec instance_id[index]. - tu regarde si il s'agit d'un objet destructible : objet_index te retourne le nom de l'objet (sous forme de constante) - si oui, tu regarde la distance entre la grenade et l'objet ; avec point_distance(), ou distance_to_object(). - si elle est inférieure à une certaine valeur, alors tu détruit l'objet ainsi : with(id_de_l_objet) instance_destroy(); Pour des ennemis, tu peux calculer les dégâts en fonction de la distance au lieu de simplement les détruires. Voilà, en principe tu devrais pas avoir trop de mal à coder ca toit même _________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
|
|
| |
GDOR1 Très bonne participation
Messages : 130
| Sujet: Re: Questions par Lemente Mer 10 Juil 2013 - 18:00 | |
| Au pire, pour le terrain destructible, on peut utiliser une surface (que l'on actualise seulement à chaque explosion), qui est convertie en sprite pour un objet terrain. Et à chaque explosion on fait un draw_circle en bm_subtract, non ? |
|
| |
-Coco- Utilisateur confirmé: Rang ***
Messages : 545 Localisation : Grenoble - Montpellier Projet Actuel : Orion VII - 0%
| Sujet: Re: Questions par Lemente Mer 10 Juil 2013 - 20:08 | |
| Ou alors tu es patient et tu utilise 1 objet par case de terrain, avec par exemple une vie, qui quand elle descend à 0 supprime l'objet... _________________ Oh, snap.
|
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Questions par Lemente Mer 10 Juil 2013 - 23:37 | |
| - GDOR1 a écrit:
- Au pire, pour le terrain destructible, on peut utiliser une surface (que l'on actualise seulement à chaque explosion), qui est convertie en sprite pour un objet terrain. Et à chaque explosion on fait un draw_circle en bm_subtract, non ?
C'est vraiment pas con, j'aurais jamais pensé à ca A mon avis, ca reste quand même chaud à faire, mais ia moyen J'essayerais de faire ca un de ces quatres, mais avoir les impacts de balles dans les murs pour pratiquement aucune perte de FPS.... Coco> ben c'est ce que je disais, mais ca reste assez moyen niveau visuel. Par contre, je viens d'y penser, on pourrait faire que quand un bloc est dans le rayon d'action de la grenade, il se subdivise en plusieurs petits blocs, ca fait moins pixelisé, et ca bouffe moins que de mettre uniquement de petits carrés. Mais dans tous les cas, ca reste moins optimisé que la solution de GDOR1, et difficilement faisable à grande échelle avec GM. Bref, merci pour l'idée GDOR1, je vous tiendrait au courant si ca marche (bon le truc c'est que j'ai jamais utilisé les surfaces, et pratiquement jamais les blend modes, mais à part ca ) _________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
|
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Questions par Lemente Mer 10 Juil 2013 - 23:51 | |
| La conversion surface > sprite est assez lente, du coup dès que la map est un peu grande ça ram bien... Y a aussi la solution de détecter les collisions directement sur la surface, mais faut oublier les fonction place_free & co de GM. http://host-a.net/u/onilink_/Destructible.rarEt niveau perfs c'est toujours pas top... |
|
| |
GDOR1 Très bonne participation
Messages : 130
| Sujet: Re: Questions par Lemente Jeu 11 Juil 2013 - 9:28 | |
| Pour éviter que le terrain entier soit chargé, on peut aussi le diviser en plusieurs surfaces. Et seuls les surfaces visibles seront actualisées. Bon, et puis aussi je pense pas qu'avec le terrain destructible, on va faire des maps gigantesques ! C'est plutôt pour des petits combats ou on fait tout pêter ! |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Questions par Lemente Jeu 11 Juil 2013 - 10:29 | |
| Bah le soucis c'est quand dans un jeu style worms, toutes les surfaces sont susceptibles d'être actualisées (genre après un armagedon). Bref sous GM ce genre de truc faut pas trop en vouloir... |
|
| |
Mobi Utilisateur confirmé: Rang ****
Messages : 1256 Localisation : Dijon
| Sujet: Re: Questions par Lemente Jeu 11 Juil 2013 - 11:12 | |
| C'est faisable facilement avec extrême physique _________________ |
|
| |
Alexandre13660 Bavard
Messages : 98 Projet Actuel : Cerebral Teste
| Sujet: Re: Questions par Lemente Ven 12 Juil 2013 - 17:17 | |
| |
|
| |
Lemente Petit bavard
Messages : 58
| Sujet: Re: Questions par Lemente Dim 3 Aoû 2014 - 23:57 | |
| Petit déterrage de topic, ça m'évite d'en recréer un ... Je continu mon très lent apprentissage de Game Maker, toujours un jeu de plateforme. Je me posait une question, mais j'ai du mal à la formuler dans un moteur de recherche ... Faut il que les hitbox des sprites d'un même personnage soient toutes identiques? J'ai croisé ce très joli sprite: Et j'ai eu envie de le faire bouger dans gamemaker. Mais j'ai vite eu des problèmes de collisions, le sprite étant très fin. Comment gérer ce genre de personnages? Est ce que je fait une hitbox très fine, et tant pis si les jambes passent à travers le décor? J'ai aussi pensé empêcher le démarrage de l'animation si le perso est trop près d'un mur. Voir même, mais je ne vois pas trop comment faire, démarrer l'animation, et l'arrêter dès que le sprite est en contact avec un solid. (Peut être en utilisant l'option "precise collision checking", je viens d'y penser en écrivant ça). Bref, si vous avez des idées, ou déjà eu cette expérience, ça m'intéresse ! Je ferais des tests demain. Merci ! |
|
| |
Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: Re: Questions par Lemente Lun 4 Aoû 2014 - 9:38 | |
| Non la collision précise ça fera très bizarre. Mets une hitbox plus large que le perso mais quasiment aussi haute, ça devrait le faire _________________ <Cysteine> nON mais la touche maj s'active/se désactive toute seule <Cysteine> et a du mal à réponDRE QUANd j'appuie dessus <Cysteine> et je l'ai démont2? IL Ny a rien DEDANs
|
|
| |
Lemente Petit bavard
Messages : 58
| Sujet: Re: Questions par Lemente Lun 4 Aoû 2014 - 10:07 | |
| - Soundii a écrit:
- Non la collision précise ça fera très bizarre. Mets une hitbox plus large que le perso mais quasiment aussi haute, ça devrait le faire
Je vais commencer par ça, merci. Mais du coup mon perso ne va pas s'arrêter très près des obstacles. Peut être que ce genre de perso n'est pas vraiment fait pour du plateformer type mario? Si vous avez d'autres idées qui traînent (ou des lies sur le sujet ...) merci ! Edit: tant qu'a faire, autre question: j'ai essayé la hitbox elliptique sur un personnage, et ça m'a réglé certains problèmes de collisions (montée d'un escalier, et plus de souplesse lorsque on se prend le coin d'une plateforme). Mais est ce que c'est vraiment une solution? ça ne risque pas de poser problème pour d'autres choses? Je vais l'essayer pour mon précédent problème, voir ce que ça donne. |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Questions par Lemente Lun 4 Aoû 2014 - 11:39 | |
| En général dans les jeux de plateforme les persos ont une hitbox rectangulaire. Avec tes trois sprites, ce que je ferais à ta place c'est leur mettre chacun une hitbox différente, puis tester dans cet ordre : si la hitbox du bonhomme qui court ne rencontre pas d'obstacle (et que la touche courir est enfoncée), bah bouger en courant. Autrement, si la hitbox du type qui marche rentre, bah le faire en marchant.
Comme ca quand tu t'approche d'un mur, il arrête de courir et tu t'approche au plus près du mur sans y rentrer. Bon après faut tester in-game comment ca rend, mais le truc elliptique à mon avis ce sera pas du tout réaliste, et pour les escaliers c'est pas comme ca qu'il faut faire. _________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
|
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Questions par Lemente Lun 4 Aoû 2014 - 11:39 | |
| Y a pas de solutions miracles pour les hitboxes, dans tous les cas, il faut qu'elle soit identique pour pas que tu te retrouves coincé dans un mur dès que tu changes de sprite. Bien que plusieurs hitbox pour un perso soient possibles (genre jeux a la metroid), mais cela implique de faire des vérifications avant de passer de l'une a l'autre (si la hitbox est plus grande, pour pas se retrouver coincé). Pour la hitbox en général on utilise un rectangle, mais certains jeux utilisent des formes assez différentes, par ex: https://i.imgur.com/vCnIJ.pngLe plus dur étant d'obtenir le résultat le plus fidèle pour la physique, et toutes les frames d'animation.. |
|
| |
Contenu sponsorisé
| Sujet: Re: Questions par Lemente | |
| |
|
| |
| Questions par Lemente | |
|