Oniromancie: Tutoriels - )Joke's tuts)- (6) Eviter le lag dans votre jeu !


Comment ça marche?

Aëdemphia
Par Sylvanor

Fighting Robots Quest
Par Boulon

Forstale
Par Ødd Clock

Geex
Par roys

Inexistence
Par Falco

La Légende d'Ibabou
Par Zaitan

Lije
Par Gaetz

LoveMaster
Par Cuddlefox

Sarcia
Par Kaëlar

Super Mario RPG - Lost Souls
Par Omegabowser

News: Concours des Alex d'Or 2017-18: (...) / News: MegaMaker : créez votre propre (...) / News: Test de Tinker Quarry / Sorties: Leave the Room / Jeux: Leave the Room /

Chat  (26 connectés)

Bienvenue
visiteur !






publicité RPG Maker!

Statistiques

Liste des
membres


Contact

53 connectés actuellement

9179879 visiteurs
depuis l'ouverture

953 visiteurs
aujourd'hui

Groupe Facebook

Barre de séparation

Partenaires




TOP
GAMEMAKING


Les 5 plus
visités

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Pixelandgame

Tashiroworld

HeyMakeGames

Au hasard

Citadelle d'Hyrule

Léo-Games

FrGraph-X

Les deux derniers

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Nos autres partenaires

Devenir
partenaire


Barre de séparation

Un site du réseau
War Paradise

Annuaires référenceurs





)Joke's tuts)- (6) Eviter le lag dans votre jeu !
Ecrit par Joke

Ce tutoriel vous apprend à bien connaître ce qui ralentit vos jeux, et ce qu'il est possible de faire pour contrer certaines causes :
1-Bien placer ses "attendre"
2-Bien utiliser ses images
3-La technique de l'événement presque inactif lorsqu'il est hors de l'écran.
4-RM2000/2003, gare aux appui touche !
5-Avertir le joueur



Qu'est ce que le lag ?

Le "lag" est le terme employé pour désigner les ralentissement d'un jeu. Lorsqu'un événement est mal programmé, il peut ralentir le jeu jusqu'à le rendre injouable !


Qu'est ce qui produit du lag dans un jeu RPG maker ?

Il y a plusieurs source :
-Un événement en processus parallèle exécute des actions en boucle sans aucun "attendre" pour aérer.
-Commande "afficher image" utilisée trop souvent.
-Trop d'événements sur la carte.
-Trop d'appui touche différents qui s'interfèrent



1) Aérer un processus parallèle ?

Il faut éviter à tout prix d'avoir des processus parallèle sans "attendre" à l'intérieur !
Un "attendre 0.0sec" (ou "attendre 1 frame") peut largement suffire, mais le plus élevé sera le mieux (mais certains codes peuvent être inefficace s'ils ne sont pas assez rapide (un événement pour détecter des collisions, par exemple))

Ne pas oublier le "attendre", c'est bien, mais encore faut-il savoir le placer !

Certains se disent "wé il y a un attendre 0.1sec à la fin de tous mes événements, ça va pas ralentir du tout !"

Sauf que certains utilisent des boucles et étiquettes ! Et lorsqu'il y a un code qui tourne en boucle grâce à une boucle ou des étiquettes, il faut pas oublier de placer un "attendre 0.0sec" quelque part dans cette boucle !

Donc si vous utilisez des jeux d'étiquettes, regardez bien si le code ne se met pas en boucle quelque part sans qu'il y ait de "attendre" !

Cela dit on peut faire volontairement une boucle sans "attendre" ! Sachez que contrairement à un événement processus parallèle qui tourne en boucle, une vraie boucle tourne 1000x plus rapidement.
Ça peut permettre d'effectuer un code 100x en une seconde !
Et ça ne fait pas lagguer si par exemple au bout de 100 tours on sort de la boucle !

Je n'ai pas d'exemple simple, cette technique est bonne pour des codes réfléchis genre pour classer des variables de la plus grande à la plus petite, ou autre...

En tout cas c'est s'il n'y a jamais de "sortir de la boucle" ou qu'il y a "sortir de la boucle" qu'au bout d'un long moment que ça va tout ralentir ! Mais si la boucle doit se terminer en une fraction de seconde, ça va !


2) Les images font lagger ?

Je crois que pour RMXP et VX, l'affichage des images n'est pas un problème !

Mais dans RM2003 ça je le sais bien : C'est une grosse m**** pour afficher les images !!
Vous pouvez bien faire un long calcul avec une tonne de variables et conditions méchantes, des boucles et tout : Ce qui fera le plus mal à votre code après les absence d'"attendre", c'est les affichages d'images !

