AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Bomberman

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2, 3  Suivant
AuteurMessage
Herdge
Très bonne participation
avatar

Messages : 164

MessageSujet: Bomberman   Jeu 1 Mai 2014 - 8: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 !
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8898
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Bomberman   Jeu 1 Mai 2014 - 9: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?  awesome ).
Pour ça, y a pas de magie, il faut connaître les opérateurs binaires afin de savoir extraire un bit d'information: http://cbna.forumactif.com/t10188-tutoriel-les-operateurs-binaires


Bon 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.gm6

Après il est peut être un peu plus compliqué a comprendre :p

_________________
                 
Revenir en haut Aller en bas
Herdge
Très bonne participation
avatar

Messages : 164

MessageSujet: Re: Bomberman   Jeu 1 Mai 2014 - 10: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.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8898
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Bomberman   Jeu 1 Mai 2014 - 10: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 Razz

_________________
                 
Revenir en haut Aller en bas
Herdge
Très bonne participation
avatar

Messages : 164

MessageSujet: Re: Bomberman   Jeu 1 Mai 2014 - 10: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.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8898
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Bomberman   Jeu 1 Mai 2014 - 11:01

Menu Scripts > Show built-in variables > toutes les local:xxx.

_________________
                 
Revenir en haut Aller en bas
Herdge
Très bonne participation
avatar

Messages : 164

MessageSujet: Re: Bomberman   Jeu 1 Mai 2014 - 15:16

La bible du code Very Happy ! 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 !
Revenir en haut Aller en bas
chopsuey
Utilisateur confirmé: Rang ***
avatar

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
...

MessageSujet: Re: Bomberman   Jeu 1 Mai 2014 - 19:12

Sinon au cas oû tu ne serrais pas au courant la vrai bible s'ouvre avec F1.

_________________
Spoiler:
 
Revenir en haut Aller en bas
Herdge
Très bonne participation
avatar

Messages : 164

MessageSujet: Re: Bomberman   Jeu 1 Mai 2014 - 20:41

Oui je connaissais mais je ne trouvais pas le verset sur les variable build-in. Wink
Revenir en haut Aller en bas
Herdge
Très bonne participation
avatar

Messages : 164

MessageSujet: Re: Bomberman   Dim 4 Mai 2014 - 17: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 ?
Revenir en haut Aller en bas
Herdge
Très bonne participation
avatar

Messages : 164

MessageSujet: Re: Bomberman   Dim 4 Mai 2014 - 17: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.
Revenir en haut Aller en bas
Herdge
Très bonne participation
avatar

Messages : 164

MessageSujet: Re: Bomberman   Lun 5 Mai 2014 - 21: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 ?
Revenir en haut Aller en bas
hyper
Utilisateur confirmé: Rang ****
avatar

Messages : 1431

MessageSujet: Re: Bomberman   Mar 6 Mai 2014 - 6:03

Je crois que le "other" ne fonctionne pas dans Step, juste dans l'event de collision.

_________________
côt.
Revenir en haut Aller en bas
https://hyperdev.wordpress.com/
onilink_
Modérateur
avatar

Messages : 8898
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Bomberman   Mar 6 Mai 2014 - 7: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
}

_________________
                 
Revenir en haut Aller en bas
Herdge
Très bonne participation
avatar

Messages : 164

MessageSujet: Re: Bomberman   Mar 6 Mai 2014 - 18:01

Ok pigé. Merci !
Revenir en haut Aller en bas
Herdge
Très bonne participation
avatar

Messages : 164

MessageSujet: Re: Bomberman   Jeu 8 Mai 2014 - 13: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) ?
Revenir en haut Aller en bas
Asu
Utilisateur confirmé: Rang ****
avatar

Messages : 895

MessageSujet: Re: Bomberman   Jeu 8 Mai 2014 - 13: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
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8898
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Bomberman   Jeu 8 Mai 2014 - 14: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.

_________________
                 
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: Bomberman   Jeu 8 Mai 2014 - 15:03

Ah bah tiens, tu viens de m'apprendre un truc là Razz
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.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8898
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Bomberman   Jeu 8 Mai 2014 - 17: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.

_________________
                 
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: Bomberman   Jeu 8 Mai 2014 - 17: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.
Revenir en haut Aller en bas
Herdge
Très bonne participation
avatar

Messages : 164

MessageSujet: Re: Bomberman   Jeu 8 Mai 2014 - 21:24

Merci vous auriez pas un exemple simple pour l'utilisation des surfaces par hasard ?
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8898
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Bomberman   Jeu 8 Mai 2014 - 21: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 Razz

_________________
                 
Revenir en haut Aller en bas
Herdge
Très bonne participation
avatar

Messages : 164

MessageSujet: Re: Bomberman   Ven 9 Mai 2014 - 8: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 ?
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8898
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Bomberman   Ven 9 Mai 2014 - 9: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.

_________________
                 
Revenir en haut Aller en bas
Herdge
Très bonne participation
avatar

Messages : 164

MessageSujet: Re: Bomberman   Ven 9 Mai 2014 - 15: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.
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: Bomberman   Ven 9 Mai 2014 - 15: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.
Revenir en haut Aller en bas
Herdge
Très bonne participation
avatar

Messages : 164

MessageSujet: Re: Bomberman   Ven 9 Mai 2014 - 21: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.
Revenir en haut Aller en bas
Herdge
Très bonne participation
avatar

Messages : 164

MessageSujet: Re: Bomberman   Dim 11 Mai 2014 - 8:53

Personne n'a d'idée pour remédier à ce petit problème ?  triste 
Revenir en haut Aller en bas
chopsuey
Utilisateur confirmé: Rang ***
avatar

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
...

MessageSujet: Re: Bomberman   Dim 11 Mai 2014 - 10:36

Si térence le volume augmente jusqu’à saturation.

essayes ça:

if ! sound_isplaying(sound)
{
sound_play(sound)
}

_________________
Spoiler:
 
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Bomberman   

Revenir en haut Aller en bas
 
Bomberman
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 3Aller à la page : 1, 2, 3  Suivant

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: