[Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] Hitskin_logo Hitskin.com

Ceci est une prévisualisation d'un thème de Hitskin.com
Installer le thèmeRetourner sur la fiche du thème



AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  
Le Deal du moment :
LEGODAYS : 20% sur une sélection de LEGO avec ...
Voir le deal

 

 [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction]

Aller en bas 
+4
master47
Isaki
l0lmanPH
onilink_
8 participants
AuteurMessage
onilink_
Modérateur
onilink_


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

[Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] Empty
MessageSujet: [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction]   [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] EmptyDim 30 Oct 2011 - 17:47

Optimisation maximale sous Gamemaker


Sommaire

1-Optimisation de la ram
2-Optimisation du processeur
3-Optimisation du rendu
4-Optimisations diverses

Je vais vous parler ici d'optimisation sous Gamemaker.
Les techniques qui existent en général, comment comparer deux codes, etc.

Sous GM, vous pourrez optimiser votre jeu de deux façon.
-Ne pas charger trop de ressources pour optimiser la mémoire et utiliser moins de ram.
-Faire des calculs plus optimisés pour utiliser moins de processeur.

Exclamation Les tests sont faits sous GM6 et GM8, et les résultats ne sont pas encore super précis Exclamation


1-Optimisation de la ram

Pour optimiser la mémoire, la première chose a savoir est : Combien prennent une variable, une image en mémoire ?

Variables

Sous GM les variables sont théoriquement des nombres flottants a double précision. L'équivalent du type double en C++.
Ils devraient donc prendre 8 octets en mémoire mais nous allons voir que c'est encore pire x_x
Et ils perdent en précision avec des calculs ou les nombres sont trop grands.

Voici un tableau récapitulatif de la mémoire utilisée par des variables sous GM :

VariableMémoire utilisée théoriquementMémoire utiliséeRapport
n8 octets--
n[1024]8ko32ko4
n[32 000]250ko770ko3
10 * n[32 000]2500ko7668ko3

On en déduit donc que les variables sous GM prennent au final 24 octets, tout du moins avec un tableau a une dimension.
C'est vraiment beaucoup, et donc il faudra faire attention a l'utilisation abusive de variables sous GM.

Pour ceux qui voudraient vérifier par eux même voici la démarche a suivre :
Spoiler:

Images

Les images sous GM sont en 32bits. Donc 4octets par pixel.
Théoriquement une image devrais prendre 4*largeur*hauteur octets en mémoire vidéo.
Hors il s'avère que :
-Les images sont aussi stockées dans la ram, pour les tests de collision pixel perfect, et les fonctions du style sprite_set_alpha_from_sprite
-Les images prennent beaucoup plus de place en ram que la valeur théorique ci dessus
-Les images prennent aussi de la ram en mémoire vidéo. Par contre je n'ai pas pu faire de tests mais elles devraient être stockées en 32bits.
(je n'ai pas trouvé comment voir la ram vidéo)

Voici un tableau récapitulatif :
Largeur Hauteur Poids Théorique (Ko) Poids Réel (Ko)
640 480 1200 2500
10001000 3900 8700
20002000 15625 35240
10241024 4096 9100

Il faut savoir aussi qu'un sprite contenant plus de sous images prendras un peu plus de ram, mais c'est négligeable.

Une image prend donc en mémoire :
Mémoire utilisée = Largeur * Hauteur * 8 octets

Ils est donc vivement conseillé de ne charger que le strict nécessaire pendant le jeu, si vous utilisez des sprites ou background assez grands.


1-Optimisation du processeur

Ici nous allons voir comment optimiser la partie code.
Le GML étant un langage interprété, de petits changements au niveau du code peuvent entrainer des changements assez conséquents.
Ce qu'il faut savoir, c'est que l'interpréteur :
-Analyse le code pendant l’exécution. Donc plus une expression est longue plus elle seras longue a analyser.
-Ne simplifie pas les opérations complexes, ni même les stupides.

La première chose a savoir, c'est qu'il est toujours préférable d'utiliser du code compilé, car il est énormément plus rapide.
Ainsi utiliser la fonction sqrt de GM (code compilé) seras énormément plus rapide que de créer votre propre fonction sqrt en GML.
Pour des applications qui demandent des calculs performants (par exemple collisions 3d, moteur physique) il seras toujours préférable
d'utiliser des dll.

Maintenant, comment savoir si une expression va être plus longue a exécuter qu'une autre ? Comment optimiser un morceau de code ?
Et bien pour cela il nous suffit de calculer le temps d’exécution, et de comparer.

Pour calculer le temps d’exécution d'un bout de code, il suffit de :
1- Garder current_time en mémoire
2- Exécuter le code beaucoup de fois, avec une loop for
3- Comparer avec le current_time actuel

Voici le script pour comparer le temps d’exécution de 2 bouts de code :
Code:
ts = current_time

for(i=0; i<500000; i+=1)
{
    <code1>
}

t1 = current_time - ts
ts = current_time

for(i=0; i<500000; i+=1)
{
    <code2>
}
   
t2 = current_time - ts

show_error("t1 = " + string(t1) + " - t2 = " + string(t2), 0)

Nous pouvons maintenant commencer a voir ce qui gaspille des performances dans un code gml.

a) Les appels de fonction

Voici les performances des fonctions mathématiques dans une loop for de 500000 itérations :

FonctionTemp (ms)
Code vide312
Fonction gml vide2000
random672
choose750
abs672
sign656
round672
floor688
ceil703
frac672
sqrt671
power719
exp688
ln687
log2719
log10703
logn766
sin687
cos688
tan687
arcsin703
arccos688
arctan703
arctan2750
degtorad672
radtodeg687
min735
max750
min703
median734
point_distance766
point_direction828
lengthdir_x750
lengthdir_y766
is_real656
is_string672
Revenir en haut Aller en bas
l0lmanPH
Utilisateur confirmé: Rang *
l0lmanPH


Messages : 226
Localisation : cbna.forumactif.com
Projet Actuel : Le Méchant Tueur de Bisounours
Metroid Prime : Némésis
Tutoriel GM

[Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] Empty
MessageSujet: Re: [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction]   [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] EmptyLun 31 Oct 2011 - 0:17

Tu ferais pas ce tutoriel pour dissuader, en passant x) ?
Revenir en haut Aller en bas
Isaki
Très bonne participation
Isaki


Messages : 157
Localisation : Devant mon pc
Projet Actuel : euh...

[Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] Empty
MessageSujet: Re: [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction]   [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] EmptyLun 31 Oct 2011 - 9:46

Question : si les sprite sont rangés dans des dossier, et non pas dans le .gmk, ça ne pose pas de problème, si??
Revenir en haut Aller en bas
master47
Utilisateur confirmé: Rang *****
master47


Messages : 2368
Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio

[Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] Empty
MessageSujet: Re: [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction]   [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] EmptyLun 31 Oct 2011 - 10:20

C'est mieux justement, ça te permet de les charger dynamiquement pendant le run du jeu donc de libérer de la mémoire quand tu n'utilise plus certains sprites / backgrounds / sound.

Puis ça raccourcit ton temps de chargement au démarrage !
Revenir en haut Aller en bas
http://theperfectpattern.tumblr.com
Caly
Utilisateur confirmé: Rang ****
Caly


Messages : 1285
Localisation : Haute Normandie
Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.

[Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] Empty
MessageSujet: Re: [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction]   [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] EmptyLun 31 Oct 2011 - 10:35

Le soucis c'est que les vilains méchants pas beaux joueurs peuvent changer le sprites pour tricher :siffle:
Revenir en haut Aller en bas
Isaki
Très bonne participation
Isaki


Messages : 157
Localisation : Devant mon pc
Projet Actuel : euh...

[Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] Empty
MessageSujet: Re: [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction]   [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] EmptyLun 31 Oct 2011 - 10:52

merci master47 Very Happy
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

[Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] Empty
MessageSujet: Re: [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction]   [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] EmptyLun 31 Oct 2011 - 12:53

Caly a écrit:
Le soucis c'est que les vilains méchants pas beaux joueurs peuvent changer le sprites pour tricher :siffle:
Faut crypter cool
Revenir en haut Aller en bas
http://madmass.mype.fr/CBNA/
Morwenn
Très bonne participation
Morwenn


Messages : 151
Projet Actuel : Icare

[Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] Empty
MessageSujet: Re: [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction]   [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] EmptyLun 31 Oct 2011 - 13:13

En fait, globalement, le truc qui prend le plus de temps avec toutes les fonctions mathématiques, je suppose que c'est de les appeler, et non ce qu'elles font derrière qui doit être presque instantané. Ah oui aussi, pour conforter mon point de vue, il semblerait que les fonctions ayant le plus de paramètres soient les plus longues (point_direction par exemple), quel que puisse être le code derrière.
Donc voilà, selon toute évidence, c'est l'interfaçage des fonctions pré-construites mathématiques avec GM qui prend du temps, et non leur exécution en Delphi/autre chose dans les couches inférieures =p
Revenir en haut Aller en bas
master47
Utilisateur confirmé: Rang *****
master47


Messages : 2368
Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio

[Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] Empty
MessageSujet: Re: [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction]   [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] EmptyLun 31 Oct 2011 - 13:33

Le pire truc c'est d'appeler des scripts. C'est ULTRA lent, alors qu'en soi cela ne devrait presque pas changer...
et le top niveau opti de GM c'est draw_getpixel(x,y) :p
Revenir en haut Aller en bas
http://theperfectpattern.tumblr.com
M@d_Doc
Modérateur
M@d_Doc


Messages : 6600
Localisation : 47°44'8.04
Projet Actuel : aucun

[Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] Empty
MessageSujet: Re: [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction]   [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] EmptyLun 31 Oct 2011 - 19:43

master47 a écrit:
Le pire truc c'est d'appeler des scripts. C'est ULTRA lent, alors qu'en soi cela ne devrait presque pas changer...
et le top niveau opti de GM c'est draw_getpixel(x,y) :p
et hop :p https://cbna.forumactif.com/t11227-lire-un-fichier-bmp
C'est toujours pas top, mais c'est presque 2fois plus rapide que GM :p
Revenir en haut Aller en bas
http://www.lecbna.org
Contenu sponsorisé





[Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] Empty
MessageSujet: Re: [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction]   [Tutoriel] Optimisation maximale sous Gamemaker [en rédaction] Empty

Revenir en haut Aller en bas
 
[Tutoriel] Optimisation maximale sous Gamemaker [en rédaction]
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Tutoriel] Le Multijoueur sous GameMaker expliqué
» 3D GameMaker sous Xp ?
» [Tutoriel] GameMaker 5.3a en Français
» [Tutoriel] Créer une Dll en C/C++ pour GameMaker
» Tutoriel GameMaker :Les fichiers ini partie 2 problème

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