AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 [Résolu] ressources pour apprendre les surfaces

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Black_cat
Bonne participation
avatar

Messages : 71
Projet Actuel : https://www.youtube.com/playlist?list=PLrJ_sOwnC_FmBql7bimmXplsVcyDbZCVh

MessageSujet: [Résolu] ressources pour apprendre les surfaces   Mar 17 Fév 2015 - 19:04

Rebonjour à tous! Smile

voilà, depuis quelques temps maintenant, je tente de m'intéresser au principe des surfaces dans Game Maker Studio, mais je n'y comprends décidément rien... ><

Je comprends les grandes grande lignes, mais je suis incapables de comprendre les subtilités de la plupart des choses.

Actuellement dans mon jeu, j'ai un système lighting basic, et j'ai fait un système de pause basic aussi. Les deux se traitent à l'aide de surfaces, et ce qui devait arriver est arrivé, c'est à dire que mes deux surfaces entrent en conflit, changeant des choses l'une avec l'autre... bref c'est le merdier...

Plutôt que de tripatouiller comme un gros dégueulasse, je préférerai bien comprendre comment tout ça marche de A à Z !
Seulement, je ne trouve aucun tuto complet où que ce soit... :/

Comme je suis plutôt de bonne volonté, j'ai tenté de regarder toutes les lignes de code que je trouve dans le manuel du soft, sauf que franchement, c'est incompréhensible...
Rien que pour la fonction "surface_create", l'explication fournie - et j'ai eu beau la relire 60 fois sans que ça ne change quoi que ce soit - est totalement incompréhensible prise de façon indépendante.
Et j'ai beau regarder partout sur le net, que ce soit en Français ou en Anglais, en écris ou en vidéo... il n'y a rien de rien, ou des bribes par-ci par-là qui collées ensemble ne veulent rien dire, ou pire se contredisent :/

J'en appelle donc à votre grand savoir !
Connaîtriez-vous des ressources - de préférence en Français, ou sinon en Anglais - expliquant le principe des surfaces dans sa globalité, ou du moins en grande partie ?

Merci beaucoup de me sauver une nouvelle fois! Very Happy


Dernière édition par Black_cat le Dim 1 Mar 2015 - 12:03, édité 1 fois
Revenir en haut Aller en bas
https://www.youtube.com/user/sundayindiegames
Mamie Wawa
Très bonne participation


Messages : 112

MessageSujet: Re: [Résolu] ressources pour apprendre les surfaces   Mar 17 Fév 2015 - 19:33

La fonction surface_create permet comme son nom l'indique de créer une surface de la taille que tu veux ( la taille de ta room, la taille d'un sprite, etc.... x/y )
Une fois que tu as créé ta surface tu peux dessiner dessus a l'aide de la fonction surface_set_target(surf); tu y mets tes draw functions ( dras_sprite ,etc .. ) pus tu reset la cible sur la quelle tu dessines ( donc la surface ) à l'aide de surface_set_reset();

Pour dessiner après ta surface tu le fais simplement avec draw_surface ( ou draw_surface_ext pour l'étirer ou autres )

Je te conseil de t'habituer à déjà utiliser les choses les plus simples et les surfaces avant de vouloir bricoler 2 script que tu as surement trouvé sur le net :p
J'ai personnellement un système de pause ( avec surfaces aussi ) et de surfaces lightning ( même beaucoup ) dans mon jeu et elles cohabitent parfaitement, parfois il faut simplement désactivé un objet qui contrôle une surface pour ne pas qu'elle fasse des misère sur d'autres
Revenir en haut Aller en bas
Black_cat
Bonne participation
avatar

Messages : 71
Projet Actuel : https://www.youtube.com/playlist?list=PLrJ_sOwnC_FmBql7bimmXplsVcyDbZCVh

MessageSujet: Re: [Résolu] ressources pour apprendre les surfaces   Mar 17 Fév 2015 - 19:38

Merci pour ta réponse mamie Wawa !
Ce que tu décris dans ton message me confirme bien que j'avais bien compris le principe de base, et ça c'est déjà chouette Smile
Après il me manque pas mal de connaissances de tous les draw etc. pour maîtriser tout ce que je veux faire.
Rien que l'ordre des fonctions est apparemment super important, et pourtant j'ai toujours l'impression que c'est random total... ><

C'est pour ça que je cherche vraiment un "cours" pour bien tout comprendre dans l'ordre Smile
Revenir en haut Aller en bas
https://www.youtube.com/user/sundayindiegames
Mamie Wawa
Très bonne participation


Messages : 112

MessageSujet: Re: [Résolu] ressources pour apprendre les surfaces   Mar 17 Fév 2015 - 19:50

Pour l'ordre des draw fonctions ( et même d'autres ) dit toi c'est comme un gâteau que tu fais par couche et que tu vois de haut, tu fais des couches mais au final tu verras que celle du haut, c'est pareil ;

Code:

draw_rectangle_colour(0,0,50,50,c_white,c_white,c_white,c_white,false); // dessine un carré blanc plein
draw_rectangle_colour(0,0,50,50,c_black,c_black,c_black,c_black,true); // Dessine un carré noir vide ( juste un "cadre" donc )

au final on verra donc un carré blanc avec un cadre noir

Par contre si tu avais fait l'inverse, le jeu aurait dessiné le carré blanc APRES le carré noir donc on n'aurait pas pu voir le cadre noir


Je te conseil de lire la documentation sur les draw functions et de les utiliser ( mêmes si c'est pour faire pas grand chose, au moins comprendre comment ça fonctionne )

Essaye de faire des cercle, des rectangles, des carrés, varie les couleurs voir comment ça change, etc..
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

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

MessageSujet: Re: [Résolu] ressources pour apprendre les surfaces   Mar 17 Fév 2015 - 20:19

Au cas ou tu ne l'aurais pas vu:
http://cbna.forumactif.com/t11324-tutoriel-les-surfaces

Sinon une surface ce n'est rien de compliqué. Il s'agit de faire un rendu offscreen, et cela se fait en 4 grandes étapes:

-créer "l'écran" virtuel en définissant sa taille (cet écran est techniquement une texture spéciale)
-dire que l'on veux changer "d'écran" ou dessiner
-dessiner
-revenir a "l'écran" précédent

Il ne faut bien sur pas oublier de détruire la surface une fois utilisée... car ça cause une fuite de vram sinon.

Attention aussi, on ne dessine jamais dans une surface pendant un draw event. GM n'aime pas du tout ça.

_________________
                 
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

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

MessageSujet: Re: [Résolu] ressources pour apprendre les surfaces   Mar 17 Fév 2015 - 20:30

Pour l'ordre d'affichage, il dépend de deux facteurs effectivement.
Comme Wawa l'a dit, ça marche "de haut en bas". Mais en réalité, c'est légèrement plus compliqué.

En fait, quand tu dessines sur l'écran, il faut prendre en compte deux choses:
-la destination (l'écran ou la surface ou tu dessines)
-la source (ce que tu vas dessiner)

A ce moment la, il va se passer une opération mathématique, qui, par défaut, va permettre de dessiner quelque chose de manière logique. Par exemple si tu dessines un sprite, la ou c'est transparent ça ne vas pas effacer la destination, mais ne rien dessiner, et la ou c'est opaque ça va remplacer les pixels.
En fait, c'est le blend mode qui définis cette étape du rendu.
Tu peux changer les règles de dessin lorsque tu appliques une source sur une destination en changeant les paramètres de blending: http://cbna.forumactif.com/t10259-tutoriel-le-blend-mode-en-long-et-en-large

Attention cependant, certains blendmodes ne peuvent pas être "cumulés" en étapes de dessins.

Aussi, selon que tu utilises ou non un depth buffer, tu peux dessiner quelque chose avant une autre, mais faire en sorte que cette chose soit affichée par dessus. Sous GM il vaux mieux éviter de s'amuser avec le depth buffer, car les surfaces ne sont (de souvenir) pas compatible avec (mais ça a peut être évolué depuis).
Techniquement, le depth buffer permet d'assigner a chaque vertex que tu dessines a l'écran une profondeur, et a faire ensuite le tris entre tes affichage (du coup c'est plus gourmand d'en utiliser un, et ça sert généralement uniquement pour la 3d).


En plus de tout ça, GM effectue le draw des instances par ordre de depth de celle ci.
Plus une depth est petite, plus basse sa priorité d'affichage est (l'instance dessine donc par dessus les autres objets qui ont une depth plus grande).

_________________
                 
Revenir en haut Aller en bas
Black_cat
Bonne participation
avatar

Messages : 71
Projet Actuel : https://www.youtube.com/playlist?list=PLrJ_sOwnC_FmBql7bimmXplsVcyDbZCVh

MessageSujet: Re: [Résolu] ressources pour apprendre les surfaces   Jeu 19 Fév 2015 - 16:40

Wow, merci beaucoup pour toutes ces explications mamie wawa et onilink_ ! Very Happy
Même si tout n'est pas super claire dans ma tête, ça va me permettre de dégrossir au moins les choses et de repartir sur des bases saines en compréhension.

Et en effet... j'étais complètement passé à côté du tuto dans le forum... honte à moi ! Sad

Il ne me reste plus qu'à potasser tout ça avec les ressources à ma disposition, et ces précieuses réponses très détaillées.

Merci encore, si avec ça je comprends pas, c'est que mon cas est désespéré :p
Revenir en haut Aller en bas
https://www.youtube.com/user/sundayindiegames
Black_cat
Bonne participation
avatar

Messages : 71
Projet Actuel : https://www.youtube.com/playlist?list=PLrJ_sOwnC_FmBql7bimmXplsVcyDbZCVh

MessageSujet: Re: [Résolu] ressources pour apprendre les surfaces   Dim 1 Mar 2015 - 0:10

Hello,

bon j'ai pas mal avancé sur les surfaces, et je commence à bien comprendre comment ça marche grâce à vous ! Smile

Par contre je suis confronté à un soucis que je n'arrive pas du tout à résoudre.
Lorsque j'affiche mon écran pause, celui-ci passe en dessous certains objets, et par dessus d'autres... et vrai truc de dingue... :/

Voici l'écran sans la pause :
http://puu.sh/gh3vO/462b1da4a8.jpg

Et voici l'écran avec la pause :
http://puu.sh/gh3yx/31f9ebe596.jpg

On voit bien au niveau des torches que certaines sont dessus, et d'autres dessous... ce qui est parfaitement illogique puisque le depth est le même sur toutes vu que ce sont des instances...
Donc je pense que le depth n'intervient pas dans les surfaces... mais alors que quoi qu'est-ce??? Oo

De plus mon sol devient transparent, et mon HUD change de couleur... bref, je commence à devenir dingue avec ces surfaces... ><
Revenir en haut Aller en bas
https://www.youtube.com/user/sundayindiegames
glcraft
Utilisateur confirmé: Rang *****
avatar

Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

MessageSujet: Re: [Résolu] ressources pour apprendre les surfaces   Dim 1 Mar 2015 - 6:14

Les surfaces n'agissent pas sur le depth et n'agissent pas non plus sur les objets. Celle ci agit directement sur les draw que tu lui as ordonné.
Par exemple : 

Code:
set_surface_render(mysurface) // je me souviens plus du nom de la fonction qui permet permet d'activer le rendu sur la surface
// tout les draw que tu mettras ici seront dessinés dans la surface
draw_text(0,0,"Je suis un texte dessiné uniquement dans la surface");
set_surface_render(0) // on reviens au draw normal, c'est a dire ecran

donc si tu dessines les instances hors de la portée de la surface (entre la ligne 1 et la ligne 4 ici), ceux ci ne seront pas dessinés dans la surface.
il faut que tu trouve un autre moyen, avec une boucle qui répertorie tout les instance d'un objets en particulier puis que tu les dessines par exemple ou te debrouiller avec une surface globale (global.mysurface), ce qui me parait par trop compliqué et plus judicieux.

(tes screens sont jolies Wink )
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
Topaze22
*Excellent utilisateur*
avatar

Messages : 6213
Localisation : Sur la Lune
Projet Actuel : Projet HELLO/TOPAZE22 Mario Bros World

MessageSujet: Re: [Résolu] ressources pour apprendre les surfaces   Dim 1 Mar 2015 - 9:06

Ho mon Dieu un Zelda like ?
Trop joli ! Ca c'est un projet que je suivrais avec grande attention coeur j'aime le style graphique !

Et sinon, bien intéressant toutes les explications car je ne suis pas non plus un pro des surfaces (bien que j'ai eu à traiter plusieurs systèmes avec).
J'en remets une couche concernant les depth : GameMaker dessine les choses dans l'ordre de la variable depth, donc prenons le cas simple ou on dessine un background en fond et un héro en premier plan, il faut bien comprendre que GameMaker dessine tout le background, puis dessine le héro par dessus. Ce qui signifie que pour des questions d'optimisation, il y a un petit "gachi" de performance, mais dans le cas d'un petit sprite d'un héro, on s'en fou, on ne sait pas faire mieux, mais ça veut aussi dire que la zone du background qui se trouve derrière le hero n'est plus accessible, tu ne peux donc plus APRES coup essayer d'y appliquer un effet [puisque MAINTENANT c'est le héro qui y est dessiné].

L'ordre des Events est le plus important, ensuite, c'est l'ordre des depth, si je ne dis pas de conneries.
Déjà, as tu bien compris cela ? Si oui, ça veut dire que tu as atteints déjà un bon niveau, parce que les surfaces, ce n'est pas à la porté du premier venu et c'est très important aussi de comprendre dans quel ordre les choses se passe dans GameMaker.

_________________
Topique pour le Projet Hello Mario en préparation.
Sorti du topique lorsque la première démo sera disponible.
Revenir en haut Aller en bas
Black_cat
Bonne participation
avatar

Messages : 71
Projet Actuel : https://www.youtube.com/playlist?list=PLrJ_sOwnC_FmBql7bimmXplsVcyDbZCVh

MessageSujet: Re: [Résolu] ressources pour apprendre les surfaces   Dim 1 Mar 2015 - 11:00

Merci infiniment pour vos réponses glcraft et Topaze22 !
Grâce à vos explications supplémentaires, j'ai pu mieux orienter mes recherches et approfondir les bons éléments théoriques.
Du coup j'ai enfin pu mettre la main sur ce qui n'allait pas ! Smile

En fait, une chose que je ne comprenais pas est que lorsqu'on fait un draw_set_alpha() avec une valeur d'opacité, il faut la réinitialiser à 1 à la fin sinon ça sort de la surface et ça s'applique sur tout un peu au hasard...
J'ai du mal à comprendre la logique derrière ça, mais c'était bien ça qui me faisait de la *****.

Selon moi, tout ce qui se trouve entre surface_set_target() et surface_reset_target() devrait être complètement isolé et ne concerner que la surface, mais dans les faits c'est loin d'être le cas.
En effet, tout les draw à l'intérieur sont faits sur la surface, mais si on ne réinitialise pas les différentes valeurs avant le reset, ça impacte aussi le reste de l'affichage.

Encore une fois je trouve ça étrange, mais soit... maintenant que j'ai compris ça, plus aucun soucis Smile

En tout cas merci pour vos commentaires positifs sur le jeu. il me reste encore beaaaaaucoup de boulot avant la sortie d'une démo jouable, mais c'est sur la bonne voie Smile
Revenir en haut Aller en bas
https://www.youtube.com/user/sundayindiegames
onilink_
Modérateur
avatar

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

MessageSujet: Re: [Résolu] ressources pour apprendre les surfaces   Dim 1 Mar 2015 - 11:07

Oui les couleurs d'affichage sont globales, et pas liées uniquement a la cible de rendu.

_________________
                 
Revenir en haut Aller en bas
Black_cat
Bonne participation
avatar

Messages : 71
Projet Actuel : https://www.youtube.com/playlist?list=PLrJ_sOwnC_FmBql7bimmXplsVcyDbZCVh

MessageSujet: Re: [Résolu] ressources pour apprendre les surfaces   Dim 1 Mar 2015 - 11:15

Oh purée, ok !!
Je n'avais en effet jamais compris ça, et ça explique beaucouuup de choses...

Bon bah un grand mystère de résolu.
Je vais tâcher de garder ça en tête pour m'éviter ce genre de déconvenues Smile
Merci de me confirmer ça onilink_ !
Revenir en haut Aller en bas
https://www.youtube.com/user/sundayindiegames
Topaze22
*Excellent utilisateur*
avatar

Messages : 6213
Localisation : Sur la Lune
Projet Actuel : Projet HELLO/TOPAZE22 Mario Bros World

MessageSujet: Re: [Résolu] ressources pour apprendre les surfaces   Dim 1 Mar 2015 - 12:02

Onilink m'a devancé ouh
Oui, le draw_alpha n'est pas local, tout les draw qui suivront seront avec la même valeur du draw_alpha donc à remettre à =1.

Pense à mettre "Résolu" dans le titre de ton topique

_________________
Topique pour le Projet Hello Mario en préparation.
Sorti du topique lorsque la première démo sera disponible.
Revenir en haut Aller en bas
Black_cat
Bonne participation
avatar

Messages : 71
Projet Actuel : https://www.youtube.com/playlist?list=PLrJ_sOwnC_FmBql7bimmXplsVcyDbZCVh

MessageSujet: Re: [Résolu] ressources pour apprendre les surfaces   Dim 1 Mar 2015 - 12:03

Yep, et même chose pour les couleur et tout un tas de choses...
C'est dingue le nombre de soucis que je peux résoudre d'un coup rien qu'en ayant compris ça :p

Je passe donc le sujet en résolu.
Merci encore beaucoup pour votre aide précieux Smile
Revenir en haut Aller en bas
https://www.youtube.com/user/sundayindiegames
Contenu sponsorisé




MessageSujet: Re: [Résolu] ressources pour apprendre les surfaces   

Revenir en haut Aller en bas
 
[Résolu] ressources pour apprendre les surfaces
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» un peu d'aide pour apprendre le français
» pour apprendre à se maquiller
» un lien pour apprendre les noeuds de portage
» Se motiver pour apprendre
» pour ou contre le trotteur ???

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: