- NishiimaMembre
- Nombre de messages : 2
Distinction : aucune
Date d'inscription : 23/11/2024
Systéme de chasse comme Alien isolation
Sam 23 Nov 2024 - 10:07
Bonjour, voila je suis sur un petit projet que j'essaye de faire de mon côté pour moi et j'aimerai bien de l'aide.
J'essaye de faire un système un peu comme Alien isolation: le principe, un ennemie redoutable vous traque et vous pourchasse à travers la zone de jeu. A vous de vous cacher et de l'éviter tous en vous éloignant de lui le plus possible.
Voici ce que j'utilise en 1er page d'événement du monstre :
Page 1 :
| > Condition : Script : event_look_towards_event?(me, 0, 10)
| >| > Opération : Variable [0001:Cases] = get_squares_between_events(me, 0)
| >| > Opération : Variable [0002:Max Cases] = length(V[1])
| >| > Opération : Variable [0003:Case Courante] = 0
| >| > Boucle
| >| >| > Appeler Script : coordonnees = get(V[1], V[3])
| >| >| > Appeler Script : x = get(coordonnees, 0)
| >| >| > Appeler Script : y = get(coordonnees, 1)
| >| >| > Appeler Script : SL[:zone_courante] = region_id(x, y)
| >| >| > Appeler Script : SL[:event_courant] = event_at(x, y)
| >| >| > Condition : Script : SL[:zone_courante] > 0
| >| >| >| > Sortir de la Boucle
| >| >| >| >
| >| >| > Fin - Condition
| >| >| > Condition : Script : SL[:event_courant] == 0
| >| >| >| > Opération : Interrupteur local A = Activé
| >| >| >| > Sortir de la Boucle
| >| >| >| >
| >| >| > Fin - Condition
| >| >| > Opération : Variable [0003:Case Courante] += 1
| >| >| > Condition : Variable [0003:Case Courante] == Variable [0002:Max Cases]
| >| >| >| > Sortir de la Boucle
| >| >| >| >
| >| >| > Fin - Condition
| >| >| >
| >| > Fin - Boucle
| >| >
| > Fin - Condition"
Cette événement permet de détecter le joueur à partir du moment ou il se trouve à 10 cases environs de l'ennemi. Évidemment si il y a un mur entre le monstre et le joueur, l'interrupteur A ne s'activera pas.
La page 2 contient ma page de course poursuite.
Pour le moment tous fonctionne mais j'aimerai avec ça utiliser un système de son, si le joueur fais du bruit en courant ou en marchant à une certaine distance (Donc il devra s'accroupir) alors l'ennemi va se diriger vers le lieu du son et inspecter la zone.
Seulement comment faire en sorte dans un premier temps que le monstre détecte le joueur derrière son dos et comment faire de modifier la vitesse de déplacement en 3 niveaux : Vitesse normal, accroupie (lente) et rapide (course) tous en permettant au monstre de détecter si le joueur cours derrière lui ?
En sachant que j'utilise le script Rme extended qui ajoute des commandes en plus.
J'imagine quelque chose du genre :
Si le joueur cours à x cases autour du monstres alors le monstre se tournera en direction du joueur.
De même si il marche ou s’accroupi.
Dans cette événement on peut voir que j'ai laissé la zone de détection à 10 cases. J'aimerai ajouter que si le joueur peut se faire repérer de 10 cases face à l'ennemi alors ca sera de 5 cases derrière l'ennemi par exemple.
De même avec une course rapide, la zone de détection passerai de 10 cases à l'avant à 20 et 5 à l'arrière à 10 par exemple.
Je ne sais pas si c'est compréhensible, pour le moment c'est encore flou vu la taille colossale de travail à faire mais j'ai envie de tester quelque chose en m'inspirant du jeu Alien : Isolation.
Pouvez-vous m'aider à trouver une solution pour que mon systeme de chasse fonctionne ou c'est trop ambitieux ?
J'essaye de faire un système un peu comme Alien isolation: le principe, un ennemie redoutable vous traque et vous pourchasse à travers la zone de jeu. A vous de vous cacher et de l'éviter tous en vous éloignant de lui le plus possible.
Voici ce que j'utilise en 1er page d'événement du monstre :
Page 1 :
| > Condition : Script : event_look_towards_event?(me, 0, 10)
| >| > Opération : Variable [0001:Cases] = get_squares_between_events(me, 0)
| >| > Opération : Variable [0002:Max Cases] = length(V[1])
| >| > Opération : Variable [0003:Case Courante] = 0
| >| > Boucle
| >| >| > Appeler Script : coordonnees = get(V[1], V[3])
| >| >| > Appeler Script : x = get(coordonnees, 0)
| >| >| > Appeler Script : y = get(coordonnees, 1)
| >| >| > Appeler Script : SL[:zone_courante] = region_id(x, y)
| >| >| > Appeler Script : SL[:event_courant] = event_at(x, y)
| >| >| > Condition : Script : SL[:zone_courante] > 0
| >| >| >| > Sortir de la Boucle
| >| >| >| >
| >| >| > Fin - Condition
| >| >| > Condition : Script : SL[:event_courant] == 0
| >| >| >| > Opération : Interrupteur local A = Activé
| >| >| >| > Sortir de la Boucle
| >| >| >| >
| >| >| > Fin - Condition
| >| >| > Opération : Variable [0003:Case Courante] += 1
| >| >| > Condition : Variable [0003:Case Courante] == Variable [0002:Max Cases]
| >| >| >| > Sortir de la Boucle
| >| >| >| >
| >| >| > Fin - Condition
| >| >| >
| >| > Fin - Boucle
| >| >
| > Fin - Condition"
Cette événement permet de détecter le joueur à partir du moment ou il se trouve à 10 cases environs de l'ennemi. Évidemment si il y a un mur entre le monstre et le joueur, l'interrupteur A ne s'activera pas.
La page 2 contient ma page de course poursuite.
Pour le moment tous fonctionne mais j'aimerai avec ça utiliser un système de son, si le joueur fais du bruit en courant ou en marchant à une certaine distance (Donc il devra s'accroupir) alors l'ennemi va se diriger vers le lieu du son et inspecter la zone.
Seulement comment faire en sorte dans un premier temps que le monstre détecte le joueur derrière son dos et comment faire de modifier la vitesse de déplacement en 3 niveaux : Vitesse normal, accroupie (lente) et rapide (course) tous en permettant au monstre de détecter si le joueur cours derrière lui ?
En sachant que j'utilise le script Rme extended qui ajoute des commandes en plus.
J'imagine quelque chose du genre :
Si le joueur cours à x cases autour du monstres alors le monstre se tournera en direction du joueur.
De même si il marche ou s’accroupi.
Dans cette événement on peut voir que j'ai laissé la zone de détection à 10 cases. J'aimerai ajouter que si le joueur peut se faire repérer de 10 cases face à l'ennemi alors ca sera de 5 cases derrière l'ennemi par exemple.
De même avec une course rapide, la zone de détection passerai de 10 cases à l'avant à 20 et 5 à l'arrière à 10 par exemple.
Je ne sais pas si c'est compréhensible, pour le moment c'est encore flou vu la taille colossale de travail à faire mais j'ai envie de tester quelque chose en m'inspirant du jeu Alien : Isolation.
Pouvez-vous m'aider à trouver une solution pour que mon systeme de chasse fonctionne ou c'est trop ambitieux ?
- Ignis FulgorMembre
- Nombre de messages : 4
Age : 29
Localisation : En pleine nature
Distinction : aucune
Date d'inscription : 24/11/2024
Re: Systéme de chasse comme Alien isolation
Dim 24 Nov 2024 - 13:39
Salut !
Je ne sais pas si j'ai bien compris ce que tu voulais faire. Mais déjà je dirais que les premières choses à faire seraient :
- La détection du héros dans le dos de l'ennemi
- S'accroupir / modifier la vitesse de déplacement
- La "zone sonore" autour du joueur
Puis relier tout ça ensemble.
Pour détecter le joueur dans le dos de l'event ennemi, on va devoir vérifier la direction de l'event ennemi (avec la commande event_direction), sa position (avec les commandes event_x et event_y), et la position du joueur (avec les commandes player_x et player_y)
On aurait donc quelque chose comme :
Pour toutes les directions, avec le calcul qui correspond.
Ensuite, si la variable derriere_ennemi renvoie true alors on a localisé le joueur au bon endroit.
Après, pour obtenir / modifier la vitesse du joueur, il y a la commande player_move_speed, il faut ensuite voir ce qui est nécessaire pour modifier la vitesse (dans un event commun la gestion d'un appui de bouton pour activer/désactiver un mode accroupi par exemple...).
Ca permettra de modifier une "zone sonore" autour du joueur, qu'on mettrait dans une variable et qu'on gérerait avec un pseudo code du genre :
Ensuite avec la commande get_squares_between_events (à placer dans la boucle de l'ennemi) on vérifierait la distance (c'est du pseudo code un peu sale à affiner ici aussi) :
Je pense que pour faire la détection en avant, ça devrait marcher plus ou moins de la même manière en ajustant un peu.
En tout cas, on projet est vraiment intéressant et plutôt ambitieux, mais je pense que c'est tout à fait réalisable en s'y prenant méthodiquement. Le principe de traque et de détection dynamique est une super idée ! RME facilite quand même pas mal la donne pour faire des choses comme ça.
Je ne sais pas si tout ce que je t'ai proposé sera totalement valide, mais je pense qu'il y a l'idée générale. J'espère que j'aurai pu t'aider. Hésite pas à montrer ton avancée au fur et à mesure, j'aimerai bien voir ce système une fois terminé !
Je ne sais pas si j'ai bien compris ce que tu voulais faire. Mais déjà je dirais que les premières choses à faire seraient :
- La détection du héros dans le dos de l'ennemi
- S'accroupir / modifier la vitesse de déplacement
- La "zone sonore" autour du joueur
Puis relier tout ça ensemble.
Pour détecter le joueur dans le dos de l'event ennemi, on va devoir vérifier la direction de l'event ennemi (avec la commande event_direction), sa position (avec les commandes event_x et event_y), et la position du joueur (avec les commandes player_x et player_y)
On aurait donc quelque chose comme :
- Code:
Condition : Si Script "enemy_direction == 2" # BAS
Variable [derriere_ennemi] = script "(player_x == enemy_x && player_y > enemy_y)"
Fin Condition
Pour toutes les directions, avec le calcul qui correspond.
Ensuite, si la variable derriere_ennemi renvoie true alors on a localisé le joueur au bon endroit.
Après, pour obtenir / modifier la vitesse du joueur, il y a la commande player_move_speed, il faut ensuite voir ce qui est nécessaire pour modifier la vitesse (dans un event commun la gestion d'un appui de bouton pour activer/désactiver un mode accroupi par exemple...).
Ca permettra de modifier une "zone sonore" autour du joueur, qu'on mettrait dans une variable et qu'on gérerait avec un pseudo code du genre :
- Code:
Si mode accroupi
player_move_speed(X)
Variable [Zone Sonore] = 4
Fin si
Si mode normal
player_move_speed(Y)
Variable [Zone Sonore] = 8
Fin si
Si mode dash
player_move_speed(Z)
Variable [Zone Sonore] = 12
Fin si
Ensuite avec la commande get_squares_between_events (à placer dans la boucle de l'ennemi) on vérifierait la distance (c'est du pseudo code un peu sale à affiner ici aussi) :
- Code:
Variable [distance de l'ennemi] = get_squares_between_events(me, 0) # Si je ne me trompe pas 0 = le héros
Si Variable [distance de l'ennemi] inférieur ou égal à Variable[Zone Sonore]
#Comportement ici#
Fin Si
Je pense que pour faire la détection en avant, ça devrait marcher plus ou moins de la même manière en ajustant un peu.
En tout cas, on projet est vraiment intéressant et plutôt ambitieux, mais je pense que c'est tout à fait réalisable en s'y prenant méthodiquement. Le principe de traque et de détection dynamique est une super idée ! RME facilite quand même pas mal la donne pour faire des choses comme ça.
Je ne sais pas si tout ce que je t'ai proposé sera totalement valide, mais je pense qu'il y a l'idée générale. J'espère que j'aurai pu t'aider. Hésite pas à montrer ton avancée au fur et à mesure, j'aimerai bien voir ce système une fois terminé !
- LukaRPGMembre
- Nombre de messages : 11
Distinction : aucune
Date d'inscription : 16/11/2024
Re: Systéme de chasse comme Alien isolation
Dim 24 Nov 2024 - 14:26
Désolé si je m'incruste dans vos explication mais je débute sur RPG Maker et je ne savais pas qu’on pouvait faire ce genre de système ! C’est vraiment impressionnant !
Vous parlez de RME, est ce que quelqu’un pourrait m’expliquer rapidement ce que c’est ? Je ne veux pas déranger mais ça m’intéresse beaucoup !
J'espère qu'un jour j'arriverai à faire des chose comme ça !
Vous parlez de RME, est ce que quelqu’un pourrait m’expliquer rapidement ce que c’est ? Je ne veux pas déranger mais ça m’intéresse beaucoup !
J'espère qu'un jour j'arriverai à faire des chose comme ça !
- KingdommangasMembre
- Nombre de messages : 1410
Localisation : Ma tête
Distinction : Débrouillarde notoire é_è [Mist']
Ou celle qui partageait plus vite que son ombre [Gel']
Poisson 2017 [Amal]
Grâce à elle, tout le forum appelle Yamashi "Mamashi" [Yama]
Entraide d'Or
Règne dans l'ombre de la commu'
Youtubeuse beauté reconvertie dans le gaming [Amal']
Date d'inscription : 05/05/2015
Re: Systéme de chasse comme Alien isolation
Ven 29 Nov 2024 - 1:29
houla, alors RME (RPG Maker Extender) est un projet réaliser par un groupe de maker qui consiste a créer un groupe de script a installer sur rpg maker vx ace afin de dépasser les limitations de base du logiciel.
Comme par exemple, afficher du texte (ou variable) à l'écran pour créer une horloge en jeu ou encore d'associer les valeurs zoom d'une image à une variable pour réaliser une barre de vie.
c'est un logiciel qui n'est plus entretenu, donc tu as peu de chance d'obtenir de l'aide dessus. De plus, je déconseille un débutant de commencer avec, RME demande une base de connaissance en programmation pour être utilisé. Il n'est pas nécessaire d'être un programmeur avec 10 ans dans les pâtes, mais ne pas avoir de connaissance du tout est problématique. Car autant les commandes que la documentation sont faites sans penser que des non-programmeur ne connaissent pas le jargon ou les bases. Créant des bugs simples ou personne ne daigne aider car "l'erreur est trop simple/stupide" alors qu'on a suivi la documentation à la lettre.
Comme par exemple, afficher du texte (ou variable) à l'écran pour créer une horloge en jeu ou encore d'associer les valeurs zoom d'une image à une variable pour réaliser une barre de vie.
c'est un logiciel qui n'est plus entretenu, donc tu as peu de chance d'obtenir de l'aide dessus. De plus, je déconseille un débutant de commencer avec, RME demande une base de connaissance en programmation pour être utilisé. Il n'est pas nécessaire d'être un programmeur avec 10 ans dans les pâtes, mais ne pas avoir de connaissance du tout est problématique. Car autant les commandes que la documentation sont faites sans penser que des non-programmeur ne connaissent pas le jargon ou les bases. Créant des bugs simples ou personne ne daigne aider car "l'erreur est trop simple/stupide" alors qu'on a suivi la documentation à la lettre.
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum