¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3394 miembros registrados.
El último usuario registrado es Yember Games.

Nuestros miembros han publicado un total de 79794 mensajes en 11255 argumentos.
Navega con Google Chrome
[DESCARGA]

Inteligencia Artificial

 :: RPG Maker :: Ayuda RPG

Ver el tema anterior Ver el tema siguiente Ir abajo

Inteligencia Artificial

Mensaje por Dariel Lopez el 2014-02-11, 22:18

Hola a todos.
Resulta que hice un evento en un pueblo (Zem) en donde por las noches aparece un monstruo que ataca al PP(Personaje Principal), y me gustaría saber como hacer para que ese monstruo siga al PP a donde sea que este vaya sin importar si hay algún obstáculo entre ellos. Al monstruo le puse el comando Seguir al jugador, y mientras no haya un obstáculo entre ellos lo sigue sin problemas, pero cuando hay un obstáculo como sucede en la imagen de abajo el monstruo se queda atorado y ya no sigue al PP a menos que me regrese y le "ayude" a seguirme.
Tal vez con el comando Obtener posición actual se pueda lograr que el monstruo esquive todos los obstáculos y siga al PP a donde sea que este vaya, pero no sé como usar ese comando, así que si alguien me ayuda se lo he de agradecer.
Aquí dos imágenes que ilustran lo que digo:



En la imagen de arriba el monstruo se queda junto a la cerca mientras el PP está del otro lado, y mientras el PP no regrese por el camino del monstruo este no se mueve de ahí, así que me gustaría que el monstruo tuviera la capacidad de resolver estos problemas como saltando la cerca o rodeándola más no sé si se pueda lograr eso.



Y en esta imagen de arriba el monstruo se queda parado junto a la pared de roca mientras el PP permanece arriba.
No sé si se le pueda dar la inteligencia necesaria al monstruo para que solucione esos problemas, y si se puede y alguien sabe como hacerlo me gustaría que me ayudara.
De antemano muchas gracias a quien se digne a ayudarme.

Dariel Lopez
Veterano
Veterano

0/3

Créditos 522

Gracias : 22

Volver arriba Ir abajo

Re: Inteligencia Artificial

Mensaje por xn1 el 2014-02-12, 01:19

Acerca del engine/script para buscar un camino, no lo hagas.

Yo que tu modificaría el mapa para que no se atorara tan fácil, o haría que saltara cuando se quede atorado. Lo de saltar es fácil, revisa que no se este moviendo, calculas que el tile detrás del héroe este libre ,trazas una linea recta y saltas.

Un engine de buscar camino seria jodida mente complicado y según entiendo solo lo usarías una ves.
No vale la pena.

Te dejo este tutorial para hacer un engine parecido al que buscas.
http://rpgmaker.net/tutorials/547/
Esta en ingles, pero el traductor de Google funciona bien con este.


xn1
Soñador
Soñador

0/3

Créditos 176

Gracias : 15

Volver arriba Ir abajo

Re: Inteligencia Artificial

Mensaje por orochii el 2014-02-12, 01:23

Hay una forma. Es digamos que simple.

Necesitarás usar regiones. Como las que se usan para los encuentros. Deberás poner un área específica para un "comportamiento deseado" en ciertas ocasiones, por ejemplo:

Ahí tenemos dos "comportamientos". Uno es saltar hacia arriba de la cerca (naranja). Otro es saltar hacia abajo (azul). Pintas esas partes, cada una con una región distinta (y que no uses en nada más, para algo son un montón xD).

Ahora, vamos con el evento. La lógica es así:

- Guardar posición del monstruo en variable.
- Revisar qué región hay en esa posición.
- Revisar hacia dónde mira el enemigo (ésto nos ayuda a predecir que el monstruo está intentando llegar al otro lado -*monstruo mira al héroe* :'C yo sólo quiero comerte!-).
- Si el monstruo mira hacia la dirección adecuada, éste realiza un movimiento específico (saltar 2 cuadros hacia arriba o abajo).

He hecho una pequeña demostración, porque pensé que sería más fácil de entender. Es una demostración básica, pero con un poco de maña puedes hacer que el monstruo salte laderas, atraviese mares, se teletransporte, mate transeúntes, compre pastafrola... de todo.
https://dl.dropboxusercontent.com/u/13006190/Ejemplo%20perseguidor%20menos%20tonto.rar

Em, salut!

orochii
Caballero Shiro
Caballero Shiro

0/3

Créditos 6045

Gracias : 266

http://drekirokr.weebly.com/

Volver arriba Ir abajo

Re: Inteligencia Artificial

Mensaje por Dariel Lopez el 2014-02-12, 02:28

Lo del script está descartado xn1, porque miré que producen lag y ya tengo bastante con el script de luz de Khas.
Y me imagino que sí debe de ser muy complicado hacer el engine que necesito para esto porque lo que quiero lograr es complicado(lo que quiero si lo logro o lo logra alguien lo quiero usar también con otros fines), así que habrá que probar diferentes métodos.
Y voy a ver el engine que mencionas a ver qué tal está, y muchas gracias por tu respuesta.
Y te agradezco tu respuesta orochii y la gentileza de hacer una demo que voy a bajar para estudiarla a ver si logro lo que quiero, y luego les aviso si logro algo.
Gracias a ambos(xn1 y orochii) por su respuesta.

Edito: Ya pude lograr lo que quería basándome en tu demo orochii aunque no a la perfección como quisiera.
Pero lo que de plano no pude corregir es que cuando el monstruo queda fuera del mapa deja de seguir al PP, y solo cuando voy a buscarlo y aparece de nuevo en pantalla vuelve a seguir al PP. ¿Hay alguna forma de solucionar eso, o solo puede seguir al PP cuando ambos están en la pantalla?
Ah, y estaba revisando lo que pasaría si estoy en la parte de arriba del pueblo y se hace de noche(este monstruo solo aparecerá en las noches), y resultó que el monstruo no aparece por ningún lado hasta que bajo a la parte sureste del pueblo que es por donde llega el monstruo y entonces sí aparece. ¿Se podrá solucionar ese problema o a fuerzas tengo que estar en el lugar donde el monstruo aparece para que luego me siga?

Estaba reescribiendo este mensaje cuando escribiste el tuyo ljury, y como dije arriba ese es un problema al que aún no le encuentro solución, pero seguiré buscando a ver si logro corregirlo porque el monstruo solo aparece cuando él y el PP están en pantalla.
Gracias por comentar.


Última edición por Dariel Lopez el 2014-02-12, 03:48, editado 1 vez

Dariel Lopez
Veterano
Veterano

0/3

Créditos 522

Gracias : 22

Volver arriba Ir abajo

Re: Inteligencia Artificial

Mensaje por ljury el 2014-02-12, 03:33

Un enfoque mas flojo:
- "ver si el monstruo esta a cierta distancia del protagonista" (cuando el protagonista ya no lo ve a causa de la cámara)
- Hacer que el monstruo simplemente atraviese cualquier obstáculos.

Obviamente es una solución ingenua (y de parte sucia) que puede producir otros errores según la dinámica del mapa.

ljury
Soñador
Soñador

0/3

Créditos 226

Gracias : 6

Volver arriba Ir abajo

Re: Inteligencia Artificial

Mensaje por Eron el 2014-02-12, 09:56

No creo que la solución de Ijury sea adecuada, daría errores con demasiada frecuencia.

Hacer un pathfinding o como se llame (lo que pides) general por engines no es nada fácil, pero hacerlo para un mapa en concreto tampoco lo es tanto =D es poner condiciones. Un poco lo que dijo Orochii si le entendí bien, es cuestión de hacer el engine por partes.

Si el héroe está debajo del obstáculo y el bicho también --> seguir a héroe
Si el héroe está debajo del obstáculo y el bicho encima --> ir a la "puerta" (o zona de paso)
Si el héroe está encima del obstáculo y el bicho debajo --> ir a la "puerta" (o zona de paso)
Si el héroe está encima del obstáculo y el bicho también --> seguir a héroe

Y así sucesivamente para cada uno de los obstáculos que puedan ocasionar problemas. Para hacer lo de ir a la "puerta" quizá sea necesario un pequeño script, no de pathfinding sinó de movimiento simple de evento, no se como lo hizo Orochii x'D

Eron
Soñador
Soñador

0/3

Créditos 1235

Gracias : 40

Volver arriba Ir abajo

Re: Inteligencia Artificial

Mensaje por HebiLee el 2014-02-12, 10:25

También puedes generarlo de manera aleatoria, es decir:

- Pones un evento en proceso paralelo que se active cuando el bicho te vea.

- El comprobador comprueba que el bicho se esté moviendo cada x tiempo mediante variables.

- Si el bicho está atorado y no se ha movido en x tiempo haces que cambie de "seguir a heroe" a (o movimiento aleatorio).

De esta forma controlamos que el monstruo no se quede quieto en un sítio y aunque no termine siguiéndote dará efecto de que "está vivo" Aunque puede encontrarte de igual manera.

¡Espero que tengas suerte!, implementar IA en RpgMaker es algo muy complejo XD nisiuqiera los juegos "profesionales" tienen una IA "decente"

HebiLee
Soñador
Soñador

0/3

Créditos 112

Gracias : 16

http://www.youtube.com/leehebi

Volver arriba Ir abajo

Re: Inteligencia Artificial

Mensaje por orochii el 2014-02-12, 18:19

Yo usé regiones. En RMVX hay un cuarto layer, que son regiones. Sustituyen las áreas del RM2k/3 y RMVX. Lo bueno es que las regiones funcionan como tags, es decir, asignas un número a cada tile por separado EN EL MAPA (osea, no es configuración en base de datos).

Con eso en mente, era cuestión de hacerse unos "casos". Si el monstruo está en esta región del mapa, está frente a un obstáculo. Si el monstruo en cierto momento sigue viendo hacia una cierta dirección, quiere decir que el héroe se encuentra hacia allá, pero no puede pasar. Así que, manita de dios (?) cumple su capricho. ¡Anda, a devorarlo!

Después de setear las regiones, el engine en su forma básica funciona así:
Código:
Evento en paralelo
Condición de inicio: Interruptor [checarRegión] encendido.
===
<>Operación de variable: [enemigoX] poner Evento enemigo1 Posición X
<>Operación de variable: [enemigoY] poner Evento enemigo1 Posición Y
 ** Comentario 1**
<>Obtener información de posición*- [regiónEnemigo] = ID región en [enemigoX] [enemigoY]
<>Operación de variable [direcciónEnemigo] poner Evento enemigo1 Dirección
** Comentario 2**
<>Condición: direcciónEnemigo == 8 (arriba)
  <>Condición: regiónEnemigo == 1 (depende de tu mapa .-.)
    <>Mover evento [enemigo1] -Saltar (0,-2)
  :Fin
:Excepción
  <>Condición: direcciónEnemigo == 2 (abajo)
    <>Condición: regiónEnemigo == 2
      <>Mover evento [enemigo1] -Saltar (0,2)
    :Fin
  :Fin
:Fin
<> Operaciones de interruptor: [checarRegión] poner OFF.

:Comentario 1- acá en la demo, yo reutilicé las variables porque no necesitaría la posición de nuevo, pero anda, les pongo otros nombres:
:Comentario 2- Éstas condiciones consisten en lo siguiente. Hacemos casos para cada dirección necesaria. Eso a la larga nos ahorra algunas líneas. Luego en cada dirección checamos si el enemigo está en la región que queremos:
* Get Location Info. No sé cómo se llama en las traducciones a español, xD. Tercera página, sección mapa (derecha), quinto botón.

Ahora bien. Para este engine, hice un arreglo a la ruta de seguir personaje. No uses la opción "Acercarse/Perseguir héroe" directamente. Sino, usa Personalizada, y pon lo siguiente.
Código:
<> Mover hacia el héroe.
<> Mirar hacia el héroe.
<> Encender interruptor: [checarRegión]
El mover hacia el héroe es obvio xD. Luego el mirar hacia el héroe arregla algunos "bugs" en la tontería artificial XD (?). Y el encender interruptor nos asegura que realice el chequeo del evento que transcribí antes SOLO después de que haya terminado de hacer los movimientos que pusimos. Otra cosa, importante,

Marcar las casillas.

Y ya. ='D.

orochii
Caballero Shiro
Caballero Shiro

0/3

Créditos 6045

Gracias : 266

http://drekirokr.weebly.com/

Volver arriba Ir abajo

Re: Inteligencia Artificial

Mensaje por Dariel Lopez el 2014-02-12, 22:45

Gracias a Eron, HebiLee y orochii por contestar, y a los que ya habían contestado se los agradezco de nuevo.
Y como ya dije anteriormente el problema que no puedo solucionar es que cuando se hace de noche que es cuando aparece el monstruo, tengo que ir hasta el lugar donde aparece para que se mueva, porque de lo contrario no se mueve.
Y sí, yo sabía que sería muy difícil darle una inteligencia decente a los enemigos pero esta parte es muy importante en mi juego y por eso la incluí de la mejor manera posible, y aunque no es perfecta cuando menos es jugable.
Gracias de nuevo a todos por contestar.

Dariel Lopez
Veterano
Veterano

0/3

Créditos 522

Gracias : 22

Volver arriba Ir abajo

Re: Inteligencia Artificial

Mensaje por Ledai el 2014-02-12, 23:02

Haz que al entrar en el mapa el evento se traslade a una posición cercana a la tulla, se puede hacer mediante variables y es facil, colocas un evento en automático que calcule tus coordenadas, después le retas 2 al eje Y (o lo que gustes) para que el enemigo aparezca detrás tuyo (o a un lado)y trasladas el evento enemigo a esas coordenadas, borras el evento que calcula las posiciones y Listo, eso cada vez que entres al mapa y sea de noche ^_^

Ledai
Aventurero
Aventurero

0/3

Créditos 1368

Gracias : 126

http://ahurallg.blogspot.com.es/

Volver arriba Ir abajo

Re: Inteligencia Artificial

Mensaje por Dariel Lopez el 2014-02-13, 02:01

Gracias por responder y por tu consejo Leda, y algo así hice pero no lo hice bien porque no me funcionó: pero seguiré tus consejos para ver si puedo hacerlo porque no soy bueno usando variables, de hecho apenas estoy aprendiendo a usarlas.
Gracias de nuevo.

Dariel Lopez
Veterano
Veterano

0/3

Créditos 522

Gracias : 22

Volver arriba Ir abajo

Re: Inteligencia Artificial

Mensaje por orochii el 2014-02-13, 02:36

Una pregunta cortita pero aguántenme... ¿Tienes algún script antilag?

orochii
Caballero Shiro
Caballero Shiro

0/3

Créditos 6045

Gracias : 266

http://drekirokr.weebly.com/

Volver arriba Ir abajo

Re: Inteligencia Artificial

Mensaje por Dariel Lopez el 2014-02-13, 03:14

No tengo ninguno orochii aunque he visto cuando menos uno pero no lo usé, ¿porqué lo preguntas si se puede saber?

Dariel Lopez
Veterano
Veterano

0/3

Créditos 522

Gracias : 22

Volver arriba Ir abajo

Re: Inteligencia Artificial

Mensaje por orochii el 2014-02-13, 04:04

Los antilag muchas veces funcionan así: si un evento no está en pantalla, no se actualiza. Y no actualizarse, muchas veces, quiere decir no moverse, ni cambiar gráfico, ni nada. Por eso lo preguntaba, quiza el evento salía de pantalla y algún antilag mandaba a ignorarlo xD.

Tendré que ver un poco, quiza sea una tontería del funcionamiento default del VXA.

orochii
Caballero Shiro
Caballero Shiro

0/3

Créditos 6045

Gracias : 266

http://drekirokr.weebly.com/

Volver arriba Ir abajo

Re: Inteligencia Artificial

Mensaje por Dariel Lopez el 2014-02-13, 05:10

Ahora entiendo el porqué de tu pregunta orochii, y como yo no sé nada de scripts lo dejo en tus manos si no es mucha molestia.

Dariel Lopez
Veterano
Veterano

0/3

Créditos 522

Gracias : 22

Volver arriba Ir abajo

Re: Inteligencia Artificial

Mensaje por Contenido patrocinado Hoy a las 00:02


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Ayuda RPG

Permisos de este foro:
No puedes responder a temas en este foro.