Mostrar Mensajes

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.

Temas - KrakenHimoto

1
El campeón de GIA2 SpaceShip War ha sido Killer
Felicidades por el logro!



Kraken: Si Killer, un par de Steps que disparaba antes y empatábamos -_-

VER VIDEO AQUI GIA2 Ronda2


Descarga de los archivos

Al final del tema hay 4 adjuntos del concurso.
-Están los editables pelados para los participantes sin IAs de los jugadores, tanto para versión lite como pro de gm. (Primeros 2 archivos)
-El tercer archivos es un editable con todo el contenido del concurso, participantes, etc...
-El cuarto archivo es lo mismo que el tercero pero directamente el ejecutable (.exe) para los que no posean Game Maker 6 e igual quieran poner a prueba sus habilidades contra las IAs.

Sepan que el juego es jugable ya que tiene opción para manejar a un jugador.


Lista de participantes

-Topet
-Guacusio
-Killer
-Raul Omega
-Alfonsos1
-knd144
-KrakenHimoto (participé, pero como organizador no participo oficialmente)
-Hardraid (descalificado por bug en el editable)
-Elviskelley


Resultados


Killer 7/7
KrakenHimoto 6/7  (No participa oficialmente de la competencia)
Guacusio 4.5/7
Alfonsos1 4/7
Topet 3.5/7
RaulOmega 2/7
ElvisKelley 1/7
knd144 0/7





No voy a hacer una review de las IAs, pero a cambio les voy a dejar los registros de todos los participantes Yai =D

KrakenHimoto

/*Krakenhimoto
   Fecha de inicio de la IA: Sabado, 24 Octubre 2009
   Fecha de finalizacion: Lunes, 26 Octubre 2009

Debido a que la IA deberia cambiar segun como se comporta la oponente idee un sistema en el que hago varios tipos de IAs para ver cuales son los puntos debiles de cada una segun su comportamiento.
   v_01.IA01: Es una IA estatica. Centra su inteligencia en sus disparos, cuando usar cada tipo y a que distancias.
   v_01.IA02: Es una IA agresiva a ciegas, por esta razon suele suicidarse.
   v_01.IA03: Es la IA que se va a utilizar en la competencia, es agresiva, sigue al oponente y usa el mismo sistema de disparo que la IA1. Evitar salirse del mapa.
   v_01.IA04: Es como la IA03 pero ahora tiene un nuevo sistema de disparo mucho mas preciso tanto para disparo normal y con starshoot.
   v_01.IAKH(v5): Esta IA es como la IA04 pero tiene la caracteristica que se deszplaza mucho mas rapido por el mapa y se maneja mejor con los limites del mapa lo que permitio que venza a la IA estatica invencible hasta ese momento.

Version de la IA: 1.0
Voy a escribir todo de manera cronologica a medida que hago cambios:
-Por ahora estoy en la etapa inicial de la IA, ya cree un script efectivo para rotar en la direccion correcta segun hacia donde me quiera desplazar.
-Ahora voy a diseñar un sistema que detecte cuando la IA no tiene retorno y va a morir irremediablemente por salirse del campo.
-Me centre en los disparos ahora que no me moria saliendome del mapa, el sistema anterior era el clasico disparo al cuerpo del oponente, lo cual si esta en movimiento jamas le das. Lo que hice fue un sistema que la IA apuntara siempre
a donde se encontraria el oponente 40 steps mas adelante (el tiempo que dura el disparo) si dejase de acelerar y se desplazara por friccion. Este sistema mejoro mucho el sistema de disparos pero aun tenia problemas.
-Luego de corregir varias variables que tenia mal me di cuenta que mi sistema solo funcionaba si la IA enemiga se encontraba a una distancia jsuta de recorrido de 40 steps de la bala, por lo cual erraba mucho.
Lo que se me ocurrio fue calcular todas las posiciones en un array de la bala y hacer lo mismo con el jugador en modo desplazamienzo con y sin aceleracion. Luego lo que hago es para cada tiempo comparar coordenadas, si coincidian disparar.
Esto me permitio y MUY efectivo sistema de disparo.
-Luego lo que mejore fue el seguimiento a la IA enemiga, mi sistema para no salirme del limite del mapa hacia que mi IA se desplazara lento. Lo que hice fue mejorarlo para que si aceleraba sin riesgo de muerte (osea acelerar hacia el centro del mapa) lo hiciera.
-Algo que no dije antes, pero si la otra nave esta a mas de 40*8 (recorrido de una bala) hace starshoot, sino no, xq el cooldelay es demaciado lento en la starshoot.
-Tengo planes a futuro de hacer que mi IA se maneje por estados segun la situaicon en el mapa.
-Implemente un sistema que cuando detecto una mina enfrente de la nave y este a menos de X distancia de la vuelta y acelere para alejarse de ella. Parecido al concepto del limite del mapa

Asi termina mi IA_v01: Algo en lo que me centre mucho en esta IA fue generar modulos tecnicos que me permitieran desplazarme con precision, pero se que la verdadera guerra se encuentra en otro campo que es la estrategia de batalla.
Ahora que tengo la tecnica bastante pulida me puedo centrar en ver que es lo que pueden llegar a hacer los oponentes para contrarestarlos (AHI ESTA LA CLAVE!)


Dificultades:
-Mayormente fue pensar como vencer a una IA estatica.
-Ver el tema de las bombas, que aun no resuelvo totalmente aunque tengo una solucion bastante safisfactoria
-Algunos problemas con calculos angulares.

Version de la IA: 2.0
Se mejoró la forma de detectar y esquivar las bombas y el limite del mapa.


Killer
/* Primera Ronda
Iniciada en:      Domingo 24 / 10 / 2009
Finalizada en:   Mircoles 28 / 10 / 2009

IA creada por Killer
Versión: 0.8

Lo primero que hice fue un script que rotará la nave en dirección al enemigo y disparará, seguido por un script que evitará que la nave
saliera del ring. Acá surgió el primer problema, la nave seguía rotando hacia el enemigo mientras trataba de no salirse, y terminaba sin
conseguir ninguna de las dos. La solución fue agregar una variable de estado para que la IA identifique si puede rotar hacia el enemigo
o aún esta tratando de salvar su pellejo. De paso hice un script para identificar el lado más corto hacia el cual rotar para mirar en X
dirección.

Luego hice un script para que la nave buscara una posición desde donde atacar al oponente, de preferencia de espaldas, pero sin la
posición este fuera del ring. Fue necesario agregar un par de variables para almacenar dicha posición.

Finalmente hice un script para que la nave evadiera balas y minas, por mucho el más problemático. El script checa la trayectoria de cada
bala para identificar cuales son peligrosas y buscar una posición que las evite. Lamentablemente el cambio constante de trayectoria de la
nave en si hace que no todas las balas sean evitables. En el caso de las minas se checa la trayectoria de la nave para ver si chocara con
alguna mina y de ser el caso cambiar la ruta, pero el script para evitar que la nave salga de la habitación a menudo interfiere con él.

De paso agregue al script que apunta y dispara la opción de disparar starshots para tiros difíciles y al script de esquive la opción de poner
minas si el oponente se acerca demasiado en dirección a la nave.

La IA aún necesita un comportamiento contra starshots y afinar el script de evasión. Pero me temo que eso quedará para la segunda ronda.


Manera de "pensar" de la IA:

La IA tiene como prioridad mantenerse dentro del ring y evitar daño, por lo que no intentara ponerse en posición de ataque hasta que este
fuera de peligro. Si por casualidad el oponente entra en el alcance de la nave mientras esta se pone a salvo la nave intentara dispararle,
pero no perseguirlo. Cuando la nave no corre peligro, y su oponente esta dentro del alcance de sus balas la nave intentara dispararle sin
moverse. Si el oponente esta fuera del alcance de la nave y esta está fuera de peligro intentará ponerse detrás del oponente o el área libre
más cercana.


Topet
/*
He aqui el registro de la nave Topet Sonic Blue Insect:

Version de la IA: 1.0
   Fecha de inicio de la IA: Domingo, 25 Octubre 2009, 9:47 PM
   Fecha de finalizacion: Lunes, 26 Octubre 2009, 7:00 PM
   

   
Forma en la que piensa:
   La IA se basara en estados, la lista y descripcion de estos estados se actualizara junto con la IA.
   
   (0)Normal.-No hay ninguna actividad que resalte en este estado, siendo asi debera rastrear la nave enemiga.
   (1)Alerta de limite.-Se entrara en este estado si la distancia hacia el centro es mucha.
   (2)Atacando.- Buscara apuntar al enemigo y en funcion de la distancia atacara con diferente arma.
   (3)identificada bomba.-Tratara de esquivar las bombas que se encuentre enfrente
   
   
   
Problemas y dificultades:
   v1.d1.-Tuve problemas para ajustar la direccion en que debia girar la nave para encarar al enemigo, despues de un rato obtuve un
   resultado agradable y aunque no fue lo mejor estoy satisfecho por el momento :)
   
   v1.d1.-Descubro que mi IA desperdicia sus municiones XD, disparaba aun cuando el enemigo no estaba enfrente
   es facil de arreglar solo me falto comprobar hacia donde miraba.
   
   v1.d2.-Tuve muchos problemas para hacer que la nave intentara esquivar las bombas, hice que girara en sentido contrario si estaba
   muy cerca de una bomba, no logra esquivar totalmente las bombas, esto vere una forma de mejorarlo en futuras versiones
*/



Guacusio
/*
Fecha de inicio: 25/10/2009
Fecha de término: 26/10/2009
Nombre del creador: Guacusio
Versión:1

Algoritmo:

-La IA no hace nada si no existe el enemigo

-Se revisa si hay peligro de salir de la arena de combate, en base a
la distancia de la nave hasta el centro del room. Si es así, deja de acelerar
y gira hasta mirar hacia el centro para luego acelerar.

-Si el peligro anterior no existe, gira para estar en posición de ataque.
Para ello, calcula en qué dirección y momento debe disparar para que el proyectil
impacte al oponente, suponiendo que éste conserva su velocidad.

-Se dispara un proyectil tipo 4 si el oponente está "lejos"
y un tipo 1 si está "cerca", siempre que el oponente esté en la mira

-Luego deja una mina sólo si el oponente se dirige a colisionar con la nave
y está "cerca".

-Intenta esquivar minas (si existen), girando y acelerando
mientras tenga en frente la mina

Problemas encontrados:

-Primero trabajé en el script para predecir el ángulo necesario para acertar
un disparo hacia el oponente, considerando la dirección y rapidez con que
se mueve. Mediante trigonometría y cinemática logré sacarlo, aunque costó
un poco, sobre todo porque no estaba seguro de si el script funcionaría
en todas las combinaciones posibles de direcciones y posiciones.

-Noté que el script de KrakenHimoto para girar recibe un ángulo como argumento,
pero el signo de este ángulo no sigue la nomenclatura de GM (positivo contra
las agujas del reloj). Me dio dolores de cabeza hasta que encontré que
su nomenclatura era diferente.

-El cálculo del lado hacia donde conviene girar para mirar hacia el centro
es muy simple, pero nada obvio. Esto me tomó bastante tiempo, porque
un ángulo de 359º y otro de 1º son muy parecidos en un papel, pero para
nada a la hora de hacer cálculos.

-Fue extremadamente difícil encontrar un algoritmo mínimamente decente
para esquivar las minas. El que hice me parece bastante malo y suele fallar,
pero al parecer garantiza que la nave no se saldrá de la arena (lo cual
sería una muerte definitiva, a diferencia de tocar una mina)

Notas:

-La IA fue calibrada por ensayo y error para saber, por ejemplo,
a qué distancia del centro del room se considera peligroso estar, o
qué velocidad máxima se está dispuesto a tolerar.

*/



/*
Fecha de inicio: 01/11/2009
Fecha de término: 03/11/2009
Nombre del creador: Guacusio
Versión:2 (corresponde más bien a ligeras modificaciones de la IA anterior)

Algoritmo:

-La IA no hace nada si no existe el enemigo

-Se detecta una colisión potencial con una mina

-Se calcula el ángulo óptimo de disparo, tomando en cuenta la velocidad
del oponente y la de los proyectiles

-Se revisa si hay peligro de salir de la arena de combate, en base a
la distancia de la nave hasta el centro del room. Si es así, deja de acelerar
y gira hasta mirar hacia el centro para luego acelerar.

-Revisa si está en posición de ataque, comparando el ángulo óptimo de disparo
con el image_angle.

-Si el ángulo es óptimo, se dispara un proyectil tipo 4 si el oponente
está "lejos" y un tipo 1 si está "cerca"

-Luego deja una mina sólo si el oponente se dirige directamente a colisionar
con la nave y está "cerca".

-Intenta esquivar minas (si existen), girando y acelerando mientras
tenga en frente la mina. Gira en el sentido que más rápido lo aleja
de la mina.

Problemas encontrados:

-En esta versión corregí el script para encontrar el ángulo óptimo de
disparo. En un comienzo no funcionaba, hasta que luego de varias horas
de pensar y rebuscar, noté que tenía un simple error de formato de ángulos
dentro de una operación: se me había olvidado transformar radianes en grados.
¡Ajajajajaja! ¡Tan simple como eso!

-El algoritmo para esquivar minas sigue siendo igual de malo, lamentablemente
parece ser que va más allá de mis posibilidades, por ahora.

*/



RaulOmega
/*REGISTRO
   ---DATOS DE LA IA---
   
   Fecha version 1: 29/10/09
   Fecha version 2: 5/11/09
   Autor: Raul_Omega

   
***DESCRIPCION VERSION 1 (29/10/09)***   

--FUNCIONAMIENTO--
La IA cuenta con  2 movimientos o estados.

  >> Movimiento 1 (movimiento 0 y movimiento 1 del evento Step)
   
   La nave se mueve desde la posicion inicial hasta un radio cercano al borde del circulo, y acto
   seguido describe un arco cerca del limite del terreno de juego.
   El objetivo de este movimiento es que la IA rival se salga del circulo y se estrelle, esta claro que   
   para IAs avanzadas este movimiento sera inutil
   
   Al cabo de 15 segundos se pasa al movimiento 2
   
  >> Movimiento 2 (movimiento 2 del evento Step)
 
  La nave sale al ataque del enemigo, siempre buscando su cola para atacar por la espalda. Se ha definido una velocidad
  maxima dependiendo de la distancia al centro con el fin de evitar que la nave adquiera velocidades muy altas
  y se salga del circulo por no poder frenar. A su vez se ha definido un radio critico que si se sobrepasa
  se hace girar la nave en direccion al centro y acelerar al maximo para evitar estrellarse.
 
   Este movimiento perdurara hasta acabar la batalla
   
En cuanto al ataque, por el momento no se ultilizan las minas ya que muchas veces era necesario volver por el camino
en el que ya se ha colocado una mina y era facil tocarla poco despues de ponerla. Mientras no se defina una estrategia
para sortear minas no se incluirá su uso

Por tanto la nave solo ataca con starshoot o con el ataque basico. El starshoot se utiliza cuando la nave enemiga se encuentra
por delante de nuestra nave a una distancia menor de aprox 100.
   

--PROBLEMAS SURGIDOS--
-Uno de los primeros problemas surgidos fue como evitar que la nave se saliese de la region de juego, para ello se opto por
definir unas regiones de velocidad. Si la nave se encuentra cerca del centro del circulo de juego puede correr mas que si
esta cerca del limite. Aparte de esto se define un radio critico a partir del cual la nave fija su direccion en el centro
del circulo.

-Por falta de tiempo no se ha diseñado una estrategia para sortear minas enemigas por lo que la IA puede resultar
muy vulnerable a ellas.


***DESCRIPCION VERSION 2 (06/11/09)*** 

Se ha elimindado el movimiento 1 en el que la nave recorria el circulo externo de la arena, ya que solo
unas pocas IAs cayeron en esta trampa en la primera ronda.

Como mejoras:
-Ahora la nave utiliza minas y se ha implementado una estrategia para esquivarlas, aunque no siempre funciona

Problemas:
La nave tiene muchos aspectos por mejorar pero no he dispuesto de suficiente tiempo para investigar y programarlo



Hardraid
//explicacion de como piensa la IA:
//Fecha: 27/10 hasta 30/10;
//primero controla diferentes valores como por ejemplo las balas que se crean, movimientos futures, etc..
//sabiendo todo esos datos realiza diferentes acciones para poder atacar por adelantado.

//Problemas surgidos...
//problemas con calculos matematicos por mi escaso conocimiento en matematicas... xD



Alfonsos1
/*Fecha de inicio: 14/10/2009 Fecha de finalizacion: 30/10/2009

VREVE DESCRIPCION DE LA IA

Esta IA se vasa en dos estados, el primero es atacar y perceguir al enemigo y el segundo es alejarce del vorde.
Se vasa en distinas direcciones, angulos y otras variables para decideir que deve hacer.
La IA estara en el estado 1 (atacar y perceguir) siempre y cuando la nave no se hacerque a menos de un minimo (MIN).
La IA no utiliza minas ya que no les encontre la manera de que me favorecieran a mi mas que al enemigo.
Simplemente intenta apuntar accia la direccion a la que se mueve el enemigo y disparar.

EVOLUCION DE LA IA

Lo primero que intente hacer es darle punteria a la nave. Osea determinar la direccion a la que devia disparar (DIRECCIONATK) y
que gire en asta esa direccion.
Primero hice que apuntara a la posicion del enemigo, lo cual funcionaba solo si el enemigo estaba quieto.
Luego hice que considerara la speed y la direction del enemigo y tambien la distancia de la nave al enemigo, lo que hizo que
mejorara vastante.
Pero finalmente termine agregando el factor speed_accel y friction ademas de la dir y la rot del enemigo y una estimacion de
cuanto tardaria el disparo en llegar al enemigo, asi mismo la punteria no mejoro mucho.

Luego simplemente hice que hacelerara todo el tiempo, chocaba rapidamente con el vorde de la arena.
Cree la variable PERCEGUIR y hice que esta fuero 0 si la nave se hacercaba mucho al vorde de la arena, luego hice que checara
si PERCEGUIR era 1 en ese caso haceleraba y perceguia al enemigo de lo contrario no aceleraba y giraba asta apntar al centro de
la arena, para esto tube que crear una nueva direccion (DIRECCIONCENT).
Pero este sistema era eneficiente ya que habeses chocaba y otras veses dejaba de perseguir al enemigo en situaciones donde no
habia riesgo de chocar.
Entonces cree la veriable MIN la cual representaba la distancia segura minima del vorde de la arena. Luego puse que cuado la
nave se hacercar al MIN cambiara al estado 2 (alejarce del vorde), habian veses en la que la nave no podia respetar el margen
y terminaba entrando a ese MIN. Por eso aumente e MIN multiplicandolo por un numero.

De todas maneras la nave chacaba con el vorde de vez en cuando pero no queria aumentar mas el MIN ya que cuanto mas tiempo
pase la nave en el estado 1 es mas eficiente. Por eso cree la variable RIESGO se vasa en la velocidad de la nave, en su
direccion y en la distancia al vorde de la arena. Cuando el RIESGO es muy alto la nabe deve dejar de acelerar, pero puede
seguir apuntando y disparando.

Probando la nave vi que aveses estaba muy lejos y disparaba, luego se acercaba pero aun no podia disparar nuevamente, por lo
que hice que si las naves se hacercan muy rapidamente la nave espere para disparar asta que esten a una dispancia mas pequeña
esto mejoro la punteria.



knd144
/*hoja de progresos y funcionamiento de mi IA*/


      //funcionamiento de mi IA
/*
-Mi inteligencia artificial es un agente logico que basa su respuestas iniciales a travez de descartes de operaciones con respecto
a la direccion y vista de la nave, y tal comportamiento se mantiene en todo el juego:
-desde que inicia empieza a rotar la nave, su rotacion es calculada a manera de que sea la mas corta posible para que quede mirando
dentro de ciero rango de error de direccion a la nave oponente, asi cuando la otra nave quede al lado izquiero, mi nave rote al lado
izquierdo, si queda al lado derecho, rote al lado derecho.
-Teniendo la nave enemiga enfrente ambas mirandose, se dispara la bala estrella
-La nave solo acelera cuando tiene la nave contraria mas o menos frente a él, y desde entonces jamas deja de acelerar. Caso contrario,
en teoria la nave deja de rotar en ocasiones, pero debido a que con cada paso que de mi nave hacia adelante la direccion con respecto
al enemigo cambia, la rotacion se activa instantáneamente.
-Para la bomba se podra poner cada que cierta alarma se active(la 2, aun que tambien funciona para activar el disparo,
la vuelvo a usar para ahorrar recursos) y se cumple la condicion de que la nave enemiga
hipoteticamente biene hacia la mia, se deposita la bomba; aun que tambien llegara a depositarse aleatoreamente de manera obligada.
-El disparo se activa con 2 condiciones: activarse una variable que se inicializa solo con la alarma 2, y cuando este mirando al enemigo
empieza la balacera. Debido al giro ecagerado (o abombachado) la bara dificilmente se disparará hacia la direccion precisa en donde esta
la nave enemiga, lo que dara la oportunidad de que se desvie y la bala conlicione con la nave.



             //progreso de mi IA
/*primeramente, quiero que mi nave rote hacia dentro del campo y
que mejor que al hacerlo empiece a buscar al oponente y se dirija a este.

estoy teniendo varios problemas para determinar al enemigo frente a mi IA,
ya que con la simple direction y point_direction() no funciona; buano, a veces si
pero no se el por que debes en cuando. He intentado crear ciclos while en vez de
un if, aun que tengo los mismos resultado, igual trato con ciclos Do pero casi
siempre termino haciendo cilcos infinios, y cuando no, el codigo llega a no
repetirse y perder el resultado en el intento.
Hago nota que he intentado comprobar grado por gradola direccion a la que mira
mi IA y la direccion en la que se encuentra el oponente, no funciona como debe
ser.

he estado haciendo intentos con alarmas para ver si las funciones que detienen
el giro o hacen que la nave dispare funcionan, y así es, la cosa esta en mi
algoritmo aun que no veo en que.

ahora ya pued fijar la "vista" hacia el enemigo, y segun yo quiero es que mi nave gire
mientras el oponente no este frente a él, lo que da el problema que casi siemrpe debera
estar girando y moviendose, asi que para que mi nave no giera hacia un solo lado
y empiece a andar en espiral necesito que fije la rotacion mas corta para mirar al oponente
y creo que la clave misma es la direccion del oponente. En un principio queria checar
cual distancia en grados era mas corta (si de manera inversa al reloj, o de manera normal)
asi que use contadores en un ciclo for para que vaya checando ambas direcciones y vea cual
es mas corta segun el contador mas pequeño. Pero la verdad fue un fracaso ya que la nave
oponente siempre se mantendra en movimiento... asi que fijando la direccion misma de la
nave con erspecto a la mia podre saber cual es la rotacion mas corta, aun que tendre que
pulir detalles creo que tengo la solucion.

Hasta ahora estoy haciendo una IA que se base en los movimientos del enemigo, si tengo el suficiente tiempo
como dedicarle un dia entero, creare una estrategia mas propia. De lo contrario enviare esta a
la primera ronda y en la segunda la pulire siendo que tengo la base ya hecha.

la teoria anterior no tenia sentido a la hora de la practica, ya que su direccion puede tener
45 grados de diferencia a su direccion con respecto a mi nave... pero logre obtener una solucion
matematica que compara direccion de mi nave y direccion de mi nave con respecto a la otra
y obtuve una respuesta mas correcta. El problema es sin duda ahora una nave inestable, aunque
sin duda se comporta de una mejor manera. El problema es que avanza mucho mientras gira, pero
ya luego vere como arreglar eso. Me pondré a trabajar mas en mi ataque, ya que ya es hora
de empezar con la ofensiva, despues tratare de maneobrar mejor.
Por lo q veo un ataque no puede ser muy efectivo si mi nave es propensa a salirse de la
arena de batalla, y veo que la causa mayor es el hecho de que se pasa derecho al seguir al enemigo,
asi que por ahora estoy intentando en una ultima alternnativa el que la nave deje de
acelerar si tiene a su espalda la nave enemiga, considerando un rango, claro esta.
veo que el frenar cuando tengo de frente el borde del campo es algo tonto, mi nave tiene
la defensa natural de que aun que gire sigue avanzando y puede esquivar hasta cierto punto el
borde del campo siempre y cuando el oponente no este muy cerca de ella.

el sistema de ataque tengo pensado empezar atacando con una bala estrella justo cuando el oponente
este frente, asi que deshabilito el ataque normal al principio para que lance la bala estrella. La unica forma
que se me ocurrio para hacerlo es que el ataque normal se habilite pasado cierto tiempo despues de iniciar
la partida.
Veo que el tiempo de inicio de la ronda se toma encuenta desde que se crea la nave, por lo que solo
aumentare el tiempo para que se active la alarma.
Funciona bien el disparo estrella al principio, pero probando con migo o la copia de mi IA no funciona
mas veces, como tengo q poner intervalos de disparos y eso seria saturar mucho el codigo, ya no lo
pulire, confiare en que las demas IAs den oportunidad de disparar mas veces la estrella.

La bomba es puesta con una condicion hipotetica: si el enemigo me mira quiere decir que biene hacia a mi
y por consiguiente tomara una ruta directa, por lo que avansaré y pondré una bomba en donde estaba mi nave.
Aun que veo que por alguna razon extraña (tal vez mi logica a la hora de programar) la bomba no se pone, igual creo
que se debe a que el ataque normal esta activado, lastima, tendre que dejarlas al azar si esta condicion se
cumple cuando pase la alarma...

/*

El disparo normal actuará todo el juego, ya que por desgracia la punteria es lo que menos le pude hacer, lo que tiene
es por la rotacion natural de mi nave que siempre trata de dirigirse al enemigo.*/



ElvisKelley
//segun entiendo aqui llevo un Registro de que trata mi IAElvisKelley-V-0.1 fecha: 31/10/2009.
//Explicacion como piensa mi IA
//bueno es simple mi Ia solo detecta el angulo en grados del centro
//y se dirije a el centro. si detecta la nave enemiga la persigue
//y le dispara, si se aleja mucho del centro regresa a este
//asi evitar chocar y destruirse.
//cualidades su ataque.
//su habilidad para mantenerse en la pista.

//Problemas Surgidos.
//Espero resolverlo mas adelante.
//los problemas que afectaron.
//al principio el problema fue que se estrellava
//cosa que resolvi quitando una variable.
//esa era para detectar disparos enemigos pero causaba descontrol en la nave
//espero mejorarlo para colocarlo de nuevo mas adelante.
//por ahora el defecto es que  no esquiva las minas :-C.



Analisis de las IAs

Killer:
CitarGran merecedor de la corona, su IA destaco principalmente por la efectividad de sus disparos y por su capacidad de plantar bombas y esquivarlas. Si bien no tiene la ofensiva mas potente de todas, esta muy balanceada en cuanto a evacion y ataque. Disparo con capacidad de ver a futuro la posicion de su enemigo para dar en el blanco.

Krakenhimoto:
CitarJunto con la IA de Killer estas dos IA estaban un escalon por encima del resto de las IAs. Si pusieramos cualquier IA en 20 rounds con la IA de Kraken o Killer con muchisima suerte ganarían una. En mi opinion la IA con más capacidad ofensiva y precision a la hora de atacar. No hace uso de las bombas y muy poco del starshot, esto se debe a que por su precicion de disparo le conviene mas por un balance de delay/potencia hacer uso del arma basica. Su gran debilidad es su no muy pulido sistema para esquivar bombas. Al igual que Killer, aunque con un sistema algo mejorado tambien tenia la capacidad de calcular a futuro la posicion de los enemigos para dar en el blanco.

Guacucio:
CitarEsta IA era bastante balanceada. En ese sentido la 2da IA mas balanceada por debajo de la de Killer. No tenia gran ofensiva pero de alguna manera de las arreglaba para salir victorioso en la mayoria de sus peleas.

Alfonsos1:
CitarEsta IA me sorprendio debo decir, esperaba mucho menos de ella. Una IA muy ofensiva, un escalon por debajo del ataque de KrakenHimoto y Killer que le dio un 4to puesto. Aunque merecía el 3ro a mi entender.

Topet:
CitarNo hay mucho que decir, una IA tipica de mitad de tabla. No destacaba por nada pero tampoco tenia carencias demasiado marcadas.

Raul Omega:
CitarSu defensa y ataque fueron pobres. Se esperaba mas de esta IA debido a que fue el ganador de GIA1. Si aplaudo su capacidad de innovar con su sistema de inicio donde daba medio arco por el campo a ver si se suicidaban algunos jugadores. Aunque no le dio demasiado resultado. Ya que la mayoria, salvo knd144, tenian un sistema para evitar salirte del campo.

Elvis Kelley:
CitarUna IA que trataba de mantenerce siempre cerca del centro del campo por temor a irse del radio de juego. Eso le costo ser blanco facil en practicamente todas las peleas. En cuanto a su ataque su idea era disparar constantemente, aunque la precision del disparo fuera nula, disparaba al azar practicamente en el 90% de las oportunidades. De todos modos era mejor eso a algunas IAs que por esperar el momento exacto terminaban por no disparar practicamente nunca.

knd144:
CitarLa IA Kamikaze, su ataque no estaba tan mal, pero su incapacidad de permanecer dentro del campo le costo el suicidio en 6 de 7 peleas.

Si participaste de GIA te invito a colocar esta imagen en tu firma.

2
Guerra de IAs (GIA) / ¿Que es GIA?
Julio 27, 2010, 08:33:49 PM


Este post es para aclarar un poco de que va GIA (Guerra de IAs). Se que mas de uno se marea al oir hablar del tema y no quieren leerse mis tochoposts de reglamento donde esta todo explicado, asique voy a hacer un breve resumen y cualquier duda conceptual que tengan me la hacen saber por acá.



¿Qué es GIA?


GIA, como sus siglas indican significa Guerra de IAs.
¿Entonces, qué es una IA?
En ciencias de la computación se denomina Inteligencia Artificial (IA) a la capacidad de razonar de un agente no vivo.
"Es la ciencia e ingeniería de hacer máquinas inteligentes, especialmente programas de cómputo inteligentes."

En otras palabras, todos aquellos entes que simulen cierta inteligencia se los considera IAs. Por ejemplo, cuando competimos contra la PC en el Ajedrez estamos haciendole frente a una IA. Cuando estamos jugando a un FPS como el Counter Strike hacen acto de presencia las IAs para controlar a los enemigos y a los aliados. En el AoE (Age of Empires) tambien hacen acto de presencia. Realmente si lo pensamos detenidamente están en prácticamente todos los videojuegos.

¿De que va el concurso?
Como su nombre lo indica, en este concurso compiten IAs. Esto significa que los jugadores no participan directamente de la competencia sino que lo hacen a través de sus IAs, que los representan en cada batalla.

CitarImaginemos que el concurso tiene la tematica de Carreras de Autos. Entonces lo que tendrian que programar los jugadores es la IAs de los Autos para que estas participen de las carreras.
Este es un concepto muy similar al que se aplica a todos los concursos de GIA.

La otra gran duda que tienen todos es, Pero, pero... ¿Cómo voy a programar una IA?, y empiezan a tener dudas existenciales de que se puede o no tocar del codigo del juego. Sepan que para cada concurso estas reglas varian ligeramente pero básicamente lo que el usuario edita es un solo objeto que es el que controla a su IA, y solo puede modificar variables de su propia IA. Mientras que los movimientos de la IA "fisicamente" se hacen a traves de una serie de scripts al que la IA llama y son comunes a todos los participantes.

CitarImaginemos que es una tematica de Naves Espaciales, la IA hizo unos calculos trigonometricos y sabe que debería disparar a 35° para darle a su adversario. En ese caso todos esos calculos se harían con variables internas creadas por el propio participante. Mientras que la acción de "rotar" y "disparar" la harían llamando aun script pre-establecido en el concurso, ejemplo "scr_rotar(-5)" y "scr_disparar()".





GIAs Realizados hasta el momento:
GIA_01 la Carrera de los Droides (Por KrakenHimoto)
GIA_02 Spaceship War (Por KrakenHimoto)
GIA_03 Tetris (Por Ciberman)

Para conocer mas sobre los mismos pueden dirigirse a los temas correspondientes en esta misma sección del foro.


Saludos, KrakenHimoto
3
Voy a hacer un resumen de este concurso que quedo en el olvido porque lo desarrolle a trav?s de los blogs que ya no existen, y me parece interesante mencionarlo para todos aquellos que quieran participar en algun GIA futuro una mejor idea de que va el concurso.

Este GIA se llevo a cabo hace cosa de un a?o y pico, a finales de 2008 si la memoria no me falla.

La tem?tica de este GIA_01 era ver quien tenia los mejores tiempos y pasaba mas cantidad de niveles en un juego de puzzles plataforma de vista lateral. El concurso consist?a en varias rondas y a medida que iban destrabando los niveles se iban haciendo las nuevas rondas, asi hasta llegar al noveno nivel que era el ultimo.



Bueno, el concurso se finalizo en 5 rondas, declarandose Campeon del GIA_01 merecidamente Raul Omega. Aunque luego agregue una "6ta" en donde participa Ciberman fuera de tiempo, pero ya que hizo su IA debia ponerlo.


Les dejo tanto el editable (.gm6) como el .exe de la ultima versi?n para que puedan echarle un ojo y porque no, intentar hacer sus IAs, siempre ser?n bienvenidas por mi.

Aca les dejo tambien un link al video oficial del torneo + CibermanIA (que no participo oficialmente del concurso sino luego de finalizado) para que vean de va todo esta de Guerra de IAs :)

VER VIDEO




Registros

Raul Omega

----DATOS DE LA IA----



   Fecha de inicio: 1-Mayo-2009

   Fecha de la version 1: 2-Mayo-2009

   Fecha de la version 2: 10-Junio-2009

   Fecha de la version 3: 18-Junio-2009

   Autor: Raul_Omega

   Maximo nivel superado version 1: Nivel 6

   Maximo nivel superado version 2: Nivel 8

   Maximo nivel superado version 3: Nivel 9



----EXPLICACION DE SU FUNCIONAMIENTO----



En cada Step la IA detecta el proximo obstaculo a superar y tambien

los 6 obstaculos siguientes (a 16,32,48,64, etc pixeles de distancia).

Aunque apenas se ha sacado partido al calculo de obstaculos posteriores.



En total es capaz de diferenciar 13 situaciones diferentes:

1-Flechas opuestas: El droide debera saltar y andar

2-Muro: El droide debera saltar y andar

3-Pozo: El droide debera saltar y andar

4-Camino sin salida (pared): El droide cambiara su direccion

5-Dejarse caer (si  el unico camino posible es dejarse caer): El droide debera andar para caer

6-Camino libre: No hay obstaculo, el droide debera andar

7-Pinchos boca arriba: El droide debera saltar y andar o bien pararse para no caer en ellos

8-Almoada: Si se detecta una almoada bajo el droide se deja de avanzar

9-Trampolin: Se salta hasta que se alcance la maxima altura, despues continua avanzando

10-Pinchos movimiento vertical: Se para mientras los detecta

11-Pinchos movimiento horizontal: Si estan a la misma altura se saltan si no se avanza

12-Mar de pinchos de movimiento horizontal: Detecta si hay pinchos con movimiento horizontal debajo y se deja caer solo

   cuando estan lejos

13-Escalones: Este obstaculo no fue necesario de introducir hasta el nivel 9, en el se necesitaba dejarse caer

   en un huevo para poder saltar una zona de pinchos

   

   

Existe una variable posH que indica si la salida se encuentra a la izquierda o a la derecha del droide.

En caso de haber una pared el droide cambiara posH a la direccion opuesta. (Como ocurre en el nivel 5)

La variable cambiosH cuenta las veces que posH cambia de valor sin que se haya tocado una pared

en caso de que cambiosH alcanze el valor 2 significa que el droide esta oscilando en torno a la salida

debido a que esta a una altura diferente (Como ocurre en el nivel 9), si esto ocurre se fija posH hasta que se alcance

una pared.



Aparte de los obstaculos antes mencionados que se calculan con un Script, existe un tipo de obstaculo

que no es detectado y que se trata de los pinchos que miran hacia abajo. En lugar de incluirlo como un obstaculo

el droide cuando se le manda avanzar checkea que no haya un pincho de esta clase delante suyo, en caso de que lo haya no avanza.





----PROBLEMAS SURGIDOS----



El primer problema que se me planteo fue buscar la manera de detectar los obstaculos, entonces se me

ocurrio crear un script que por medio de acciones del tipo collision detectara los proximos obstaculos

y devolviese un vector obstaculo(X) con el valor igual al tipo de obstaculo (del 1 al 9), siendo la X la del primer, segundo...

hasta el septimo obstaculo por delante del droide. Si bien, salvo para el obstaculo "Dejarse caer" no tiene

utilidad conocer futuros obstaculos, pero decidi dejar asi el script por si me hacia falta posteriormente.



Una vez definido este script y el evento step donde se actua segun el obstaculo no tuve problemas hasta el

nivel 3, donde aparecen por primera vez los pinchos. Obstaculo que aun no habia implementado. Me llevo un tiempo pensar

la manera de superarlos por que tenia que calcular cuando era necesario que el droide parase de avanzar para no chocarse con

un pincho, y sin embargo si hay pocos pinchos interesa seguir avanzando para alcanzar el otro lado.

Por lo que decidi:

   -Si vspeed<=0 (estoy en el suelo o saltando): El droide sigue avanzando

   -Si vspeed>1 (estoy cayendo):

           -Si tengo un pincho justo delante: Se para en caso contrario sigue adelante con el salto

           

En realidad superar este obstaculo fue en gran medida debido a la prueba y error hasta que obtuve el resultado deseado

por ello quedo algo desordenado el codigo.



Despues de esto el siguiente problema fueron los pinchos bocaabajo que no habia incluido en el script y que

decidi en lugar de incluirlos simplemente detectarlos cuando el droide tuviese que avanzar



El siguiente problema importante aparecio en el Nivel 5, que implicaba un cambio de direccion del droide

a mitad del nivel. Para que el droide supiese para donde avanzar idee lo siguiente:

   -Mientras no se choque con una pared el droide sigue la direccion impuesta por posH segun donde este la salida

   -Si se encuentra una pared posH cambia de direccion y ya no se chequea donde esta la salida

   se supondra que se acabara encontrando

   

El ultimo problema encontrado fueron los trampolines del Nivel 6, ya que el ultimo trampolin del nivel mi droide no

lo detectaba correctamente ya que las condiciones para detectar un trampolin y para dejar de saltar sobre ?l

se "superponian". Con lo cual decidi poner un par de variables adicionales.

   -Saltando:

       0: El trampolin no se ha tocado o bien no hay trampolin

       1: Se esta saltando sobre el trampolin

       2: Se ha alcanzado la maxima altura, el droide avanza hasta que deja de estar sobre el trampolin, momento

           en el que Saltando vuelve a 0 para repetir el proceso con otro trampolin

   -xsalto: Coordenada x del trampolin sobre el que se esta saltando, sirve para saber si se deja de estar sobre

       el trampolin

   

En la version 2 el nivel 9 no se podia superar debido a que el droide se chocaba con unos pinchos que miran hacia abajo

debido a que para poder pasar esa zona habia que dejarse caer en un hueco situacion que era incapaz de detectar, en la

version 3 se incluyo que siempre que hubiese un escalon de 1 bloque de altura el droide lo bajase



Ciberman

------------------------------------

////////////////////////////////////|

/////Datos de la IA:////////////////|

////////////////////////////////////|

//Fecha de Inicio:17/09/2009////////|

////////////////////////////////////|

//Fecha de Finalizacion:24/09/2009//|

////////////////////////////////////|

//Autor: Ciberman///////////////////|

////////////////////////////////////|

------------------------------------



PROBLEMAS que tomaron mucho resolverse:

-nivel 1: Detecci?n de el impulsador izquierda y derecha. cuando seguir y cuando saltar.

-Nivel 2: Detecci?n de las paredes, y cuando dev?a saltar

-nivel 3: saber cu?ndo es que hab?a que parar de caminar y parar el salto para no caer en los

       pinchos. basicamente el sistema utilizado comprueba si existe un pincho y en ese caso

       se fija el siguiente espacio libre, salta, e intenta caer alli.

-nivel 4: Un error. el droide detectaba que ten?a que saltar al comienzo y entonces saltaba pero

       no avasaba por consecuencia. con unos ajustes de revisi?n alcanz?.

       Tambien fue dificultoso pasar un pinche normal que deb?a detectarse en el aire. Tambien

       una barrera de pinchos del final.

-Nivel 5: No se sab?a cuando deb?a cambiar de direcci?n. eso tard? mucho en resolverse... Costo

       tener que bajar al nivel 2. Luego el siguiente problema fue la deteccion abanzada de pinchos.

       Cuando deb?a parar y cuando abanzar. Siguio con problemas el hecho de una bajada llena de

       pinches, se deb?o hacer que el droide reconociera cuando pod?a abanzar y cuando frenar para

       una correcta caida.

-Nivel 6: Al principio, con el c?digo que le hab?a dado avanz? el droide la mitad del nivel pero callo

       en un pozo con pinchos. Luego de unas modificaciones al c?digo de detencion de pinchos, el

       droide pudo pasar callendo en la almhoada. Luego un problema grande surgi?. Dev?a detectar los

       trampolines. Con un c?digo de detecci?n que me cost? lo solucion?.

-Nivel 7: Lo super? r?pido. No hubo basicamnte problemas.

-Nivel 8: Fue un poco dificil configurar el movimiento en las dos direcciones con esas rocas, pero despues

       no hubo mayores problemas.



Guacusio


//Registro



//Fecha de inicio:07-05-09

//Fecha de t?rmino:16-05-09

//Autor:guacusio



//Funcionamiento:

/*Primero trabaj? con 3 variables: izq, der y salto, donde cada una pod?a ser true o false,

dependiendo de si el personaje deb?a moverse a la derecha, a la izquierda y/o saltar.

Como vi que el c?digo se estaba haciendo muy poco estructurado y dif?cil de depurar y hasta de entender,

mand? todo al diablo y comenc? desde el principio con otra idea que reci?n estaba aprendiendo: m?quinas de estados finitos



Utilic? una m?quina de estados finitos (la primera que hago) XD

bas?ndome en los geniales tutoriales de Fenris:



http://www.comunidadgm.org/index.php?page=60

http://www.comunidadgm.org/index.php?page=57

http://www.comunidadgm.org/index.php?page=58

http://www.comunidadgm.org/index.php?page=59



La m?quina tiene 4 estados:

quieto: no se avanza ni se salta

salto:est? saltando o cayendo verticalmente, sin moverse hacia los lados

salto_avance:lo mismo que salto, pero incluye movimiento horizontal

avance:movimiento horizontal solamente, sin movimiento vertical



La direcci?n de avance la controla la variable avance (1=derecha, -1=izquierda, 0=sin avance)

La variable rec_avance guarda la direcci?n de avance en caso de detenerse, para luego retomar el avance en la direcci?n correcta



Los eventos para cambiar de estado son un mont?n. Se encuentran en los scripts asociados a los estados.

Hay explicaciones en los comentarios de esos scripts.

A continuaci?n hay un resumen de los eventos de cada estado:



quieto:(se basa en la hip?tesis de que los bloques m?viles tienen como parent a obj_global_pinches)

-Si hay un tipo de pinche adelante que se mueve verticalmente y justo ahora se mueve hacia arriba permitiendo pasar, cambia al estado avance



salto:

-Si hay pinches adelante pero no hay en la pr?xima actualizaci?n cinem?tica(*), pasa al estado salto_avance

-Si abajo hay una pared y no hay pinches adelante ni est? sobre un trampol?n, cambia al estado avance

-Si est? sobre un trampol?n y ya lleg? al punto m?s alto que puede llegar (aprox. 15 bloques de altura), cambia al estado salto_avance

(*)se refiere a los nuevos valores de x,y y gravity que calcula el script scr_step



salto_avance:

-Si hay pinches adelante, deja de moverse horizontalmente pero no cambia de estado por ahora. Si no hay, retoma el movimiento horizontal

-Si est? sobre una esquina (a cualquier altura) y no hay pinches sobre su cabeza, cambia al estado salto

-Si inmediatamente abajo hay un muro, cambia al estado avance

-Si est? sobre la esquina de adelante de un trampol?n (a cualquier altura) y va cayendo, cambia al estado salto



avance:

-Si entra a una zona donde hay pinchos que suben y bajan, cambia al estado quieto

-Si adelante hay pinches, cambia al estado salto

-Si adelante hay un muro de hasta 3 bloques de altura, cambia al estado salto_avance, de lo contrario cambia de direcci?n de avance

-Si llega a una esquina y arriba no hay pinches, o si se encuentra con un slope desfavorable, o si frente a sus pies hay pinches, cambia al estado salto_avance

-Si llega al borde de un trampol?n, cambia al estado salto



Otros scripts:



scr_guacusio_voltea: revisa si tiene frente al personaje una pared muy alta (m?s de 3 bloques de altura), si es as? cambia el sentido de avance horizontal y reorna true; de otro modo retorna false

scr_guacusio_arriba: revisa si hay pinches sobre el personaje, hasta una altura de 3 bloques

scr_guacusio_abajo: devuelve 1 si el personaje est? sobre suelo ahora y en el pr?ximo estado cinem?tico, 2 si llega a una esquina de suelo normal y 3 si llega al borde de un trampol?n

scr_guacusio_cambia_a: cambia al estado argument0, invocando las acciones asociadas al ingreso a ese estado (entre otras cosas, el valor de la variable avance)

scr_guacusio_aplasta: cambia al estado quieto si llega a una zona de pinchos que se mueven verticalmente



Suposiciones e imperfecciones

Por falta de tiempo (y de genio), esta IA no diferencia entre cojines y paredes, as? que no aprovecha los primeros.

Esta IA supone que los bloques con movimiento vertical que matan al personaje tienen parent obj_global_pinches

Esta IA hace al personaje detener su avance horizontal en cada esquina si est? en el estado salto o salto_avance. Esto ralentiza su avance pero fue la ?nica forma que encontr? de pasar ciertos obst?culos potenciales (que no salen en los niveles que hizo KrakenHimoto, por cierto) como pozos profundos, donde si llego y hago un salto completo desde el primer bloque que puedo, me puedo quedar atrapado en el pozo.

Esta IA, por lo dicho, no est? optimizada para pasar el nivel lo antes posible, pero s? para llegar en forma segura.



Dificultades:

Todo fue dif?cil XD. Sin embargo, tuve especiales problemas para esquivar los pinches ya que hay una gran gama de combinaciones de posiciones relativas de los pinches respecto al jugador.

Tambi?n me cost? encontrar un m?todo para hacer que el personaje supiera cu?ndo avanzar en sentido opuesto en el nivel 5 (aunque no fue dif?cil para nada implementarlo una vez se me ocurri?)

El uso de trampolines en el nivel 6 fue bastante complejo, principalmente porque no se me ocurr?a cu?ndo deb?a abandonar el trampol?n.





Huarelion

Nombre del creador: Eduardo Ibarra (eduardo960)

---------------------- IA version 0.1 ----------------------

Fecha de inicio de la IA: S?bado 18 de Abril de 2009

Fechas de finalizaci?n de la IA: Domingo 19 de Abril de 2009

Cambios: Creaci?n de la base de la IA, termina satisfactoriamente los 3 primeros niveles

------------------------------------------------------------



---------------------- IA version 0.2 ----------------------

Fecha de inicio de la IA: Lunes 20 de Abril de 2009

Fechas de finalizaci?n de la IA: Lunes 20 de Abril de 2009

Cambios: Optimizado el codigo de chequeo de paredes, solucionados unos detalles relacionados con los saltos de paredes

------------------------------------------------------------



---------------------- IA version 0.3 ----------------------

Fecha de inicio de la IA: Mi?rcoles 22 de Abril de 2009

Fechas de finalizaci?n de la IA: Jueves 23 de Abril de 2009

Cambios: Solucionados algunos bugs de detecciones a la izquierda, IA un poco m?s inteligente (T?rmina los niveles en menos tiempo), Nivel 4 terminado,

arreglados m?s detalles relacionados con el salto del personaje, Detecci?n de picos por encima del personaje, Detecci?n de picos mejorada

------------------------------------------------------------



Eventos a?adidos aparte de los ya por defecto:



- Alarma 1



Seguimiento de la IA:



Al comenzar con el desarrollo de mi IA del concurso GIA, lo primero que hice fue usar la l?gica para planear como definir?a la direcci?n para llegar

a su destino que ser?a la meta, hacer que se replantee la direcci?n en caso de que no encuentre un avance para aproximarse a la meta.



Los problemas que actualmente tiene mi IA es que es capaz de pasar un nivel complejo pero quedarse trabada en un nivel menos complejo, ya que el c?digo

no esta totalmente optimizado, pero el codigo ser? optimizado para que pueda pasar niveles de todo tipo.



Pensamiento de la IA:



- Definir la direcci?n inicial a la que moverse

 - Si el checkpoint se encuentra en una posici?n Y muy lejana, su direcci?n por defecto es 1 (derecha)

   - La IA tiene un m?ximo de 2 intentos para pasar por una zona, si su posici?n X es igual despu?s de todos los intentos, cambia de direcci?n

- Durante su ejecuci?n, se pone en busqueda de aceleradores de velocidad

 - Si encuentra un acelerador de velocidad contraria a su direcci?n, realiza un salto, si va hacia su direcci?n, camina para tomar velocidad

- Durante su ejecuci?n, se pone en busqueda de bloques que puedan evitar que continue su camino

 - Si no hay bloques que obstruyan el salto, lo realiza para pasar bloques que le impiden continuar

   - Si no es posible pasar una pared de bloques, replantea la direcci?n para encontrar otro camino

- Identifica si el checkpoint se encuentra debajo de el

 - Si esta por debajo de el y encuentra un espacio vacio para pasar, deja de moverse para bajar y continuar su camino

- Identifica hacia cu?l direcci?n se acerca m?s al checkpoint desde la alarma 1

 - Si la direcci?n en la que va lo acerca m?s, sigue en esa, sino, cambia de direcci?n

- Busca e identifica los picos pr?ximos

 - Al encontrar uno hace un c?lculo para encontrar el sitio m?s lejano y seguro al que pueda llegar saltando

   - Al llegar a la posici?n deseada deja de moverse hasta que este apoyado completamente en una plataforma y sigue moviendos?





Darth RPG


Registro de la IA:

Empezada en 17/4/2009

Terminada en 20/4/2009



Creada por Darth RPG



En una primera idea decid? que simplemente se moviera a la derecha, comprobando que no haya bloques por medio de su camino a la meta.

Si los hay que los salte y que continue. Sin embargo, esta idea ya en el primer nivel me trajo dificultades. Por ello implemente un sistema

para detectar qu? tipo de suelo tiene justo debajo y delante. Si es una cinta que va en contra de su movimiento, que la salte. Con esto

ya super? el primer nivel. El segundo ya fue m?s dif?cil. El c?digo de detecci?n con el collision_line funcionaba mal, as? que, en una rabieta

hice un sistema m?s b?sico y consegu? que funcionara. El nivel tres fue, de lejos, el que m?s problemas me dio. Sin embargo, gracias a otra

de mis rabietas, hice un script que detectara la instancia de debajo y hice que si ten?a un foso de pinchos muy ancho delante suyo y estaba en

un lugar seguro parara el salto. Con esto consegu? que superara ya el tercer nivel.



Mi IA b?sicamente, comprueba en qu? direcci?n debe moverse. Luego, mira que no haya bloques en su camino. Si los hay, calcula la distancia al

m?s cercano y si est? a 12 p?xeles, salta. Si no hay bloques cerca, comprueba que no haya pozos delante y, si los hay, los salta. Adem?s, si

est? saltando y tiene un rellano cerca y un foso delante, se para en el rellano a esperar para saltar de nuevo.



BrandNew


//Bit?cora de IA

/*

La primera idea que surgi? fue que la IA deber?a estar avanzando constantemente,

pues el primer nivel es una linea recta con tan s?lo un obst?culo, que era evitar

las flechas que te alentan. As? que el primer nivel fue simpl?simo, y la IA lograba

un tiempo record tan solo con scr_walk(1) y detecci?n previsiva de las molestas flechas.



Para el segundo nivel el cambio no fue mayor: el droide solo deber?a brincar cada vez

que detectaba una pared o un hoyo adelante. Durante este tiempo logr? mejorar

el puntaje en el primer nivel y poco a poco fue mejorando el del segundo.



Para el tercer nivel se complico la cosa, puesto que ahora hab?a pinchos sobre los

que puedes caer. Aunque la IA brincaba en presencia de un hoyo, tend?a a aventarse

directamente contra unos pinchos que se encontraban m?s adelante.

Esto llev? a desarrollar un algoritmo para que el droide, al brincar, deje de moverse si prevee

que va a caer sobre pinchos. (vease el primer ciclo for{} del evento Step)



Uff, el ultimo nivel resulto el mayor reto. Primero,encontrar una manera de detectar

la direcci?n hacia la que el droide tiene que moverse. Despu?s, evitar que el droide

de saltos desde muy alto para no caer y aplastarse. Despu?s, evitar hacer contacto con

los pinchos invertidos, y al final se modifico un poco del codigo ya creado para que

el brinco del droide llegara a la ultima parte del laberinto.



En concreto, la IA funciona a base de detecci?n previsiva del entorno para tomar una decisi?n.

*/



Shaoran


/*

------------------------------------

////////////////////////////////////|

/////Datos de el IA:////////////////|

////////////////////////////////////|

//Fecha de Inicio:25/04/2009////////|

////////////////////////////////////|

//Fecha de Finalizacion:28/08/2009//|

////////////////////////////////////|

//Autor: Shaoran////////////////////|

////////////////////////////////////|

------------------------------------

--------------------

|Pensamiento del IA:|

--------------------

- Se basa en verificar si adelante de ella tiene "piso" para caminar,

 de no tenerlo verifica de que se trata lo que esta adelante y de

 acorde a eso hace o no determinada accion.

-------------------  

|Problemas surgidos:|

-------------------

- Saltaba al final del nivel(sobre la meta)me costo encontrar el porque de ello

- Aun persiste el problema con lo pinches para poder pasarlos.    



Asava


No se encontr? (capaz debido a su participacion no oficial ya que organizaba el concurso)






Especial agradecimiento a Ciberman por hacer la recopilacion de los registros.

Ir? actualizando todo lo referente al tema... me despido, KrakenHimoto.
4
GIA 02 SpaceShip War ha comenzado!

Eso! Despu?s de varios meses de trabajo en el proyecto doy a la luz GIA2. No hay demasiado que decir, esta todo en el reglamento. Cualquier duda la consultan ac?.

Espero que este concurso genere entre los usuarios de la comunidad un poco mas de inter?s por estos temas.

Enlace al reglamento oficial

La primer fecha de entregas de las IAs es hasta el 30/10/09, con lo que se realizar? la primer ronda del concurso declarando al prematuro primer campeon

-Se trabaja en GM6. Subi 2 versiones, para los que tienen el gm registrado y para los que no. Los que usen la version no registrada no tendr?n los efectos graficos (tampoco interesa a la hora de hacer la IA)
-Por temas visuales se trabaja a una resoluci?n de 700x700 por lo que 800x600 no sirve.

Si quieren dise?ar su propia nave aca les dejo los datos fundamentales






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, abra 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 creacion de IAs, una ves finalizado el concurso se siguiran 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, abra 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 genero 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.
Ejemplo: para "moverse a la derecha" har?a un llamado al script move con el argumento "left", move(left).

  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. Abra 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 averiguo la direcci?n en la que se encuentra la meta
-Luego chequea que no haya pozos en la direcci?n a la que va.
-Si los hay, calcula una distancia segura y los salta

Explicaci?n de problemas surgidos .
Ej:
El primer nivel me parec?a f?cil se superar y de hecho lo fue, aunque aun creo que puedo mejorar mi tiempo.

Respecto al segundo nivel, tuve algunos problemas con la detecci?n de muros por lo que tuve que hacer cuenta atr?s y cambiar algunas bases de la IA.

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_02 SpaceShip War

  ?sta edici?n de GIA consiste en una batalla de Naves Droides.

   * Las batallas se dan en 1vs1 en un formato tipo liga. En el cual al final de la misma por cantidad de victorias se determinar? quien es la campeona.
   * Las Naves cuentan con 3 tipos de armas. Un disparo normal, 2 minas y 4 disparos StarShoot.
   * El disparo normal y el Starshoot hacen 1 punto de da?o mientras que la mina hace 2 puntos de da?o. Las naves cuentan con 6 puntos de vida.
   * Las batallas tendr?n un tiempo limite de 40 segundos, y en caso que aun est?n las 2 naves en funcionamiento ganar? aquella con mas puntos de vida.
   * Si una nave sale del rango del escenario donde se da la batalla ser? destruida autom?ticamente.


Especificaciones de GIA_02

   * Deber?n colocar en un .zip/rar el editable modificado.

   * Deber?n enviarlo al siguiente correo electr?nico: gia.asava@gmail.com


FAQ
?Cuando comienza GIA SpaceShip War y cuanto durar??
23 de Octubre del 2009. Calculo que durar? 1 mes y pico.

?Cuanto tiempo me puede quitar el participar de esta competencia?
M... 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.

?Habr? asteroides en el evento para que las naves esquiven?
No, no habr?, es un suceso muy aleatorio.

?De a cuantas naves se har?n las batallas?
Las batallas ser?n de 1vs1, el campo es demasiado peque?o para m?s, a lo sumo 3.

?Se puede programar la IA en D&D?
No, las IAs deber?n estar hechas 100% en c?digo (GML).

?Si las naves colisionan se destruyen ambas?
No, imaginen que una pasa por debajo de la otra. No tendr?a sentido hacerlas colisionar a efectos de ver cual es la mejor IA.

?Si me salgo del campo de batalla muero?
Exactamente. (Hay una propuesta de que se transporten las naves al lado opuesto del campo)

?Como consigo el editable para ponerme manos a la obra?
En el momento que se inicie el concurso voy a subir el editable al blog o al foro de noticias.

?Puedo personalizar mi droide (gr?ficamente)?
No, por ahora no.

Scripts Disponibles

   * scr_shoot(n); dispara siendo N el tipo de disparo.
   * scr_accel(); accelera
   * scr_rot(n); rota la nave n grados. El rango va de -5 a


Como cargar un droide/IA?

  1. Crear el objeto de la IA haciendo un duplicado de una existente.
  2. Ir al obj_menu y abrir la hoja del evento create.
  3. global.JTRUE=15; //Indica el numero de jugadores IAs disponibles incluyendo la IA '0';
  4. Cargar la IA: global.Ji[0]=obj_KrakenHimoto; global.Jnick[0] =''KrakenHimoto";


Como hago referencia a mi enemigo?
Para hacer referencia a nuestro enemigo utilizamos la variable 'id_en'.
Por ejemplo, posenemigox = id_en.x; posenemigoy = id_en.y; vel_enemy= id_en.speed;

----------------------------------------
El reglamento puede ser modificado sin previo aviso (igual voy a intentar avisar si es importante)

KrakenHimoto



Es muy posible que tengan miles de dudas al respecto del concurso por la complejidad que implica llevarlo a cabo por lo que este post en el foro va a servir para resolver todas esas dudas.

Saludos y Disfrutenlo =D
5
Noticias / Como hacer preguntas inteligentes
Agosto 17, 2008, 08:12:47 PM
?Porque todos ignoran mis preguntas y nadie las responde?

A varios de ustedes probablemente alguna vez les paso que (sobre todo si no frecuentan foros habitualmente) que formulan sus preguntas o dudas pero nadie las responde. Todos parecieran ignorarlas ya que nadie las responde y en el peor de los casos incluso son eliminadas por el staff de turno.

Hace muchos a?os (si, frecuento foros desde hace muchos a?os) encontr? un art?culo que explica a la perfecci?n el dilema que mencion? en el primer p?rrafo.
Es bastante largo por lo que voy a dejar el link en vez de postearlo entero.
No se dejen llevar por la aparente categor?a del tema, es un articulo que aplica para el 95% de los foros, solo que esta envuelto en un contexto relacionado con la categoria del foro que fue creado inicialmente el art?culo.

Antes que digan "vah yo se formular preguntas, no vale la pena perder 20 minutos leyendo este articulo" sepan que se pueden sorprender gratamente. Lo recomiendo para todos, no solo para aquellos que no saben cuando ni como formular sus inquietudes.

Sin mas pre?mbulos ac? les dejo el art?culo.

Link a "Como hacer preguntas inteligentes"




El que tenga ganas de colaborar para generar conciencia coloque el c?digo siguiente en su firma. Ocupa unos 200 caracteres.

[hr][b][size=10pt][URL=http://sindominio.net/ayuda/preguntas-inteligentes.html]- Como hacer preguntas inteligentes[/URL]
[URL=http://www.comunidadgm.org/index.php?topic=21.0]- Reglamento General[/URL]





Me despido con esta frase del articulo que aplica bastante al foro.
CitarSi no eres capaz de ser agradecido ten al menos un poco de dignidad, no te quejes y no esperes que te traten como una fr?gil mu?eca s?lo porque seas un reci?n llegado de alma teatralmente hipersensible y con ilusiones de estar autorizado a todo.
6
Juegos completos / Snake RemKH H-Online
Junio 04, 2008, 05:00:37 AM
  • TÍTULO: Snake RemKH
  • GÉNERO: Arcade
  • VERSIÓN: GM8 (Original: GM6)
  • SINOPSIS:

    Otra reverencia a un clasico. Es un remake del clasico Snake de 1977.
    Consta de un modo Clasico en donde la snake se alarga ilimitadamente y el modo Aventura que consta de unos 10 niveles.
    El juego a su ves, como los snakes mas recientes cuenta con varias velocidades para brindar diferente difitultad.
    Intente mantener un estilo clasico pero a su ves bastante agradable (creo ..)

    Espero que les guste :)

    Al igual que en el anterior Remake, el Asteroid, este tambien consta de una puntuacion online. En realidad dos, una para el modo clasico y otra para el modo aventura.

    EDIT de @eduardo960: Adaptación del viejo proyecto de KrakenHimoto, "Snake Rem KH", utilizando la versión 8 de Game Maker. Como novedad ofrece la integración de las puntuaciones dentro del juego, la versión anterior las visualizaba en una página web que ahora no existe más.

    DESCARGA: Descargar ZIP ó Jugar en Portal de Juegos Online

    • IMÁGENES:

    • CREDITOS: Eduardo960 - Mano derecha xD