| CBNA Smartlight avec Game Maker Studio | |
|
|
Auteur | Message |
---|
Evilshroom Très bonne participation
Messages : 121 Localisation : .... Projet Actuel : ????????
| Sujet: CBNA Smartlight avec Game Maker Studio Mer 2 Jan 2013 - 5:20 | |
| Bonjour, j'ai essayé de convertir le moteur de Bast dans Game Maker Studio. Mais le petit probleme c'est que les fonctions obsolètes dans GMS le rendent imcompatible avec GMS, et sa me gonfle, car je n'arrive pas a trouver quel est l'équivalent de la fonction «if variable_global_exist» dans GMS... Merci de me dire si vous avez une solution ; Voici un des scripts du moteur de Bast - Code:
-
///// Initialise le système /////
var i;
if !variable_global_exists("sl_viewid") global.sl_viewid = view_current; // Index de la view dans laquelle afficher les effets if !variable_local_exists("sl_tod_active") sl_tod_active = true; // Active/désactive la gestion des éclairages et ombres par le système de cycle jour/nuit if !variable_local_exists("sl_timespeed") sl_timespeed = 0; // Vitesse d'avancement de l'heure if !variable_local_exists("sl_buffer_texturesize") sl_buffer_texturesize = 1; // Facteur de taille du buffer (entre 0 et 1) if !variable_local_exists("sl_maxexposure") sl_maxexposure = 0.5; // Facteur maximal de saturation des lumières
if !variable_local_exists("sl_ambient_color") sl_ambient_color = make_color_rgb(sl_tod[sl_tod_index,1],sl_tod[sl_tod_index,2],sl_tod[sl_tod_index,3]); // Couleur de la lumière ambiante if !variable_global_exists("sl_ambient_light") global.sl_ambient_light = sl_tod[sl_tod_index,4]; // Puissance de la lumière ambiante if !variable_global_exists("sl_lightlist") global.sl_lightlist[0] = -1; // Liste les objets light global.sl_castlist[0,0] = -1; // Liste les valeurs des draw effectués avec SL_cast_sprite global.sl_castlist_index = 0; // Gestion de la liste sl_castlist global.sl_texlist_light[0,0] = -1; // Liste les valeurs des draw effectués avec SL_draw_sprite_light global.sl_texlist_light_index = 0; // Gestion de la liste sl_texlist_light global.sl_texlist_shad[0,0] = -1; // Liste les valeurs des draw éffectués avec SL_draw_sprite_shadow global.sl_texlist_shad_index = 0; // Gestion de la liste sl_texlist_shad
// Variables relatives à la synchronisation affichage/buffer if !variable_local_exists("sl_buffer_sync") sl_buffer_sync = true; if sl_buffer_sync {if !variable_local_exists("sl_buffer_xmargin") { if view_hspeed[global.sl_viewid]>=0 sl_buffer_xmargin=view_hspeed[global.sl_viewid]+5 else sl_buffer_xmargin=10 }; // Marges du buffer if !variable_local_exists("sl_buffer_ymargin") { if view_vspeed[global.sl_viewid]>=0 sl_buffer_ymargin=view_vspeed[global.sl_viewid]+5 else sl_buffer_ymargin=10 }}; else { sl_buffer_xmargin=0 sl_buffer_ymargin=0 }; sl_view_xprevious = view_xview[global.sl_viewid]; // Coordonnées de la view au step précédent sl_view_yprevious = view_yview[global.sl_viewid]; sl_view_xspeed = 0; // Vitesse de déplacement de la view sl_view_yspeed = 0;
// Layers if !variable_local_exists("sl_layers_count") sl_layers_count = 0; // Nombre de layers for (i=0; i<=sl_layers_count; i+=1) sl_layers_surface[i] = surface_create((view_wview[global.sl_viewid]+sl_buffer_xmargin*2)*sl_buffer_texturesize,(view_hview[global.sl_viewid]+sl_buffer_ymargin*2)*sl_buffer_texturesize);
// Variables relatives aux ombres solaires if !variable_local_exists("sl_sunshadows_active") sl_sunshadows_active = false; // Détermine si le rendu des ombres solaires doit être effectué ou non else { if !variable_local_exists("sl_sunshadows_texturesize") sl_sunshadows_texturesize = 0.6; // Facteur de taille des ombres solaires (entre 0 et 1) if !variable_local_exists("sl_sunshadows_quality") sl_sunshadows_quality = 0.4; // Facteur déterminant le nombre de samples composant les ombres solaires (entre 0 et 1) if !variable_local_exists("sl_sunshadows_alpha") sl_sunshadows_alpha = 0.8; // Facteur de transparence des ombres solaires (entre 0 et 1) if !variable_local_exists("sl_sunshadows_alphalimit") sl_sunshadows_alphalimit = 0.6; // Taux de luminosité ambiante minimum pour lequel les ombres solaires sont visibles if !variable_local_exists("sl_sunshadows_margin") sl_sunshadows_margin = 150; // Dimension de la marge des ombres solaires, en pixels if !variable_local_exists("sl_sunshadows_refresh") sl_sunshadows_refresh = true; // Détermine si les ombres solaires sont rafraîchies ou non if !variable_local_exists("sl_sunshadows_refreshrate") sl_sunshadows_refreshrate = 0; // Fréquence de rafraîchissement des ombres solaires, en steps (<=0 pour un rafraîchissement continu) if !variable_local_exists("sl_sunshadows_list") sl_sunshadows_list[0,1] = -1; // Liste les objets projetant une ombre solaire if !variable_local_exists("sl_sunshadows_texlist") sl_sunshadows_texlist[0,1] = -1; // Liste les objets projetant une ombre solaire avec une texture if !variable_local_exists("sl_sunshadows_layerscale") for (i=0; i<=sl_layers_count; i+=1) sl_sunshadows_layerscale[i] = (i+1)*(1/(sl_layers_count+1)); // Facteurs d'étirement des ombres solaires pour les différents layers sl_sunshadows_refreshcounter = sl_sunshadows_refreshrate; // Gestion de la fréquence de rafraîchissement des ombres solaires sl_sunshadows_light = 1; // Gestion de la luminosité des ombres solaires
// Surfaces composant les ombres solaires sl_sunshadows_margin = max(sl_sunshadows_margin,sl_buffer_xmargin,sl_buffer_ymargin); sl_sunshadows_surface1[0] = surface_create((view_wview[global.sl_viewid]+sl_sunshadows_margin*2)*sl_sunshadows_texturesize,(view_hview[global.sl_viewid]+sl_sunshadows_margin*2)*sl_sunshadows_texturesize); sl_sunshadows_surface1[1] = surface_create((view_wview[global.sl_viewid]+sl_sunshadows_margin*2)*sl_sunshadows_texturesize,(view_hview[global.sl_viewid]+sl_sunshadows_margin*2)*sl_sunshadows_texturesize); sl_sunshadows_surface2 = surface_create((view_wview[global.sl_viewid]+sl_buffer_xmargin*2)*sl_buffer_texturesize,(view_hview[global.sl_viewid]+sl_buffer_ymargin*2)*sl_buffer_texturesize); }
// Variables relatives aux ombres ambiantes if !variable_local_exists("sl_ambientshadows_active") sl_ambientshadows_active = false; // Détermine si le rendu des ombres ambiantes doit être effectué ou non else { if !variable_local_exists("sl_ambientshadows_alpha") sl_ambientshadows_alpha = 1; // Facteur de transparence des ombres ambiantes (entre 0 et 1) if !variable_local_exists("sl_ambientshadows_mapscale") sl_ambientshadows_mapscale = 0.5; // Facteur de taille des ambient maps if !variable_local_exists("sl_ambientshadows_map") sl_ambientshadows_map[0] = -1; // Liste des ambient maps if !variable_local_exists("sl_ambientshadows_list") sl_ambientshadows_list[0,1] = -1; // Liste des objets projetant une ombre ambiante if !variable_local_exists("sl_ambientshadows_lock") sl_ambientshadows_lock = true; // Empêche l'affichage des ambient-maps avant que celles-ci soient calculées sl_ambientshadows_surface = surface_create((view_wview[global.sl_viewid]+sl_buffer_xmargin*2)*sl_buffer_texturesize,(view_hview[global.sl_viewid]+sl_buffer_ymargin*2)*sl_buffer_texturesize); // Surface composant les ombres ambiantes }
// Liste des objets composant les masks des layers if !variable_local_exists("sl_global_list") sl_global_list[0,1] = -1;
// Surfaces composant le buffer sl_buffer_surface1 = surface_create((view_wview[global.sl_viewid]+sl_buffer_xmargin*2)*sl_buffer_texturesize,(view_hview[global.sl_viewid]+sl_buffer_ymargin*2)*sl_buffer_texturesize); sl_buffer_surface2 = surface_create((view_wview[global.sl_viewid]+sl_buffer_xmargin*2)*sl_buffer_texturesize,(view_hview[global.sl_viewid]+sl_buffer_ymargin*2)*sl_buffer_texturesize); |
|
| |
Qual Utilisateur confirmé: Rang ****
Messages : 1450 Projet Actuel : Tower Defence
| Sujet: Re: CBNA Smartlight avec Game Maker Studio Mer 2 Jan 2013 - 9:37 | |
| Bah au pire tu t'en fou de tester si la variable existe. Suffit de leurs foutre une valeur par défaut au chargement de la room. _________________ |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: CBNA Smartlight avec Game Maker Studio Mer 2 Jan 2013 - 9:43 | |
| Sinon tu peux toujours essayer ca : if (variable!=null) { //elle existe } En principe ca marche dans tous les langages mais j'ai jamais essayé avec GM. Et sinon, oui tu l'initialise au début. |
|
| |
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: CBNA Smartlight avec Game Maker Studio Mer 2 Jan 2013 - 15:08 | |
| en C, on initialise avec ce genre de truc : - Citation :
- static int variable=0;
if (variable==0) { //blabla variable=1; }
la variable en static bloque la valeur 0 donc dans GM, il faut le mettre dans un create, sa reviendra au meme |
|
| |
Evilshroom Très bonne participation
Messages : 121 Localisation : .... Projet Actuel : ????????
| Sujet: Re: CBNA Smartlight avec Game Maker Studio Mer 2 Jan 2013 - 22:37 | |
| - Code:
-
Sinon tu peux toujours essayer ca : if (variable!=null) { //elle existe } En principe ca marche dans tous les langages mais j'ai jamais essayé avec GM. Et sinon, oui tu l'initialise au début.
Terrence, je suis en train d'essayer ta méthode. Dans le fond, tu remplace variable! par la variable et entre les accolades tu mets la variable déclarée? C'est ca? ex: - Code:
-
if (global.sl_viewid=null) { global.sl_viewid = view_current}; // Index de la view dans laquelle afficher les effets et quand il y a la variable «for», sa me fait peur... Comment je fais pour l'insérer dans ton code? - Code:
-
// Layers if !variable_local_exists("sl_layers_count") sl_layers_count = 0; // Nombre de layers for (i=0; i<=sl_layers_count; i+=1) sl_layers_surface[i] = surface_create((view_wview[global.sl_viewid]+sl_buffer_xmargin*2)*sl_buffer_texturesize,(view_hview[global.sl_viewid]+sl_buffer_ymargin*2)*sl_buffer_texturesize); |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: CBNA Smartlight avec Game Maker Studio Mer 2 Jan 2013 - 22:52 | |
| Ben tu remplace : if !variable_local_exists("sl_layers_count") sl_layers_count = 0; // Nombre de layers par ma méthode ; ensuite la boucle for ne change pas puisque la variable est initialisée. |
|
| |
Evilshroom Très bonne participation
Messages : 121 Localisation : .... Projet Actuel : ????????
| Sujet: Re: CBNA Smartlight avec Game Maker Studio Mer 2 Jan 2013 - 23:09 | |
| merci beaucoup, jva essayer tout ca et je ten reparle! Au fait, je dois-tu mettre des guillemets "" autour des variables? - Code:
-
if ("global.sl_viewid"=null) { "global.sl_viewid" = view_current};
Dernière édition par Evilshroom le Mer 2 Jan 2013 - 23:22, édité 1 fois |
|
| |
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Re: CBNA Smartlight avec Game Maker Studio Mer 2 Jan 2013 - 23:43 | |
| Dans cet exemple non, avec la fonction de gm oui. |
|
| |
Evilshroom Très bonne participation
Messages : 121 Localisation : .... Projet Actuel : ????????
| Sujet: Re: CBNA Smartlight avec Game Maker Studio Jeu 3 Jan 2013 - 0:23 | |
| La fonction? quel fonction? |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: CBNA Smartlight avec Game Maker Studio Jeu 3 Jan 2013 - 9:18 | |
| Dans la fonction variable_local_exist oui mais sinon faut jamais en mettre. |
|
| |
Evilshroom Très bonne participation
Messages : 121 Localisation : .... Projet Actuel : ????????
| Sujet: Re: CBNA Smartlight avec Game Maker Studio Ven 4 Jan 2013 - 0:52 | |
| Salut, Merci pour ton aide, j'ai vérifié et c'est ça qu'il faut! Mais j'ai pas tout à fait réussi, car je ne sais pas comment mêler les arrays et ton bout de code! - Code:
-
___________________________________________ FATAL ERROR in action number 1 of Create Event for object obj_light:
############################################################################################ VMError!! Occurred - Push :: Execution Error - Variable Get -6.null(100003, 0) at gml_Script_SL_light_cast_obj (line 3) - if (sl_light_shadowlist=null) { sl_light_shadowlist[0,0] = -1}; ############################################################################################ Self Variables : sl_light_power(100097) = 1 sl_light_color(100098) = 16777215 sl_light_active(100072) = 1 sl_light_xscale(100074) = 2 sl_light_yscale(100076) = 2 sl_light_refresh(100078) = 1 sl_light_castshadow(100081) = 1 sl_light_shadowlist(100086) = -1 sl_light_shadowsharpness(100087) = 0.200000 sl_light_shadowlength(100090) = 4 sl_light_shadowfactor(100091) = 1.040000 sl_light_ambientpower(100092) = 0 sl_light_angle(100093) = 0 sl_light_texture(100094) = 44 sl_light_refreshrate(100095) = 0 stack frame is gml_Script_SL_light_cast_obj (line 0) called from - gml_Object_obj_light_Create_0 (line 20) - }
Dans le fichier de documentation du moteur, ya une description: - Citation :
sl_light_shadowlist[x] Liste des id d'objets pour lesquels la lumière doit projeter une ombre. Son utilisation se fait de manière automatisée avec la fonction SL_light_addshadow(obj_id).
Désolé si je demande beaucoup d'aide, je maîtrise pas encore Game Maker Studio à 100% et je t'en remercie! |
|
| |
Bast Administrateur
Messages : 20021 Localisation : Alsace
| Sujet: Re: CBNA Smartlight avec Game Maker Studio Ven 4 Jan 2013 - 2:18 | |
| - Evilshroom a écrit:
- Dans le fichier de documentation du moteur, ya une description:
- Citation :
- sl_light_shadowlist[x]
Liste des id d'objets pour lesquels la lumière doit projeter une ombre. Son utilisation se fait de manière automatisée avec la fonction SL_light_addshadow(obj_id). La fonction citée dans cette partie de la doc est obsolète (SL_light_addshadow), c'est une erreur de ma part. L'actuelle est SL_light_cast_obj(obj,mask). _________________ |
|
| |
Evilshroom Très bonne participation
Messages : 121 Localisation : .... Projet Actuel : ????????
| Sujet: Re: CBNA Smartlight avec Game Maker Studio Ven 4 Jan 2013 - 5:23 | |
| Salut, Bast Content que tu sois là! En tous cas, félicitations pour ton moteur! T'as tu déja essayé d'adapter Smartlight sur GMS? Ou sais-tu si quelqu'un a déja réussi? |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: CBNA Smartlight avec Game Maker Studio Ven 4 Jan 2013 - 9:18 | |
| Oui, je crois qu'il y a un truc du style dans le topic de smartlight (dans la rubrique game maker), mais je sais pas s'il est complètement terminé. |
|
| |
Bast Administrateur
Messages : 20021 Localisation : Alsace
| Sujet: Re: CBNA Smartlight avec Game Maker Studio Ven 4 Jan 2013 - 14:33 | |
| Il semblait que grugin avait réussi à le porter sous GMS ( voir ici), mais je n'ai pas eu de nouvelles depuis. Quant à moi, je n'ai pas GMS et il est peu probable que je l'achète maintenant ou plus tard, donc mon support de SmartLight se limite à GM7 et GM8. _________________ |
|
| |
Contenu sponsorisé
| Sujet: Re: CBNA Smartlight avec Game Maker Studio | |
| |
|
| |
| CBNA Smartlight avec Game Maker Studio | |
|