| Bomberman | |
|
+4hyper chopsuey onilink_ Herdge 8 participants |
|
Auteur | Message |
---|
Herdge Très bonne participation
Messages : 164
| Sujet: Bomberman Jeu 1 Mai 2014 - 10:59 | |
| Bon alors je vais commencer par le plus obscur. C'est la fonction qui utilise la grille de sprites pour en faire une animation. - Onilink a écrit:
- /*
player_anim_step(imagespeed)
Fonction : Ce script va dcouper le sprite du perso pour pouvoir l'afficher en fonction des dplacement. Bref c'est la gestion des animations pour le player.
Auteur : onilink_ Derniere modif le : 27/10/2010 01:07 */ if(state&STOP) { left = min(state&3, 2) top = 0 xs = state&3==RIGHT sp = 0.9 } else { sp += argument0 left = min(state&3, 2) xs = state&3==RIGHT top = floor(sp) mod 4 } Je veux bien une explication en détail car je ne comprends même pas les variables... Merci ! |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Bomberman Jeu 1 Mai 2014 - 11:07 | |
| Alors left et top vont être utilisées par la fonction draw_sprite_part, il s'agit des coordonnées de découpage de l'image. En les faisant varier au cours du temps on peut donc avoir une animation en utilisant un seul sprite sheet. sp est la vitesse d'animation. La partie plus compliquée, c'est state, qui est une variable a 'états' et peut contenir plusieurs états simultanément (variable quantique? ). Pour ça, y a pas de magie, il faut connaître les opérateurs binaires afin de savoir extraire un bit d'information: https://cbna.forumactif.com/t10188-tutoriel-les-operateurs-binairesBon ce vieux système d'animation pour spritesheet est un peu pourri, j'en avais crée un bien plus efficace ensuite: http://host-a.net/u/onilink_/spriteSheet_Anim.gm6Après il est peut être un peu plus compliqué a comprendre :p |
|
| |
Herdge Très bonne participation
Messages : 164
| Sujet: Re: Bomberman Jeu 1 Mai 2014 - 12:04 | |
| Oui effectivement mais je finirais bien par comprendre (un jour...).
Mais à quoi sert xs, il renvoit 1 s'il faut inverser l'image horizontalement ?
Et gagne-t-on beaucoup en performance plutôt que de rentrer les sprites 1 à 1 ? Ou est-ce juste pour n'avoir qu'à ajouter une sheet pour une nouvelle skin. |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Bomberman Jeu 1 Mai 2014 - 12:13 | |
| Yep xs indique quand il faut reverse le sprite. Et oui c'est juste pour faciliter la création de skins, car avec plusieurs sprites ça deviens assez vite le bordel. Y a peut être mieux mais a l'époque j'avais trouvé que celle solution |
|
| |
Herdge Très bonne participation
Messages : 164
| Sujet: Re: Bomberman Jeu 1 Mai 2014 - 12:52 | |
| Pas mal du tout. J'aimerais savoir où l'on peut connaitre toutes les variables intégrées par défaut dans les objets (comme x et y par exemple) j'ai l'impression que beaucoup de choses seraient plus clairs pour moi XD. |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Bomberman Jeu 1 Mai 2014 - 13:01 | |
| Menu Scripts > Show built-in variables > toutes les local:xxx. |
|
| |
Herdge Très bonne participation
Messages : 164
| Sujet: Re: Bomberman Jeu 1 Mai 2014 - 17:16 | |
| La bible du code ! Bon je vais me lancer dans mon projet et essayer de refaire un code à ma manière afin d'en maitriser les conséquences. Ton code va bien m'aider en tout cas. Je t'enverrai bouts dès que ça chauffera ! |
|
| |
chopsuey Utilisateur confirmé: Rang ***
Messages : 523 Localisation : saint etienne Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...
| Sujet: Re: Bomberman Jeu 1 Mai 2014 - 21:12 | |
| Sinon au cas oû tu ne serrais pas au courant la vrai bible s'ouvre avec F1. _________________ - Spoiler:
|
|
| |
Herdge Très bonne participation
Messages : 164
| Sujet: Re: Bomberman Jeu 1 Mai 2014 - 22:41 | |
| Oui je connaissais mais je ne trouvais pas le verset sur les variable build-in. |
|
| |
Herdge Très bonne participation
Messages : 164
| Sujet: Re: Bomberman Dim 4 Mai 2014 - 19:47 | |
| Onilink dans la partie qui concerne la pose de la bomb tu utilises instance.maker et maker.variable.
Game maker enregistre donc automatiquement le créateur ou "maker" de chaque objet et c'est une manière de le récupérer ? |
|
| |
Herdge Très bonne participation
Messages : 164
| Sujet: Re: Bomberman Dim 4 Mai 2014 - 19:53 | |
| Ha non je viens de comprendre en fait tu mets l'id du créateur dans obomb.maker et tu le récupère ensuite. |
|
| |
Herdge Très bonne participation
Messages : 164
| Sujet: Re: Bomberman Lun 5 Mai 2014 - 23:56 | |
| Je voudrais que si l'objet oFire entre en collision avec l'objet oBomb qu'il se détruise mais réduise le chrono à 1 j'ai donc mis dans le Step de oBomb : if(place_meeting(x, y, oFire)) { with(other) instance_destroy() alarm[0] = 1 }
Pourtant cela ne détruit pas oFire mais oBomb qui disparait avant que son chrono n'atteigne 0. Une explication ? |
|
| |
hyper Utilisateur confirmé: Rang ****
Messages : 1458 Localisation : près de Nantes Projet Actuel : Super Note Aventure
| Sujet: Re: Bomberman Mar 6 Mai 2014 - 8:03 | |
| Je crois que le "other" ne fonctionne pas dans Step, juste dans l'event de collision. _________________ côt.
|
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Bomberman Mar 6 Mai 2014 - 9:22 | |
| Ouaip tu utilises mal other (on peut aussi l'utiliser depuis l'interieur d'un with pour récupérer l'id de l'instance qui l'a appelé). - Code:
-
ins = instance_place(x, y, oFire) if(ins) { with(ins) { instance_destroy() } alarm[0] = 1 } |
|
| |
Herdge Très bonne participation
Messages : 164
| Sujet: Re: Bomberman Mar 6 Mai 2014 - 20:01 | |
| |
|
| |
Herdge Très bonne participation
Messages : 164
| Sujet: Re: Bomberman Jeu 8 Mai 2014 - 15:35 | |
| J'aimerais que lorsque les sprites d'explosions se croisent que ce soit le dernier créé qui passe au premier plan. Est qu'il y a une manière simple de mettre ça en place (car actuellement c'est plutôt l'inverse qui se produit) ? |
|
| |
Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: Re: Bomberman Jeu 8 Mai 2014 - 15:43 | |
| Si tu utilise un objet par explosion, normalement le dernier objet crée devrait se trouver par dessus. _________________ <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
|
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Bomberman Jeu 8 Mai 2014 - 16:11 | |
| Tu peux faire mieux, fusionner les explosions avec une vérification de collision et destruction puis recréation de l'image commune au deux. |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Bomberman Jeu 8 Mai 2014 - 17:03 | |
| Ah bah tiens, tu viens de m'apprendre un truc là Je pensais qu'on pouvait pas créer de ressources à la volée avec GM, mais en cherchant dans la doc on peut grâce aux surfaces ! Mais pour autant dans ce cas là c'est rentable en temps d'exécution ? J'ai jamais utilisé les surfaces avec GM, donc je sais pas si c'est long, mais quand j'utilisais du contenu créé dynamiquement en java, c'était vraiment pour de longues opérations (genre texturer les sols et murs de mes immeubles), ici c'est vraiment utile ? _________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
|
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Bomberman Jeu 8 Mai 2014 - 19:40 | |
| Non mais la les images fusionnées existent déjà dans un sprite en fait, il faut juste récupérer les coordonnées :p
Et sinon oui les surfaces c'est très rapide et ça permet de faire des fusion d'images dans le sens dont tu l'entends avec de très bonnes perfs. Une surface c'est juste un moyen de faire un rendu offscreen, dessiner dans une surface est aussi rapide que dessiner a l'écran.
|
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Bomberman Jeu 8 Mai 2014 - 19:51 | |
| Ah oui, j'avais pas fait gaffe au fait que c'était ton moteur ^^' D'accord, merci ! _________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
|
|
| |
Herdge Très bonne participation
Messages : 164
| Sujet: Re: Bomberman Jeu 8 Mai 2014 - 23:24 | |
| Merci vous auriez pas un exemple simple pour l'utilisation des surfaces par hasard ? |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Bomberman Jeu 8 Mai 2014 - 23:50 | |
| Oublie les surfaces, pour le cas des explosions de bomberman, si t'utilises un truc comme dans mon engine (et donc les sprites officiels) tu peux faire un faux assemblage: colonne verticale + horizontale: centre bout gauche + colonne horizontale: colonne horizontale etc etc Ça nécessite d'ajouter des 'coins' par contre, mais rien de terrible a dessiner |
|
| |
Herdge Très bonne participation
Messages : 164
| Sujet: Re: Bomberman Ven 9 Mai 2014 - 10:45 | |
| Et comment tu détectes et vérifies la collision entre morceaux du même sprite. Y-a-t-il une fonction pour cela ? Sinon comment s'y prendre ? |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Bomberman Ven 9 Mai 2014 - 11:19 | |
| Chaque bout d'explosion a un masque carré, il suffit donc de tester si une instance du même object se trouve sur elle avec instance_place, tu récupères son id, tu crée une instance avec les même propriétés (mais tu change les propriétés de coordonnée de texture) et tu détruit id ainsi que l'instance courante. |
|
| |
Herdge Très bonne participation
Messages : 164
| Sujet: Re: Bomberman Ven 9 Mai 2014 - 17:42 | |
| Je commence à mettre des sons sur les actions et je rencontre un problème. Je voudrais que lorsque plusieurs bombes explosent en même temps un seul son se déclenche (afin d'éviter que l'explosion deviennent très forte). Existe-t-il une fonction pour vérifier le temps d'un sample ou avez vous une idée pour y remédier ? Par contre je souhaiterais que le sample puisse se déclencher s'il y a un décalage dans le temps même s'il est en train d'être entendu. |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Bomberman Ven 9 Mai 2014 - 17:44 | |
| Bah ca sert à rien ton machin, si c'est exactement en même temps ton truc sera pas pour autant 2x plus fort. _________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
|
|
| |
Herdge Très bonne participation
Messages : 164
| Sujet: Re: Bomberman Ven 9 Mai 2014 - 23:10 | |
| Ben en fait si. Alors peut être qu'il y a une frame d'écart mais avec 4 explosions en même temps ça commence même à saturer. |
|
| |
Herdge Très bonne participation
Messages : 164
| Sujet: Re: Bomberman Dim 11 Mai 2014 - 10:53 | |
| Personne n'a d'idée pour remédier à ce petit problème ? |
|
| |
chopsuey Utilisateur confirmé: Rang ***
Messages : 523 Localisation : saint etienne Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...
| Sujet: Re: Bomberman Dim 11 Mai 2014 - 12:36 | |
| Si térence le volume augmente jusqu’à saturation.
essayes ça:
if ! sound_isplaying(sound) { sound_play(sound) } _________________ - Spoiler:
|
|
| |
Contenu sponsorisé
| Sujet: Re: Bomberman | |
| |
|
| |
| Bomberman | |
|