GameMaker - FAQ

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.
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

Ma foi, mettre l'ombre dans le PNG c'est loin d'être une mauvaise idée !

Encore merci pour tes réponses qui m'aident chaque fois un peu plus :)
"... don't be there, or you gonna get drilled !"
Avatar de l’utilisateur
psychogore
1 crédit c'est déjà trop
Messages : 2357
Inscription : 23 mai 2003, 09:04

perso, je serais plus partisan de l'affichage de l'ombre dans la methode draw.
En effet, il y a moyen, en fonction de l'altitude supposée de l'objet, de zoomer ou dezoomer cette ombre, ou de la decaler pour renforcer l'effet de profondeur.

Et en plus, si 2 ennemis se touchent en ayant l'ombre comme partie du sprite, ça va faire bizarre...
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

J'y réfléchirais surement en temps voulu à mon avis quand il sera question d'optimisation.

Après quand je vois les ombres dans les caves qui s'affiche sur... du vide ? Je me dis que c'est de l'ordre du détail. :mrgreen:
"... don't be there, or you gonna get drilled !"
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

J'essaye de passer le jeu en 60 fps et comme prévu j'ai des déplacements de 0.5 à faire. Manque de bol pour moi ça marche pas. Faut définir les variables d'une manière particulière ? J'ai le souvenir que sous processing il y avait une distinction int/float si c'était des nombres entiers ou pas.
"... don't be there, or you gonna get drilled !"
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Moi pas comprendre...
Soit tu t'y prend mal, soit effectivement, c'est pas possible...

Mais ce qui me surprend, c'est que j'arrive à avoir des valeur de déplacement de type float pour un step.

Quand je met en place de l'inertie, y a un minimum de friction et celle-ci n'est jamais parfaitement entière... Je me retrouve généralement avec une vitesse en float et rarement sur des trajectoires rectilignes. Et j'utilise ces données de type float sans les arrondir. J'ai testé avec des valeurs arrondies, et ca donne parfois des déplacements étranges que je ne veux pas :)

j'ai déjà eu des friction de l'ordre du 0.2 et aucun soucis pour les vitesses entre 1 et 0 px/step.
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.
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

Y'a peut être eu un problème quelque part, j'y rejetterais un oeil demain.
Mais tu déclare la variable en question comme float ou GM fait ça tout seul ?

Edit : Alors en effet je viens de tester un déplacement tout bête de 0.5 et ça marche. Probablement des interactions qui ont fait merder le truc. Je ressayerais ça demain pour voir où ça a merdé.
"... don't be there, or you gonna get drilled !"
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

GM considère toute les variable signed float.
Ca évite de devoir spécifier.
Mais on peut très bien direà GM que telle ou telle variable est un entier relatif ( toutes les variables seront signées )
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.
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

C'est noté :)
Verdict demain ! :binouze:
"... don't be there, or you gonna get drilled !"
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

Alors je viens de faire des tests, aucun problème pour faire bouger un objet de 0.5, par contre impossible de faire bouger ma view de 0.5.

view_yview[0] -= 0.5;

Ça, ça marche pas. :grrr:

T'as une idée ou je vais être obligé de faire défiler mon background plutôt que ma view ?

EDIT :
Visiblement gamemaker sait pas faire ça, du coup j'ai bidouillé ça :

Code : Tout sélectionner

 
if(BLABLABLA)
    view_yview[0] -= 1;

else
    {
    if(incre==true)
       {
       view_yview[0] -= 1;
       incre=false
       }
    else
       incre=true
    }
Je mérite un supplice pour un affront pareil ? :grr:
Dernière modification par back le 02 déc. 2010, 17:19, modifié 1 fois.
"... don't be there, or you gonna get drilled !"
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Fait un objet que la view suivra.
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.
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

:binouze:
"... don't be there, or you gonna get drilled !"
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

*rien*
Dernière modification par back le 10 déc. 2010, 21:37, modifié 1 fois.
"... don't be there, or you gonna get drilled !"
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

C'est pas le bon topic :P
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.
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

Bien vu
"... don't be there, or you gonna get drilled !"
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

C'est possible de faire une barre de progression en disque (genre chronomètre) sans s’embêter à faire ça en frame par frame ?

genre ça :
Image
"... don't be there, or you gonna get drilled !"
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Oui c'est possible...
Un peu complexe cela dit. Et comme j'ai jamais travaillé la dessus, je peux pas te donner une solution toute faite.

Il doit etre possible de partir d'un rayon de cercle, et de dessiner un sprite en faisant subir une rotation à ton rayon...

Je serai parti sur cette idée pour ma part.

En fait, c'est le principe justement de la montre, sauf que tu n'effaces pas la position des aiguilles précédentes :D
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.
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

Avec un système de masque ça serait peut être plus simple...

J'essayerais de faire une recherche plus approfondie sur les forums ce soir :)
"... don't be there, or you gonna get drilled !"
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15772
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

Si je faisait une jauge...


Vu que tu peux définir l'index du sprite en fonction d'actions, ça te donne un truc complêtement réglable !

J'aurai fait un sprite qui effectue son cycle (pendant ou en fonction de un tir/bonus glané/charge etc...)

Et inversement quand tu largue la bombe ou le tir spécial pour "vider la gauge"


Enfin si tu veux un truc parfaitement fluide, ok le truc dont vous parlez ça devrait faire l'affaire !
ImageImageImage
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

Mais un sprite qui fait un simple cycle il peut garder affiché chacune de ses positions ?

Sinon j'ai trouvé un script pour tracer des camemberts. Mais du coup on peux ajouter un masque par dessus pour avoir un filet et pas un disque ?
"... don't be there, or you gonna get drilled !"
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15772
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

Oui je pense, ça doit pouvoir se faire avec une animation à zéro de là tu peux traiter les frames de façon indépandante...hein Gunny ?
ImageImageImage
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

Bon j'ai essayé le script que j'ai linké plus haut et ça marche pas mal :

Image

Bon c'est pas un filet mais un disque.
Pour le moment c'est pas très beau mais au moins ça marche.
Par contre plus ça va et plus j'ai des petits lags pas très catholiques qui ne sont pas liés à la quantité de boulettes.

Edit : En fait je l'ai pas du tout linké, le voilà : http://forums.yoyogames.com/forums/10/t ... 748?page=2
"... don't be there, or you gonna get drilled !"
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

pour ce qui est de la technique de sprite, Alec a pu voir ce que j'avais fait, c'est complexe et simple à la fois :))

Au préalable :
1) Un sprite animé avec toutes les étapes d'animation nécessaire
2) Un peu de math sur les angles

Le code :

Code : Tout sélectionner

{
if (dir > 359)
    {
        dir=0;
    }
else if (dir < 0 )
    {
        dir=359;
    }
subimage=dir/6;
draw_sprite(sprite_joueur,subimage,x,y);
}
J'ai mis ca dans le draw event de mon objet voiture.
La variable dir est la rotation actuelle de l'objet.
subimage est une variable pour savoir quelle image à l'intérieur de mon animation je vais afficher comme image courante de mon objet. (je divise dir par 6 car mon animation est de 360/6 images ;) )

Le if/else sert juste à mettre des limites sur la variable dir sinon je me retrouve avec des problèmes ^^

edit : l'affichage d'un sprite est plus rapide que de dessiner en temps réel un sprite...
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.
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

Ca m'a l'air pas mal, par contre l'idée c'est de supprimer le sprite au fur et à mesure et pas l'afficher. C'est possible une boucle qui "déaffiche" du coup ?
"... don't be there, or you gonna get drilled !"
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Tu cherches pas dans la bonne direction ^^

Regarde bien comment j'ai fait, la première partie me sert à calculer l'image que je dois afficher, la seconde partie me permet de sélectionner l'image dans le sprite animé à afficher.

(En fait, il manque un gros bout de la première partie, tout ce qui concerne la variable dir, mais c'est pas vraiment important ici ^^ )

Cherche un peu.
Si tu as trouvé le mécanisme pour afficher la bonne image au bon moment, l'inverse est très facile aussi ;)
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.
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

J'essaye de m'y remettre un peu et j'avais lu complètement le code de travers.

En fait le code que tu utilises c'est celui que je comptais faire au début, mais que j'ai finalement abandonné car j'avais la flemme de dessiner pleins d'étapes.

Enfin bon, je crois que je vais quand même devoir m'y coller :)
"... don't be there, or you gonna get drilled !"
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

C'est la méthode la plus efficace, meme si pas la plus rapide à produire...
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.
kigahen_usagi
Mou-Stick
Messages : 13
Inscription : 01 nov. 2010, 11:30
Localisation : Rennes
Contact :

Gunny a écrit : 2) Un peu de math sur les angles

Le code :

Code : Tout sélectionner

{
if (dir > 359)
    {
        dir=0;
    }
else if (dir < 0 )
    {
        dir=359;
    }
subimage=dir/6;
draw_sprite(sprite_joueur,subimage,x,y);
}
juste

Code : Tout sélectionner

dir=dir mod 360;
subimage=dir/6;
draw_sprite(sprite_joueur,subimage,x,y);
c'est pas grand chose mais ça peut faire la différence niveau performance :p
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

Good, finalement 16 étapes ça suffit pour avoir une idée précise du timming.
J'ai utilisé ta technique "à la main", mais le principal c'est que ça marche bien.

Image
"... don't be there, or you gonna get drilled !"
back
Empereur Bydo
Messages : 3622
Inscription : 16 mars 2010, 22:54
Localisation : Seoul

Rassures-moi Gunny, c'est possible de créer deux systèmes de particules différents ?

J'en ai créé 2 avec aucun noms de variables communes et 2 sprites différents, mais le second mange le premier. (J'ai le même sprite pour les deux !)
"... don't be there, or you gonna get drilled !"
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Oui c'est possible !

Je ne sais pas comment est ton code, mais ca ressemble à un problème d'ID de système de particule passé à l'emitter.

J'ai déjà utilisé plusieurs système de particules sur un même objet ( je superposais les effets pour voir si je pouvais avoir quelque chose d'intéressant ^^ )

En général, on utilise un ou plusieurs emitter par système de particule. ( pour faire varier la direction, la vie d'une particule... on met ca dans l'emitter )
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