Certains pensent que RPG maker laggue lorsqu'il y a trop d'images affichées à l'écran, moi je pense que c'est totalement faux, une fois qu'elles sont affichées, aussi nombreuses qu'elles soient, elles ne vont pas faire lagguer le jeu !

C'est l'action "afficher image" lui-même qui fera lagger votre jeu ! Alors il faut le contrer le plus possible !

Alors par exemple, vous avez un menu en images, il y aura des fenêtres et curseurs qui apparaisseront puis disparaitront, des trucs qui clignotent...
Eh bien le mieux sera d'afficher toute les images du menu au début, certaines masquées par "transparence 100%" (ou "opacité 0", dans RMXP et VX) et celles affichées en "transparence 0%" (ou opacité 255 dans XP/VX) et lorsque vous ferez apparaître ou disparaître une fenêtre, vous le ferez avec "déplacer image" plutôt que "afficher image/supprimer image" !!

C'est important !

Par exemple, une image de neige qui fait que descendre à l'écran, vous serez tenté de faire ce code en boucle :


Portion de code:




/// DÉCONSEILLÉ DE FAIRE :
afficher image "neige" << On remet l'image à sa place
déplacer image "neige" 10sec (attendre activé) << On descend l'image


A chaque fois, le "afficher image" remet l'image au point de départ pour créer une illusion d'infini !

Ben non il serait préférable de faire ceci :


Portion de code:




/// CONSEILLÉ DE FAIRE :
afficher image "neige"
BOUCLE :
déplacer image "neige" 10sec (attendre activé) << On descend l'image
déplacer image "neige" 0sec (attendre activé) << On remet l'image à sa place
FIN DE BOUCLE

Le code ne paraissait pas trop grave vu que le déplacement aérait le code de 10secondes ! Ce serait pas grave du tout effectivement si l'image n'était pas lourde, mais si l'image est grande et lourde... Bonjour le ralentissement toute les 10 secondes !



3) Trop d'événements sur la carte ?

Saviez vous que lorsqu'il y a une tonne d'événements (plus de 300), même seulement en "appui touche" sur une carte, ça ralentissait le jeu ??

Et bien il n'y a rien à faire contre ça, malheureusement ! ^^" (Enfin pour XP et VX il y a des codes apparemment, mais ça ne marche pas toujours, il parait) Ce qu'il faut faire c'est éviter de tapisser vos sols d'événements ! (genre pour des traces de pas ou autre trucs !)

Donc 300 événements en "appui touche" peut faire ralentir un peu, mais alors 300 événements en "processus parallèle" ça a alors, ça tue le jeu !! Genre un mario-like, ou une grande map de A-RPG, ça nécessite souvent que tous les monstres soient tous en processus parallèle, ou des coffres ou buissons en processus parallèles... etc...

Mais que ce soit des buissons soulevables, des boites ouvrable en sautant dessus, ou des monstres... Ceux qu'on a besoin de voir tourner, dans le jeu, sont ceux qui sont à l'écran !
Effectivement on s'en fout des monstres et objets en dehors de l'écran, ils peuvent être inactif ! Et c'est faisable ! ...ou presque !


Portion de code:




modifier variable "X" coordonnée X écran de "cet événement"
modifier variable "Y" coordonnée Y écran de "cet événement"
condition si "X" supérieur à -30
condition si "Y" supérieur à -30
condition si "X" inférieur à 350 (320+30)
condition si "Y" inférieur à 270 (240+30)
<>code de l'événement en question
<>attendre 0.0sec (ou ce qu'on veut, c'est le temps qui sera en boucle lorsque l'événement sera dans l'écran)
<>stopper cet événement (pour revenir au début du code)
fin
fin
fin
fin
attendre 0.5sec (ou ce qu'on veut, c'est le temps qui sera en boucle lorsque l'événement sera hors de l'écran)


Et voilà, là c'est pour RPG maker donc j'ai utilisé 320 et 240, mais par exemple sur XP on utiliserait -30, 670 (640+30), 510 (480+30) !

Avec ce code, on contrôle si l'événement est dans l'écran, si c'est le cas, il effectue bien son code et se termine avec un "stopper cet événement" pour ne pas que le "attendre 0.5sec" soit actif
Si les conditions ne sont pas remplie, le code de l'événement n'a pas lieu et il n'y a que le "0.5sec" qui tourne en boucle, ce qui ne fera pas lagger du tout.
Grâce à ces conditions ajoutées, vous n'aurez plus peur d'afficher une centaine d'événement processus parallèle sur vos grandes map !

