Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Tutos: Checklist de la composition (...) / Sorties: Dread Mac Farlane - episode 8 / Sorties: Dread Mac Farlane - episode 7 / Jeux: Ce qui vit Dessous / News: Quoi de neuf sur Oniromancie (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

521 connectés actuellement

29384123 visiteurs
depuis l'ouverture

5 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Zarok

New RPG Maker

Eclipso

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [RESOLU] [RMXP] Ralentissement par processus parallèle


Khamelot - posté le 16/09/2016 à 16:10:55 (466 messages postés)

❤ 0

Garoh pour les vrais.

Domaine concerné: eventing
Logiciel utilisé: RMXP
Bonjour,

Que j'explique un peu mon problème : Je me suis servi du tuto de zone d'infiltration avec garde en events réalisé par Joke.
L'idée dans mon cas est de permettre à un seul ennemi de parcourir une seule et même très grande map délimitée par une quantité assez colossale de couloirs à calculer par l'événement.

Les zones et la détection fonctionnent sans souci, seulement il y a un problème :

L'un des événements en processus parallèle doit se téléporter à tous les points A et B de chaque couloir afin de calculer la zone pour le repérage. Étant donné qu'il doit bien y avoir une cinquantaine de zones, ça crée un ralentissement assez colossal.
L'évènement consiste simplement en une répétition de 7 lignes :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
[Évènement actif si interrupteur "Zone" activé]
==Zone 1==
Téléporter cet événement [pointA]
Variable "Xa" = Coordonnée X cet event
Variable "Ya" = Coordonnée Y cet event
Téléporter cet évènement [pointB]
Variable "Xb" = Coordonnée X cet event
Variable "Yb" = Coordonnée Y cet event
Appeler un évènement commun : Calcul
==Zone 2==
etc
Et à la toute fin : Interrupteur "Zone" desactivé.



J'ai donc essayé d'aérer le script avec des "attendre 1 frame", le souci est que, pour supprimer le ralentissement , je suis obligé d'en mettre une assez grosse quantité.

Je pensais au premier abord que ça ne serait pas un problème, mais cette petite frame crée une très légère latence entre le calcul des zones, ce qui a pour effet d'allonger le temps de réaction de l'ennemi censé nous repérer. Résultat : On reste deux secondes devant lui alors qu'il nous a bel et bien vu sans rien faire, et alors qu'on s'est éloigné, il nous saute dessus sans raison.

Du coup je fais appel à vous pour m'aider à trouver comment optimiser l'event sans le massacrer. J'ai testé le script anti-lag mais hélas ça n'a pas fonctionné, et je ne peux pas faire en sorte que le jeu désactive les événements hors-map car autrement celui-ci ne pourrait plus calculer les zones.

Trois solutions auxquelles j'ai pensé (et que j'ai pas encore testées)
- Faire en sorte que certaines zones ne se calculent que si le joueur est dans les environs.
- Mettre plusieurs events qui calculent simultanément les différentes zones au lieu d'un seul.
- Tout mettre via un évènement commun et une série de plusieurs events vides qui se téléportent (ça rejoint la deuxième idée).

Mais peut-être avez-vous d'autres idées ou des pistes qui pourraient m'aider à trouver un autre moyen plus simple ?
Merci d'avance :)

Slendertale, un fangame horreur d'Undertale | Under the bed, le jeu où faut mettre sur pause


Aurora - posté le 16/09/2016 à 20:16:50 (437 messages postés)

❤ 0

Heretics a écrit un script "Advanced Camera System"
Il te faudra aussi le"Modular passable" (script maître) du même auteur pour le faire fonctionner.

Le sytème de caméra ne te servira à rien mais il intègre une fonction qui détermine si un event est dans la fenêtre de jeu.
Exemple :

condition >

Portion de code : Tout sélectionner

1
  character_on_screen?($game_map.events[@event_id])

*
> ce que ton event doit faire si il est à l'écran
> sinon
> autres commandes qui seront exécutées même si l'event est en dehors de la fenêtre de jeu

donc si ton event apparait à l'écran il fera ce qui lui est demandé, dans le cas contraire il fera ce qui est hors de la condition.
Ca permet d'avoir un event en parallèle qui auto-contrôle sa position et qui active son code seulement si il est à l'écran (vu que la condition est remplie), ce qu'un antilag ne fait pas.

*tu peux remplacer @event_id par l'id de event


Khamelot - posté le 16/09/2016 à 21:16:55 (466 messages postés)

❤ 0

Garoh pour les vrais.

Merci de l'info ! Ce genre de choses peut-être programmé avec les coordonnées écran et de l'eventing, et il me semble que Joke l'explique dans un de ses tutos.
Mais justement, je veux pas que l'évènement se déclenche uniquement dans l'écran, parce que les zones sont trop grandes pour l'écran et que donc l'évènement ne pourra pas délimiter les zones du repérage. C'est pour ça hélas que j'ai dû écarter cette solution en event. Mais merci quand même pour le script, j'irai jeter un coup d'oeil :)

Edit : J'ai résolu le souci après avoir exploré les 3 options du coup. Utiliser d'autres évènements avec un évènement commun ne fonctionne pas. Je m'y attendais un peu, mais le processus est le même.
En revanche, délimiter simplement les zones est un véritable jeu d'enfant. Il suffit d'ajouter à l'évènement différentes pages avec, en plus de son interrupteur "area", un deuxième interrupteur qui permettra d'indiquer à l'event quelle page activer pour chaque zone. Là je tapisse le sol d'events comme un gros macaque juste pour tester, mais on peut tout à fait configurer de nouvelles zones en variables avec un point A et un point B.
Problème résolu donc !

Slendertale, un fangame horreur d'Undertale | Under the bed, le jeu où faut mettre sur pause


hassen - posté le 18/09/2016 à 22:35:25 (580 messages postés)

❤ 0

Alien

Moi j'utilise le system de joke et je fais mon possible pour ne pas mettre trop de couloirs, on ne sait jamais.

School Urban Legends

Index du forum > Entraide > [RESOLU] [RMXP] Ralentissement par processus parallèle

repondre up

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 - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers