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
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
227
Guerra de IAs (GIA) / Re:GIA_04 Maze Shooter
Septiembre 14, 2013, 12:07:13 AMCita de: Mgbu en Septiembre 13, 2013, 07:32:48 PMCuá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
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)Código [Seleccionar]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
Perdón, esto estaba aclarado en la Nota 2
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
Ah, y por las dudas, ¿las preguntas de este tipo van acá?
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
228
Guerra de IAs (GIA) / Re:GIA_04 Maze Shooter
Septiembre 13, 2013, 06:42:12 AM
Listo, ya está arreglado. Sobre correr, si, es una buena idea a implementar, pero es muy complicada por los tipos de movimiento involucrados, además de que habría que meter un chequeo en varios scripts para no ejecutarse si está corriendo, y el hecho de que la variable que maneja si estás corriendo o no debería durar 2 steps en vez de 1 y eso complicaría más las cosas. Es una buena sugerencia pero lamentablemente no puedo hacer un cambio así de grande en el engine a estas alturas, podría buguear o inhabilitar muchas cosas
229
Guerra de IAs (GIA) / Re:GIA_04 Maze Shooter
Septiembre 13, 2013, 02:17:34 AM
Ya eliminé las referencias a image_angle a ver si soluciona el error, gracias por el tip bruno, no había trabajado mucho con top-down antes
230
Guerra de IAs (GIA) / Re:GIA_04 Maze Shooter
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
231
Guerra de IAs (GIA) / Re:GIA_04 Maze Shooter
Septiembre 12, 2013, 11:43:40 PM
El evento 1 se activa cuando un enemigo dispara o recarga cerca (en el caso del disparo a una distancia de 300 y en la recarga 200 ya que hace menos ruido). En ese preciso momento se activa el evento y se pueden obtener sus datos de manera normal con el script scr_ver_enemigos, duran apenas un pestañeo, nuestra ia puede saber por el sonido de dónde vino, qué arma se usó y qué tipo de acción se realizó (también se puede obtener la vida, cosa que no es realista, pero es una nimiedad)
232
Guerra de IAs (GIA) / Re:GIA_04 Maze Shooter
Septiembre 12, 2013, 11:02:15 PM
Te fijaste teniendo 2 armas? Porque el chequeo está puesto para que cambie si es que hay un arma en el otro slot. Inicialmente el no llevar arma iba a implicar un cuchillo, pero me dijeron que sería inutil así que no puse nada. Fijate que para recoger un arma no es necesario usar el slot actual, es cuestión de hacer un chequeo a mano sobre qué conviene antes de agarrarla
Declaré las variables para debuguear porque tenía que dibujar un par de cosas, siguen ahí porque me olvidé de sacarlas jaja
Declaré las variables para debuguear porque tenía que dibujar un par de cosas, siguen ahí porque me olvidé de sacarlas jaja
233
Guerra de IAs (GIA) / Re:GIA_04 Maze Shooter
Septiembre 12, 2013, 09:41:54 PM
Planeaba hacer los cambios que me dijiste en vez de cambiar de editable. Justamente eso hice con el personaje, acabo de agregar el chequeo para que no cambie si no hay arma y lo agregué por defecto en el room. El slot actual lo pueden llevar ustedes, tampoco me pareció necesario hacer un script que te lo devuelva porque se sabe el valor inicial de antemano. Ya mismo reviso las diagonales (Ya están reparadas, era un error por usar la función ceil)
Por cierto gracias por el debug, ha sido el más aplastante en mucho tiempo, pero da en el blanco y muy rapido jaja
Por cierto gracias por el debug, ha sido el más aplastante en mucho tiempo, pero da en el blanco y muy rapido jaja
234
Guerra de IAs (GIA) / Re:GIA_04 Maze Shooter
Septiembre 12, 2013, 09:09:17 PM
Sobre los parientes, ya son parientes de obj_ia, no es realmente necesario que dejen el evento step ni create, con una llamada a los eventos parientes sería suficiente, pero no me molesté porque no veo la necesidad de esconder el funcionamiento del engine. Es más, podrían revisar todo si quisieran, es cosa de ustedes mirar el evento step o no. La razón por la que creí que no funcionaba en studio era porque antes estaban bugueadas las funciones collision. Sobre cambiar arma, tiene que ser cuando el cooldown del arma esté en 0, el cooldown se incrementa al disparar y al recargar, dura más según el arma que usen. Sobre el script mover, qué tipo de bug? Si es sobre el deslizamiento depende de dónde lo mires, en ningún lado especifica que va a deslizar, pero lo acabo de cambiar si es que así te resulta más cómodo
Sobre los accesos a eventos, es por cuestiones internas del engine que funciona así, pero con esos dos eventos debería ser más que suficiente
La tecla A era usada como debug, ya la arreglé, podrían haber usado las flechas xD
Sobre los accesos a eventos, es por cuestiones internas del engine que funciona así, pero con esos dos eventos debería ser más que suficiente
La tecla A era usada como debug, ya la arreglé, podrían haber usado las flechas xD
235
Guerra de IAs (GIA) / Re:GIA_04 Maze Shooter
Septiembre 12, 2013, 03:13:44 PM
Interesante, funciona en gm studio? Bueno por mi parte no hay oposición, al final todos van a correr en el mismo game maker, mientras que funcione para programar perfecto, me lo voy a tener que bajar para poder pasar las IA al editable final en cada encuentro, pero por mi no hay problema
Sobre lo que mencionaste, acabo de agregar los scripts, recién es el primer día. Les recomiendo a todos mirar cada tanto si tienen el último sdk porque puedo arreglar errores o, durante la primera semana, agregar cosas que se me pasaron por alto (siempre y cuando contribuyan al gameplay y a la inteligencia de las IA)
Sobre lo que mencionaste, acabo de agregar los scripts, recién es el primer día. Les recomiendo a todos mirar cada tanto si tienen el último sdk porque puedo arreglar errores o, durante la primera semana, agregar cosas que se me pasaron por alto (siempre y cuando contribuyan al gameplay y a la inteligencia de las IA)
236
Noticias / La GIA 4 ha comenzado!!
Septiembre 12, 2013, 02:47:15 AM
Como dice el título, ya ha dado comienzo la cuarta entrega de Guerra de IAs, los interesados pasen por este tema
http://www.comunidadgm.org/index.php?topic=19036.0
No conoces la GIA?
Espero que, como en todas las entregas, haya mucha concurrencia y entusiasmo. Suerte a todos los participantes!
237
Guerra de IAs (GIA) / GIA_04 Maze Shooter
Septiembre 12, 2013, 02:43:40 AM
YA ESTÁN LOS RESULTADOS DEL QUINTO ENCUENTRO!
Veanlo en el video que está debajo
Veanlo en el video que está debajo
Compañeros de CGM, el momento ha llegado. Ha pasado mucho tiempo desde la última GIA, pero ha llegado la hora de ver las mentes más grandes de CGM competir entre sí por la supremacía total. La GIA de este año será un brutal top-down shooter en donde todas las IA se asesinarán entre sí para sobrevivir y lograr el mejor puntaje. Los datos de cada ronda serán actualizados en este mismo mensaje a medida que transcurra la GIA. La fecha del primer encuentro será el 25 de Septiembre, así que manos a la obra!
Antes del reglamento les dejo un video promocional armado por Daz
Reglamento GIA 4
CitarBases de Guerra de IAs
¿Qué es GIA?
Guerra de IAs, mejor conocido bajo las siglas "GIA" tiene como fin el ser un concurso en donde compitan IAs (Inteligencias Artificiales) en un marco de un videojuego.
Los participantes se inscriben y generan sus IAs segun el marco y genero en el que se establezca el concurso. Por ejemplo, batallas de naves, carreras, un ajedrez, etc.
El concurso consta de una serie de rondas que finaliza cuando se determina al Campeón definitivo. En cada ronda, la IA vencedora quedará con el título de Campeona. Luego, habrá un lapso de X semanas (ej: 2 semanas) para que los competidores intenten mejorar sus IAs y asi destronar a la IA Campeona. Este ciclo se repetirá hasta la ronda en la que la ultima IA Campeona no sea destronada quedándose asi con el título de Campeona definitiva y siendo asi la ganadora del concurso.
Luego existe una segunda etapa del concurso en la que una ves declarado al ganador del concurso se liberan todos los codigos de fuente de las IAs participantes son sus respectivos registros para que el material generado sirva a todo el mundo.
A modo de incentivar la creación de IAs, una vez finalizado el concurso se seguirán aceptando IAs. Claro que no estarán en el marco del concurso ni competirán por el premio pero será una forma de seguir generando material sobre IAs para el genero.
Vamos a dar un ejemplo:
"Supongamos que el tema seleccionado para la edición es "Carrera de Autos", en ese caso la IA campeona seria la que llegue en primer lugar."
Pero como se dijo antes, habrá un plazo en donde los demás participantes podrán intentar derrocar a la IA Campeona. Y así sucesivamente hasta que se declare una IA definitiva.
Luego de ello todos los registros de los participantes con sus respectivas IAs serian liberadas a modo de fomentar el aprendizaje por medio de una competencia.
En este momento se podrán seguir mejorando las IAs a partir de los códigos ya liberados. Aunque la Campeona ya haya sido declarada como oficial Campeona eterna, eso no quita que pueda ser superada una vez que se liberen los códigos.
Para hacer las IAs los participantes van a trabajar sobre un editable pre-diseñado con el engine del tema y género del concurso. Los participantes solo van a tener la capacidad de trabajar (picar código) sobre un solo objeto que será el del Droide/IA que va a representar al jugador. Luego, el encargado del concurso juntará todo en un editable maestro en donde se definen las rondas y compiten las IAs.
Reglamento General:
Las acciones que pueda realizar la IA van a estar determinadas por unos scripts a los que van a tener que llamar, ubicados en el grupo "Usables".
Dentro de las cosas que podrán programar sobre la IA hay ciertas reglas que deben seguir:
1. Solo se trabaja sobre el objeto de la IA propia.
2. No se pueden modificar variables existentes, solo chequearlas. Ej: X, Y, speed, globales.
3. Solo se puede modificar variables creadas por uno mismo.
4. No se puede hacer uso del evento draw.
5. No se pueden crear instancias.
6. Si se crean scripts deberán llamarse "scr_nombredeljuegador_nombredelscript"
7. Habrá un lapso de al menos 3 días entre cada IA enviada.
8. No se puede hacer la IA para un room especifico, debe ser capaz que funcionar bien en cualquier ambiente. Ej: if room=x {blabla} NO
9. Si una IA relentiza demasiado el juego el juez puede optar por no validarla.
10. 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.
12. A la hora de enviar el editable modificarle el nombre agregándole un _nombre del participante al final del mismo. EJ: GIA_01 La Carrera de los Droides_KrakenHimoto
Este tipo de acciones invalidaran a las IAs, y en caso de ser groseras como querer Cerrar el juego (como algo muy obvio) podría sancionarse al jugador invalidándolo a presentar mas IAs.
Esto no es una regla, pero es recomendable que mientras participan no liberen el código cosa de que cada jugador tome distintos rumbos que es donde toma gracia el concurso.
Registro de las IAs:
Los jugadores deberán hacer un seguimiento de los problemas que les fueron surgiendo en el desarrollo de sus IAs, tanto los planes que fueron cambiando de rumbo como las dificultades a lo largo de los niveles.
Deberán ponerlo con un // en el evento create del objeto IA en hojas a parte.
El Evento Create estará conformado de 3 partes:
La 1er hoja default con el script scr_create();
La 2da hoja con el registro;
La 3er hoja con los códigos propios de la IA;
Haciendo referencia a la Hoja 2, deberá estar compuesta por:
DATOS de la IA.
También deberían agregar la fecha de inicio y finalización de la IA más el nombre del creador y la versión de la IA.
Explicación de como piensa la IA.
Ej:
-Primero busca armas y evade confrontaciones con enemigos escondiéndose en la caja más cercana
-Una vez que consigue buenas armas acepta cualquier confrontación realizando movimientos evasivos
-Si tiene poca vida se retira para buscar vida
Explicación de problemas surgidos .
Ej:
La realización del algoritmo que recorre las habitaciones fue simple, podría haber mejorado mucho el sistema de búsqueda.
Esto trajo consecuencias a la hora de conseguir rapidamente el armamento ya que daba vueltas por la habitación inclusive cuando debería saber que no hay nada, revisaba varias veces algunas zonas
Es recomendable que vallan actualizando el registro diariamente para no perder rastros de las IAs, también los ayudará a tener noción de la evolución de sus IAs.
GIA_04 Maze Shooter
Ésta edición de GIA consiste en una batalla de supervivencia estilo shooter dentro de un maze generado de manera aleatoria.
* Las batallas serán de todos contra todos sumando puntos por cada IA destruida y por durar más tiempo en la partida. Al finalizar tres rondas se verá una tabla de puntajes que determinará quien es la IA campeona.
* Los Personajes cuentan con 2 slots para guardar armas e iniciarán con una pistola cargada con 72 balas. Podrán buscar en cada cuarto un arma nueva o más balas para su arma, siendo posible encontrar Pistolas, Ametralladoras y Escopetas.
* El disparo de pistola hace 5 puntos de daño, el disparo de ametralladora hace 2 punto de daño y el disparo de escopeta hace 3 puntos de daño por perdigón (se disparan 5 por carga, y se dispersan rapidamente). Los personajes cuentan con 100 puntos de vida.
* Las rondas tendrán un tiempo limite de 240 segundos.
Especificaciones de GIA_04
* Deberán colocar en un .zip/rar el editable modificado.
* Deberán enviarlo a kurtlobato@gmail.com, enviarmelo por mp o en el último de los casos por facebook (Kurt Lobato)
* No se podrá hacer uso de funciones de chequeo de colisión o posiciones, sólo se pueden utilizar las funciones que están en el grupo "Usables" para ese propósito (la idea es que la IA tenga un rango de visión propio que es precalculado en el engine, no se debe romper ese concepto)
* Deberán poner sus códigos en el evento User Defined 0
FAQ
¿Cuando comienza GIA Maze Shooter y cuanto durará?
El primer encuentro será el 25 de Septiembre del 2013. La duración depende de la intensidad de las batallas y cuánto tarde una en quedar campeona, pero habrá un encuentro por semana.
¿Cuanto tiempo me puede quitar el participar de esta competencia?
Es muy dependiente de cada participante, pero yo creo que con un par de días que le dediques a conciencia ya tendrás una IA mas que aceptable. Si hablamos de que la competencia probablemente dure mas de 1 mes estamos hablando de ínfimo tiempo de inversión.
¿De a cuantos personajes se harán las batallas?
Depende de la cantidad de IA's participantes, pero la totalidad participaran en todas las rondas, el mapa generado será más grande o más chico dependiendo de ello.
¿Se puede programar la IA en D&D?
No, las IAs deberán estar hechas 100% en código (GML).
¿Si los personajes colisionan qué pasa?
Nada, eso entorpecería mucho el gameplay así que los personajes no coisionan entre sí.
¿Puedo esconderme y "campear"?
Si es muy evidente tu IA podría ser descalificada, la idea es que la IA sea inteligente.
¿Como consigo el editable para ponerme manos a la obra?
En el momento que se inicie el concurso voy a subir el editable al foro de noticias.
¿Puedo personalizar mi personaje (gráficamente)?
Si, pero vas a tener que crear una sprite nueva que cumpla con los estándares de la original (mismo tamaño de sprite y misma máscara).
Scripts Disponibles
Los scripts disponibles se encuentran en el grupo "Usables", cada uno tiene descripción sobre lo que hace y los argumentos que lleva, así como un ejemplo de su uso. Los scripts que generen los jugadores deberán ser puestos en una carpeta creada en el grupo "Jugadores" con su nombre.
Como cargar un droide/IA?
1. Crear el objeto de la IA haciendo un duplicado de la ia base (obj_ia).
2. Ir al objeto obj_control y abrir el código del evento create
3. Agregar el script scr_agregar_jugador(String nombre,Objeto IA) con los demás
4. Poner una instancia de tu IA en el room de pruebas
Como hago referencia a mi enemigo?
Para hacer referencia a nuestro enemigo se utiliza el script scr_ver_enemigos que chequea si hay alguno en nuetro rango de visión. Luego para obtener la posición de cada uno ingresamos el número de enemigo que queremos chequear (entre 1 y la cantidad de enemigos).
Por ejemplo:
if scr_ver_enemigos()>0
{
for (i=1;i<=scr_ver_enemigos();i+=1)
{
posx=scr_pos_enemigo_x(i)
posy=scr_pos_enemigo_y(i)
}
}
----------------------------------------
Texic
El editable para que empiecen a trabajar se encuentra adjunto en este mensaje. Se trabaja con Game Maker 8 Pro o Game Maker Studio importando el gmk (mis agradecimientos a brunoxzx por el port)
Recuerden mirar cada tanto si se modificó el SDK, ya sea para arreglar errores o, durante la primera semana, agregar cosas que hayan faltado
Si tienen alguna duda pueden escribirme un mensaje privado, escribir por facebook (Kurt Lobato) o enviar un correo electrónico a kurtlobato@gmail.com
Mis personales agradecimientos a Daz, Ciberman y Jesus que fueron los que más me ayudaron a armar el concurso. Disfruten armando la IA, si encuentran algún bug me avisan
Saludos, Texic!
Nota: Algunas de las características del editable real que se usarán en los encuentros no existen en el sdk (por ejemplo el generador de mapas aleatorio, la tabla de puntajes o la finalización de rondas, ya sea por tiempo o falta de jugadores)
Nota 2: Al calcular un camino la posición de destino tiene que ser válida, hay que tener en cuenta que la sprite del personaje es centrada y las demás tienen orígen en 0,0
Última modificación del SDK
30/09/13
30/09/13
Se arreglaron un par de validaciones para no espiar fuera del room
Se agregaron scripts para extender la detección de enemigos
Se agregó un script de movimiento en 8 direcciones
Se agregó el evento User defined 1 que se activa cuando la IA escucha algo
Se agregó un jugador manual para testeo
Se arrelgó un error de giro de máscara que provocaba atascamientos en ciertas circunstancias
Ahora las IA que disparen en movimiento tendrán menos puntería que las que lo hagan quietas
Reparado un bug al portar a studio que no permitía obtener la cantidad de puertas, cajas ni obtener vida extra
Reparado un bug que causaba problemas cuando la IA calculaba un camino fuera de la habitación
Se reparó la función raycast_ext
Se reparó la función scr_recoger_arma que no cambiaba el tipo visible del objeto en el piso
Modificada la función scr_vista meramente para mejorar el rendimiento
Se agregó una función para conocer el nombre del enemigo
Modificados los argumentos de la función scr_calcular_camino
Reparadas las funciones de camino que provocaban errores cuando no se chequeaba que el camino fuera correcto
Reparado un error que provocaba un bucle infinito al disparar en el evento de escuchar
Reparado un error que provocaba un bucle infinito al recargar en el evento de escuchar
238
Desarrollo de Scripts / Re:Dibujar curvas bezier
Septiembre 12, 2013, 01:16:33 AM
Jaja, lo tengo en el disco agonizante y me cuesta horrores conectarlo. Te recomiendo intentar hacerlo como experiencia, es muy interesante de realizar. Yo por mi parte empecé con un montón de objetos nodo que guardaban en un array conexión con sus consiguientes, luego estaba el generador de mapa que ponía los nodos donde no había obstáculos y el ir desde un nodo a otro usaba la idea de A* que es básicamente tener un peso para cada nodo conectado (que consiste en la suma de la distancia hasta el mismo, más la distancia desde él hasta la meta), hay que ir tachando los nodos usados para no volver a recorrerlos y seguir así hasta llegar a la meta. Obviamente necesita ajustes para funcionar a todo terreno, pero así funciona para los casos más simples
239
Juegos en desarrollo / Re:Consola GM
Septiembre 10, 2013, 05:42:14 AM
Tenía planeado mejorarla, pero no dispongo de tiempo con esto de la GIA y la facultad. En cuanto haga un poco de tiempo le hago algunas mejoras, mi plan era agregar un chat con un par de salas estilo rpg, voy a ver si lo logro, ahora que tengo un router desbloqueado puedo montar un servidor para ese propósito
240
Preguntas y respuestas / Re:Varias luces en la oscuridad
Septiembre 08, 2013, 02:19:26 AM
Ese pedazo de texto es viejo, hoy en día no hay problemas con las surfaces xD
Siempre y cuando no excedas la memoria de video, pero es un poco dificil llenar 256mb (que sería la memoria de video más básica en la que puedo pensar hoy en día)
Siempre y cuando no excedas la memoria de video, pero es un poco dificil llenar 256mb (que sería la memoria de video más básica en la que puedo pensar hoy en día)