Ça laggera juste s'il y a beaucoup d'événements dans le cadre de l'écran, ceux hors du cadre ne seront pas actif, eux !


4) (RM2k/2k3) Trop de commandes "appui touche" ?

Dans l'exemple de buissons soulevable ou autres événements que vos représenterez plusieurs fois, vous serez tenté de mettre à l'intérieur de chacun "demander l'appui d'une touche". Ou bien dans un mini-jeu ou CBS, vous seriez aussi tenté de faire cette commande en boucle sur plusieurs événements en processus parallèle.

Eh bien apparemment, c'est aussi une commande qui fait lagger !

Si vous êtes obligé de cocher "attendre l'appui de la touche", vous êtes bien obligé de mettre la commande, mais si vous ne cochez pas "attendre l'appui de la touche" vous pouvez très bien mettre cette détection de touche dans un événement fréquent (commun) en processus parallèle ! (avec un "attendre 0.1sec" pour ne pas lagger)

Alors dans vos codes vous ne ferez que les condtions "si variable "touche directionnelles" =4" sans avoir à mettre avant la commande "demander l'appui d'une touche" !

C'est mieux de mettre dans l'événement fréquent une démande d'appui touche pour les touches directionnelles, puis une différente pour la touche entrée, puis une autre pour la touche maj, puis une autre pour le pavé numérique... Car ça permettra de détecter si vous appuyez sur deux touches en même temps (genre sur gauche en même temps que entrée) ce qui ne serait pas possible avec toute les touches cochée en un seul "appui touche" !


5) Trop d'applications ouvertes ? x)

N'importe quel jeu, il ne faut pas avoir emule, window media player, etc qui tourne à fon à côté lorsqu'on joue !
Alors vous, bandes de joueurs, si vous jouer à un jeu qui lag, arrêtez le bouzin qui est en court à côté sur votre PC !
Alors vous, les créateurs, vous pouvez aussi avertir au début de votre jeu qu'il est préférable de quitter les applications en cours pour profiter du jeu sans avoir de ralentissements !



Place aux questions pour ceux qui n'ont pas compris, aux astuces pour ceux qui en ont d'autres !

Bilou ! Père Noël


Monos - posté le 31/07/2008 à 23:41:05. (56278 messages postés) - admin

Vive le making libre

Hum j'aime bien le derniers paragraphe.

Sinon vraiment interressant. Même pour moi.

Pixner|Offgame | Le comptoire des clikeurs


falco - posté le 01/08/2008 à 00:18:30. (15290 messages postés) - heberge

L'homme à Abattre

J'ai testé toute ces techniques avec des projets de Joke, et croyez moi, c'est efficace !

Pixold - Site web sur mes créations - Inexistence - Disponible sur Steam- Zelda Creator -Suivez moi sur Twitter


Lolow - posté le 01/08/2008 à 00:53:42. (5642 messages postés)

Homme a tout faire...

Bon boulot Joke !


OmegaBowser - posté le 01/08/2008 à 10:53:18. (3317 messages postés) - heberge

Excellent tuto.
Dans ton 3ieme point, tu dis que la map laggue avec beeeaauucoup d'évènements, or dans mon cas, mes maps contiennent en général entre 2 et 6 min et max (sauf dans le cas d'enigmes ou les evenements sont plus d'une dizaines). Et des fois elles laguent....
Pareil pour mon CBS, il lag alors qu'il n'a pas plus de 15 evenements en tout avec des wait 0.1. 'Fin bon c'pas grave, je verrai par moi et ta technique. :)

Viens voir des petits poneys


Joke - posté le 01/08/2008 à 11:08:12. (5029 messages postés)

ben regarde tes événements fréquents (commun) si tu en as, il y en a ptet un qui fait tout lagguer, et les "attendre" c'est pas parce qu'il y en a qu'il n'y en a pas un d'oublié quelque part^^ Si un de tes lag n'a pas pour cause une de celles que j'ai cité, ce sera bizare ! Ou ça viendrait de ton PC ou de ton RPG maker !

En tout cas c'est sûrement pas à cause du nombre d'événements, je dis bien qu'il en faut beaucoup pour que le nombre puisse être cause de ralentissements^^

Peut-être l'utilisation d'mp3 volumineux aussi ?

Moi sur RMXP j'ai un méga lag avant chaque chargement de midi, c'est soit mon PC ou mon RMXP qui foire, pas la façon dont j'ai joué la BGS ou SE.


Bilou ! :noel

http://rmex.github.io/ | Joke's Tuts | Joke's Gribs | SoundCloud | Terre cuite | BilouCorp | Genesis | Groupe Skype RPG Maker | DELIRIUM-II


