Saludos Makeros-Hermanos de la ComunidadGM:


   ¡Bienvenidos a la Guerra de Inteligencia Artificial en su 4ta Edición!

  Siempre quise decir eso... :-[


Cita de: Texic en Septiembre 13, 2013, 12:48:12 AM
El engine calcula un rango de visión para el personaje (para que el personaje no vea a través de cajas y eso). Hay un script llamado scr_ver_enemigos que te devuelve la cantidad de enemigos en vista, y los demás scripts sirven para obtener sus datos. El rango de visión se calcula hacia donde estás mirando, no importa qué dirección tomes para moverte. Bueno, no debería atascarse técnicamente, pero por la naturaleza de las máscaras circulares y los giros a partir de un punto medio puede meterse en una esquina al girar con un pixel en cada lado y eso te imposibilitaría salir con el script de mover (todavía trabajo para arreglarlo), sin embargo podés salir facilmente calculando un camino, que es mucho más fiable que el script mover

  ¿Quieres decir que en la dirección en que esté "mirando" el personaje, o sea su frente sería más o menos la zona que él puede "ver"?  Aun así necesito saber a ciencia cierta cuantos píxeles en profundidad, en ancho... Necesito saber el área delimitada con certeza para poder sacar cálculos precisos...

Claro... tal vez el descubrirlo sea parte del concurso, pero no es justo pues como programador del mismo ya Texic sabe el área con exactitud... me pondré a llorar y se lo diré a mi mamá... :'( :'( :'(

Ahora en serio, ¿qué hago con lo de las áreas de visión? Me quedó muy claro que a través de los objetos no se puede "ver", solo preguntaba cual sería el área en caso de no haber objetos en medio... En caso de que se pueda saber, claro... :-[


Cita de: Mgbu en Septiembre 13, 2013, 09:19:13 PM
Yo es la primera vez que participo y me parece un poco raro lo de las tres hojas en el evento create, no las entiendo, que son las hojas?
Citar10. Trabajar sobre hojas distintas a las que utilizan los scripts defaults que ya vienen con el editable.
  11. En las hojas se deberá incluir un // indicando si la hoja va antes o después del script default y en caso de ser varias numerarlas.
Como varias hojas? Que script default?
Pueden actualizar el SDK poniendo esas hojas así el participante las edita?
Obviamente no hay ningun apuro, ya mucho esfuerzo están poniendo en organizar el concurso!

   Amigo Mgbu:

   Creo eso de las tres hojas se refiere a los íconos "Execute Code" en el "drag & drop" de la pestaña "Code". Debes arrastrar solo dos por que ya habrá uno, el "scr_init_ia":

  * uno será la hoja con el registro, donde colocas todos los datos de la IA que piden en el reglamento
  * y otra hoja donde colocarás tos propios códigos, las variables que vas a utilizar...

  Ahora con eso de las hojas numeradas explicando su orden se refieren a que:

  Por ejemplo... si creas varios "Execute Code" que están dentro del evento
"step" debes indicar en comentarios (//) con un número el orden en que se deben ejecutar cada uno de ellos y con relación al "script" "scr_step_ia"... si alguno debe ejecutarse entes del mismo o después, etc. De esta manera será más fácil de entender las IA cuando se junten en la batalla de todos contra todos. 

   Simplemente creo que es así, pudiera estar equivocado y entonces debería sumarme a tú pregunta y a Texic solo se le queda aclarar la duda...  8)

Un saludo a todos...

¡...Y a Makear...!  ;D



Cita de: Mgbu en Septiembre 13, 2013, 07:32:48 PM
Como se cruzan las puertas? si  me muevo manualmente puedo, pero si calculo un camino no puedo

Tambien me aparece este error cuando me quiero fijar el tipo de un objeto (supongo que es Vida, ya que es el unico objeto cercano)
In script scr_tipo_objeto:
Error in code at line 3:
   return (ds_list_find_value(_objetos,argument0-1)).tipo
                                                     ^
at position 52: Unknown variable tipo


Y por último el sprite de el objeto vida no está centrado, es decir que si me quiero mover hasta su posición debo escribir vida.x+16, vida.y+16
Perdón, esto estaba aclarado en la Nota 2

Ah, y por las dudas, ¿las preguntas de este tipo van acá?
Cuántas preguntas, calculando un camino se puede, pero el camino debe ser válido, fijate que puse en el post principal que la sprite del personaje está centrada, deberías intentar moverte hacia la la x+16,y+16 de la puerta
El error que recibiste puede ser por un sdk obsoleto, bajate el nuevo e importá los recursos reemplazando lo más reciente (con la función de exportar/importar de gm)
También podría ser que hayas hecho mal uso de la función, si hay 2 objetos en vista sólamente podrías acceder poniendo 1 o 2 (a lo mejor empezaste la cuenta desde 0)
En cuanto al reglamento, es básicamente el estándar de las GIA, con ligeros cambios particulares, no es un reglamento demasiado complicado, pero si es largo. El registro de la IA tampoco debe tener un nivel de complejidad alto, puede ser simple, depende de cómo lo quieran hacer




#32 Septiembre 14, 2013, 02:36:30 AM Ultima modificación: Septiembre 14, 2013, 02:41:03 AM por Mgbu
Cita de: Texic en Septiembre 14, 2013, 12:07:13 AM
Cuántas preguntas, calculando un camino se puede, pero el camino debe ser válido, fijate que puse en el post principal que la sprite del personaje está centrada, deberías intentar moverte hacia la la x+16,y+16 de la puerta
Ah, yo me movía directamente escribiendo coordenadas de otra habitación, entonces hay que moverse a la puerta pero no moverse hacia atrás de ella
Cita de: Texic en Septiembre 14, 2013, 12:07:13 AM
El error que recibiste puede ser por un sdk obsoleto, bajate el nuevo e importá los recursos reemplazando lo más reciente (con la función de exportar/importar de gm)
También podría ser que hayas hecho mal uso de la función, si hay 2 objetos en vista sólamente podrías acceder poniendo 1 o 2 (a lo mejor empezaste la cuenta desde 0)
En cuanto al reglamento, es básicamente el estándar de las GIA, con ligeros cambios particulares, no es un reglamento demasiado complicado, pero si es largo. El registro de la IA tampoco debe tener un nivel de complejidad alto, puede ser simple, depende de cómo lo quieran hacer
El còdigo creo que está bien, es este:
for (i = 1; i <= scr_ver_objetos(); i += 1) {
    if (scr_tipo_objeto() = "Vida") {
        exito = scr_calcular_camino(x, y, scr_pos_objeto_x(i)+16, scr_pos_objeto_y(i)+16)
        if (exito = true) {
            scr_iniciar_camino()
            show_debug_message("Moviendome")
            break;
            }
        else show_debug_message("No encuentro camino")
        if (scr_point_free(scr_pos_objeto_x(i)+16, scr_pos_objeto_y(i)+16) = false) show_debug_message("No se puede")
        }
}

Vale destacar que si cambio if (scr_tipo_objeto() = "Vida") por if (true) todo funciona perfectamente, lo único es que no distingue entre cajas de vida y armas. Ah! y el error apacere al intentar obtener el tipo de una Pistola también
Mañana pruebo con una SDK nueva
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


Si, es el sdk, justamente tratando de adaptarla a studio cometí un error que causaba ese bug, si bajás la nueva sdk debería estar solucionado. Disculpen las molestias y bugs, espero que eso no quite la diversión de la GIA, realmente no encontré los bugs probando solo, resultaron mucho más visibles con tanta gente trabajando en ello, y eso que varias personas probaron el engine para debuguear




#34 Septiembre 14, 2013, 05:45:26 AM Ultima modificación: Septiembre 14, 2013, 07:24:25 AM por brunoxzx
Cita de: Texic en Septiembre 14, 2013, 04:03:51 AM
Disculpen las molestias y bugs, espero que eso no quite la diversión de la GIA, realmente no encontré los bugs probando solo, resultaron mucho más visibles con tanta gente trabajando en ello, y eso que varias personas probaron el engine para debuguear
No tienes de que disculparte, dejar bugs es la cosa más "humana?" que puede existir. Y que los testers no los encuentren también es parte de su naturaleza.

@ferhand
El rango de visión es de 60° (30° hacia un lado y 30° hacia el otro a partir del centro) y la distancia limite es de 160 pixeles.

Me salen algunos errores en los scripts para obtener las coordenadas de los objetos "scr_pos_objeto_x(i)" y "Y". No importa que objeto esté viendo siempre retornan el mismo valor. Ups era que comenzaba a contar el indice de los objetos desde cero (la tercera vez que esto me sucede).

Te sugiero poner el numero de revisión del engine en su nombre y en el post principal. Para que no nos confundamos.

Ahora sí, gracias! También voy a modificar el SDK para quitar ese splash que me hace perder mucho tiempo cada vez que pruebo ¿No me van a descalificar por algo asi? :P
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


Cita de: Mgbu en Septiembre 14, 2013, 03:57:05 PM
Ahora sí, gracias! También voy a modificar el SDK para quitar ese splash que me hace perder mucho tiempo cada vez que pruebo ¿No me van a descalificar por algo asi? :P
Jaja, espero que no, siendo así debería estar descalificado desde el primer día.

No, siéntanse libres de modificar el SDK a su gusto para los testeos. Pueden tocar cuanta variable quieran. Lo que sea su IA final y cómo funcione el SDK para mostrar los encuentros es otro tema




Interesante...
Un problema bien planteado, es un problema resuelto.

Visita mi grupo de desarrollo >>>
http://www.comunidadgm.org/index.php?topic=18299.0

a mi me ha dado un error linea 34 event create, objcontrol

Pero si ni siquiera tiene 34 lineas el create del obj_control... A lo mejor te olvidaste de poner la IA en el room, copiá y pegá el error que recibiste




Sigo molestando... pero creo que esto es importante

Cuando hago raycast con este código: show_debug_message("Raycast hacia coord = " + string(scr_raycast(x, y, x, y-150))) recibo 1, o sea que detecta colisión, pero cuando lo hago con raycast_ext recibo 0,
O sea por las dudas:

show_debug_message("string(scr_raycast_ext(x, y, x, y-150))) Devuelve 0
show_debug_message("string(scr_raycast(x, y, x, y-150))) Devuelve 1

No tiene sentido, raycast_ext debe darme una distancia
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


Al contrario, lo correcto es que me digan los bugs así pueden desarrollar correctamente la IA sin impedimentos por culpa de mis errores. Lo acabo de arreglar, era un error en lo que devuelve la función, tendía a devolver el id del objeto con el que colisionaba sin tener en cuenta que el rayo se acortaba hasta no colisionar, ni siquiera devolvía la distancia, no sé en qué estaba pensando cuando lo hice




@Mgbu: Lo acabo de probar y es cierto no funciona.

@Texic: Disculpa me podrías facilitar que significa el estado "Idle" que se  obtiene con el "scr_estado_enemigo()"?

Edit:justo escribió texic.

Cita de: brunoxzx en Septiembre 16, 2013, 10:16:28 PM
@Mgbu: Lo acabo de probar y es cierto no funciona.

@Texic: Disculpa me podrías facilitar que significa el estado "Idle" que se  obtiene con el "scr_estado_enemigo()"?

Edit:justo escribió texic.
Idle se refiere a que no se cumple ninguno de los otros dos estados (Disparando o Recargando), podría estar moviendose, estar quieto, estar girando, simplemente todo lo que no sea estar disparando o recargando