AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le deal à ne pas rater :
Manga Chainsaw Man : où acheter le Tome 17 édition Collector de ...
19.99 €
Voir le deal

 

 Loading script

Aller en bas 
+5
zerfes
Kabcorp
glcraft
Randal
Mass
9 participants
AuteurMessage
Mass
*Excellent utilisateur*
Mass


Messages : 3351
Localisation : Dans une canonnière wookie.
Projet Actuel : Monter des trucs et des machins

Loading script Empty
MessageSujet: Loading script   Loading script EmptyLun 12 Juil 2010 - 2:55

Bonsoir à tous (bonjour ? lol  dodo )
J'ai programmé ce petit script pour les novices principalement, afin de faciliter l'utilisation des ressources externes. Ce code affiche une barre de chargement entièrement paramétrable durant le chargement des ressources.


Le code a écrit:
/* loading_script
argument0 :
true pour lancer le chargement (doit être lancé dans un draw
pour ajouter un code à éxécuter : loading_script('sprite_add(...)');
A la fin du chargement, passe à la room suivante
*/

if !variable_local_exists('_loadlist') then _loadlist=ds_list_create();

//Définition des variables de couleur, etc
if !variable_local_exists('_case_color')
{
_case_color=make_color_rgb(255,255,255); //couleur de la barre
_bg_color=make_color_rgb(128,128,128); //couleur de fond de la barre, false pour le bg de la room
_border_color=make_color_rgb(255,255,255); //couleur de la bordure, false pour ne pas la dessiner
_load_width=200; //largeur de la barre, en pixels et > 0
_load_height=32; //hauteur de la barre, en pixels et > 0
_load_x=room_width/2-_load_width/2; //position x de la barre
_load_y=room_height/2-_load_height/2; //position y de la barre
_text_color=make_color_rgb(0,0,0); //couleur du texte
_text_value='Chargement...'; //texte à afficher, mettez false pour ne pas l'afficher
_text_align=fa_center; //alignement du texte : fa_left, fa_right, fa_center
_text_x=_load_x+_load_width/2; //position x du texte
_text_y=_load_y+_load_height/2-string_height(_text_value)/2;
//Si vous êtes sous gm5, décommentez les lignes suivantes
//_text_font='arial';
//_text_size='20';
_font_name=false; //nom de la police, false pour celle par défaut/celle actuellement utilisée
}
screen_refresh();
if is_real(argument0)
{
if !variable_local_exists('_wait') then _wait=1
else
{
_current_pos=0;
repeat ds_list_size(_loadlist)
{
_total_percent=_current_pos/ds_list_size(_loadlist);
execute_string(ds_list_find_value(_loadlist,_current_pos));
if variable_local_exists('_text_font') && _border_color then brush_color=_border_color;
if !variable_local_exists('_text_font') && _border_color then execute_string('draw_set_color(_border_color)');
if _border_color {
draw_line(_load_x,_load_y,_load_x,_load_y+_load_height);
draw_line(_load_x,_load_y+_load_height,_load_x+_load_width,_load_y+_load_height);
draw_line(_load_x+_load_width,_load_y+_load_height,_load_x+_load_width,_load_y);
draw_line(_load_x,_load_y,_load_x+_load_width,_load_y);
}
if variable_local_exists('_text_font') && _bg_color {brush_color=_bg_color; execute_string('draw_rectangle(_load_x+1,_load_y+1,_load_x+_load_width-1,_load_y+_load_height-1)')}
if !variable_local_exists('_text_font') && _bg_color {execute_string('draw_set_color(_bg_color)'); execute_string('draw_rectangle(_load_x+1,_load_y+1,_load_x+_load_width,_load_y+_load_height,0)')}
if variable_local_exists('_text_font') then brush_color=_case_color else execute_string('draw_set_color(_case_color)');
if variable_local_exists('_text_font') then execute_string('draw_rectangle(_load_x+1,_load_y+1,_load_x+((_load_width-2)*_total_percent),_load_y+_load_height-1)') else execute_string('draw_rectangle(_load_x+1,_load_y+1,_load_x+((_load_width)*_total_percent-2),_load_y+_load_height,0)');
if variable_local_exists('_text_font') then font_align=_text_align else execute_string('draw_set_halign(_text_align)');
if _font_name != false then if variable_local_exists('_text_font') then font_name=_text_font else execute_string('draw_set_font(_font_name)');
if variable_local_exists('_text_font') then font_color=_text_color else execute_string('draw_set_color(_text_color)');
if variable_local_exists('_text_font') then font_size=_text_size;
if is_string(_text_value) then draw_text(_text_x,_text_y,_text_value);
screen_refresh();
_current_pos+=1;
}
//Changez la ligne de dessous par une autre action à éxécuter une fois le chargement fini
room_goto_next();
}}
else
{
ds_list_add(_loadlist,argument0);
}


Loading script Apercu_loadscript


Exemple gm6 a écrit:
Télécharger le gm6  (miroir)


Utilisation :
L'utilisation du script est très simple.
Pour définir quoi éxécuter pendant le chargement :
Event - Create Create

Code:
loading_script('sprite_add(...)');
loading_script('background_replace(...)');
loading_script('sound_replace(...)');

Pour lancer le chargement :
Event - Draw Draw

Code:
loading_script(true);


Voilà, j'ai fait ça d'une traite et il est tard donc il y a peut-être quelques erreurs à corriger.
C'est le bordel et c'est pas opti, mais j'avais besoin de la compatibilité avec gm 5.3 :nah: donc n'hésitez pas à commenter/corriger/etc.

Bonne nuit/journée !

_________________


Dernière édition par Mass le Dim 22 Fév 2015 - 13:54, édité 2 fois
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
Randal
Utilisateur confirmé: Rang **



Messages : 446

Loading script Empty
MessageSujet: Re: Loading script   Loading script EmptyLun 12 Juil 2010 - 8:45

Mais quand le jeu démarre, au tout début, il fait quoi ?
Revenir en haut Aller en bas
Mass
*Excellent utilisateur*
Mass


Messages : 3351
Localisation : Dans une canonnière wookie.
Projet Actuel : Monter des trucs et des machins

Loading script Empty
MessageSujet: Re: Loading script   Loading script EmptyLun 12 Juil 2010 - 13:20

En fait quand le jeu démarre il charge les sprites, background, sounds, etc que tu as mis dans ton gm6, et si y'en a beaucoup ça met énormément de temps. C'est au programmeur de l'optimiser en externalisant ses sprites, backgrounds, etc et de les charger durant le jeu car 1/ c'est plus rapide 2/ ça permet d'afficher le menu rapidement et de charger ensuite (comme les jeux pros) 3/ de ne charger que ce qui est nécessaire au niveau, et non pas tout le jeu d'un coup.

_________________
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
Randal
Utilisateur confirmé: Rang **



Messages : 446

Loading script Empty
MessageSujet: Re: Loading script   Loading script EmptyLun 12 Juil 2010 - 14:01

Ah ouais, sympa ton script alors, je vais l'utiliser. Merci. coeur
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
glcraft


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

Loading script Empty
MessageSujet: Re: Loading script   Loading script EmptyLun 12 Juil 2010 - 14:59

Mais c'est bien ton script, comme tu le dit, ca faéit comme les jeux pros et ca moins ****** que de tout charger d'un coup, par contre les jeux pros ont des fichier compilés eux...
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
Kabcorp
Utilisateur confirmé: Rang **
Kabcorp


Messages : 315
Localisation : Savoie
Projet Actuel : trop...

Loading script Empty
MessageSujet: Re: Loading script   Loading script EmptyLun 12 Juil 2010 - 16:05

nice! script simpa, pas compliqué, et ça fonctionne :oui:

_________________
Vous voulez un jeu pas comme les autres? Voici DeFRaG :
Revenir en haut Aller en bas
http://kabcorp.fr
zerfes
Utilisateur confirmé: Rang *
zerfes


Messages : 287
Localisation : Ben ici
Projet Actuel : - Savoir dessiner.

Loading script Empty
MessageSujet: Re: Loading script   Loading script EmptyLun 12 Juil 2010 - 17:35

draw_healthbar était pas plus simple au lieu de
Code:
_case_color=make_color_rgb(255,255,255); //couleur de la barre
_bg_color=make_color_rgb(128,128,128); //couleur de fond de la barre, false pour le bg de la room
_border_color=make_color_rgb(255,255,255); //couleur de la bordure, false pour ne pas la dessiner
_load_width=200; //largeur de la barre, en pixels et > 0
_load_height=32; //hauteur de la barre, en pixels et > 0
_load_x=room_width/2-_load_width/2; //position x de la barre
_load_y=room_height/2-_load_height/2; //position y de la barre

❓
Revenir en haut Aller en bas
Mass
*Excellent utilisateur*
Mass


Messages : 3351
Localisation : Dans une canonnière wookie.
Projet Actuel : Monter des trucs et des machins

Loading script Empty
MessageSujet: Re: Loading script   Loading script EmptyLun 12 Juil 2010 - 19:29

Pourquoi pas oui, je n'y avait pas pensé

_________________
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
Topaze22
*Excellent utilisateur*
Topaze22


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

Loading script Empty
MessageSujet: Re: Loading script   Loading script EmptyMer 14 Juil 2010 - 11:29

Sauf que sous GM8, le chargement d'un .gmk, même obèse comme le miens, se fait très rapidement.

Si vos musiques et vos backgrounds (sauf les tuilables), sont en ressources externes, vous aurez beau avoir plein de bruitages, et plusieurs milliers de sprites, le chargement sera instantanée. Hormis la première barre de chargement (celle quand on lance l'exe), qui, de toute façon, est déjà automatique sous GM.

Bref, ce que je veux dire c'est que ton système est une bonne idée, mais vraiment, comme même mon projet n'a pas de temps de chargement hormis celui de quand on lance l'exe, je ne vois pas quand est ce que cela pourrait être utile, même un minimum. Mes rooms, même les ultra chargés se lancent en moins d'une demi seconde, et mon PC n'est pas une flèche.

Surtout que vos sprites et compagnie, c'est quasi jamais du HD, que tu "ultra faible résolution" donc au moins 10x plus rapide à charger que les miens.

GM gère déjà très très bien le chargement automatique tout seul, pourquoi se compliquer la vie à vouloir le contrôler sois même ?



Excellent programme, bravo à Mass pour sa réalisation, mais jamais utile. heheh ou dites moi quand est ce que je me trompe, je suis ouvert, même si j'y crois vraiment pas. (et les perfs, sous GM, ça me connait)

_________________
Topique pour le Projet Hello Mario en préparation.
Sorti du topique lorsque la première démo sera disponible.
Loading script Projet13
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


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

Loading script Empty
MessageSujet: Re: Loading script   Loading script EmptyMer 14 Juil 2010 - 11:35

Dans un jeu en 3D ou tu importe un format non reconnu par GM (import maison quoi) c'est toujours très long. Deja un exemple de son utilité. Ensuite ce que tu dit topaze c'est parce que t'as l'ordi qui va avec, moi les chargements sont pas instantanés.... Dommage d'ailleur

_________________
Loading script Runningpotato1Loading script TvF6GED Loading script MdetltS
Revenir en haut Aller en bas
Chlorodatafile
Utilisateur confirmé: Rang *****
Chlorodatafile


Messages : 2929
Localisation : Belfort
Projet Actuel :
Paralights

Loading script Empty
MessageSujet: Re: Loading script   Loading script EmptyMer 14 Juil 2010 - 11:40

j'approuve ce que dit onilink_, on a pas forcement l'ordi pour te telle chargement, moi, je sais que tes jeux mario, en général, j'attends au moins 1 minute pour qu'il charge complètement sur mon vielle ordi :/
Revenir en haut Aller en bas
http://chlorodatafile.tumblr.com/
nicoulas
*Excellent utilisateur*
nicoulas


Messages : 6030
Localisation : Dordogne
Projet Actuel : Croustaface Tower Defense Loading script Panicpr9

Loading script Empty
MessageSujet: Re: Loading script   Loading script EmptyMer 14 Juil 2010 - 11:42

@ Topaze : Dans mon vieux shmup, j'avais fait une barre de chargement, parce que le chargement n'était absolument pas instantané (pas très long non plus, environ 5 secondes pour tout charger je crois), donc ce n'est pas du tout inutile.
Ca sert en particulier comme l'a dit gosc pour les vieux ordis, pour savoir combien il reste à charger Wink
Revenir en haut Aller en bas
http://blithe.nd.free.fr/
Topaze22
*Excellent utilisateur*
Topaze22


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

Loading script Empty
MessageSujet: Re: Loading script   Loading script EmptyMer 14 Juil 2010 - 12:30

Ha, ba heu, bon, ba tet bien XD
Ensuite, le jeu n'ira pas plus vite, c'est juste des temps de chargements, donc aux programmeurs de voir si ils veulent complexifier et dépenser du temps pour faire gagner 5s aux joueurs. Perso, je passe plusieurs années à faire un jeu gratuit, donc je pense que les joueurs peuvent tolérer quelques secondes de chargements pour vos jeux, ensuite, c'est vous qui voyez ^^

En tout cas, je reconnais la qualité du boulo fournis par Mass !

_________________
Topique pour le Projet Hello Mario en préparation.
Sorti du topique lorsque la première démo sera disponible.
Loading script Projet13
Revenir en haut Aller en bas
nicoulas
*Excellent utilisateur*
nicoulas


Messages : 6030
Localisation : Dordogne
Projet Actuel : Croustaface Tower Defense Loading script Panicpr9

Loading script Empty
MessageSujet: Re: Loading script   Loading script EmptyMer 14 Juil 2010 - 12:35

Ben faut améliorer l'expérience utilisateur au maximum.
C'est le joueur qui te fait un privilège en jouant à ton jeu, pas l'inverse.
Revenir en haut Aller en bas
http://blithe.nd.free.fr/
Mass
*Excellent utilisateur*
Mass


Messages : 3351
Localisation : Dans une canonnière wookie.
Projet Actuel : Monter des trucs et des machins

Loading script Empty
MessageSujet: Re: Loading script   Loading script EmptyMer 14 Juil 2010 - 14:53

Ben c'est surtout utile dans le sens où tu peux choisir quoi charger avec précision, plutôt que de charger tout le jeu, si par exemple t'a le choix entre trois mondes différents, etc, ça permet de charger uniquement ce monde plutôt que les trois en laissant poireauter l'utilisateur devant son pc deux minutes au lancement. Smile

_________________
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
Contenu sponsorisé





Loading script Empty
MessageSujet: Re: Loading script   Loading script Empty

Revenir en haut Aller en bas
 
Loading script
Revenir en haut 
Page 1 sur 1

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