Zam - posté le 01/08/2008 à 14:05:47. (4334 messages postés) - staff

Eh bien, Sylvanor!!!! Fais lire ça a tes p'tits chinois afin que ton jeu tourne bien sur tout les PC.


Tricky - posté le 25/08/2008 à 16:28:19. (205 messages postés)

Super tuto, très utile pour les jeux avec des maps de donjons et les villes avec des effets d'éclairages amovibles!


Alioune - posté le 04/11/2009 à 11:40:52. (25 messages postés)

Très bon tuto! Ca résout presque tous les lags.


Heavy Rain - posté le 26/07/2010 à 12:25:59. (1053 messages postés)

Ouais, franchement pratique ;)


ctuchik - posté le 27/08/2010 à 15:01:01. (58 messages postés)

Statue? En marbre de préférence

Merci, un event commun en démarrage auto avec plus de 70 conditions (dont parfois 3 à vérifier en même temps) une frame d'attente avant et après chaque condition, ça marche niquel <3.

Je ne fais pas d'autographe désolé


Joke - posté le 29/05/2012 à 18:41:57. (5029 messages postés)

P'tite analyse pour RM2003 :

Boucle :
120000 tours par seconde

Boucle+0.0sec :
60 tours par seconde

Etiquette :
147500 tours par seconde

Etiquette+0.0sec :
60 tours par seconde

Automatique :
60 tours par seconde

Automatique+0.0sec :
60 tours par seconde

Parallèle :
60 tours par seconde

Parallèle+0.0sec :
30 tours par seconde

http://rmex.github.io/ | Joke's Tuts | Joke's Gribs | SoundCloud | Terre cuite | BilouCorp | Genesis | Groupe Skype RPG Maker | DELIRIUM-II


Luryio - posté le 05/08/2012 à 02:46:15. (5 messages postés)

Hum, je sais pas si je me trompe mais sur rpg maker xp on ne peut pas attendre 0,1 ou n'importe quel nombre décimal.
Et moi j'ai un problème de lag avec une animation d'effet de lumière sur un évenement, et mette attendre, même une frame, ben ça fait pas terrible le clignotement pour un chandelier.

Edit: En fait c'est bon, je pense que ça devait être à cause de mon animation qui n'avait qu'une seule frame, j'en ai mis dix et ça m'a l'air mieux quand même.
J'en déduit que les animations à une frame ne sont pas très gentilles avec le logiciel . :D


Joke - posté le 22/01/2014 à 19:48:51. (5029 messages postés)

Pour information, 0.0sec sous RM2003 correspond à 1 frame sur les versions plus récentes (et dans RM2003 aussi en fait, ça fait 0.0 sec = 1 frame = un soixantième de seconde puisque c'est du 60 FPS).

Si 1 seconde fait 60 frame, 0.1 seconde fait 6 frames, mais on s'en fout.

On peut aussi dire que si on aligne six "attendre 0.0 sec" sous RM2003, ça équivaut à un "attendre 0.1 sec".

Ça aussi on s'en fout, si ce n'est qu'il faut retenir que si on veut faire un temps plus court que 0.1 sec on peut très bien aligner plusieurs "attendre 0.0 sec".

Le nombre de "attendre 0.0 sec" qu'on aligne donc c'est le nombre de frame attendue, si on veut attendre 4 frames, on aligne 4 "attendre 0.0 sec".

Si on veut attendre 6 frames... on utilise "attendre 0.1 sec".

Si on veut attendre 8 frames... On aligne un "attendre 0.1 sec" avec deux "attendre 0.0sec".

Et voilà, on peut avoir un "attendre" dans RM2003 aussi précis que dans les versions plus récentes.

http://rmex.github.io/ | Joke's Tuts | Joke's Gribs | SoundCloud | Terre cuite | BilouCorp | Genesis | Groupe Skype RPG Maker | DELIRIUM-II

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe

Plan du site:

Activité: Accueil | News | Forum | Flash-news | Chat | Commentaires | Galerie | Screen de la semaine | Sorties | Articles perso | Livre d'or | Recherche
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Jeux complets | Proposer
Rubriques: Le Wiki | Collection Oniro | Tutoriaux | Scripts | Guides | Gaming-Live | Tests | Making-of | Interviews | Articles perso | OST | L'Annuaire | Divers | Palmarès
Hébergés: Aëdemphia | Fighting Robots Quest | Forstale | Geex | Inexistence | La Légende d'Ibabou | Lije | LoveMaster | Sarcia | Super Mario RPG - Lost Souls
Ressources: Jeux | Programmes | Packs de ressources | Midis | Eléments séparés | Sprites
RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis