sábado, 7 de diciembre de 2013

Reflexiones acerca de la inteligencia artificial videojueguil

Como gamer que soy, debo decir que a pesar de los enormes avances gráficos que han tenido los videojuegos, una de las cosas más preocupantes de ellos, es la poca evolución que han tenido los videojuegos en cuanto al comportamiento de los personajes no jugadores, juegos como crysis o Call of duty (y en realidad, la mayoría) los cuales poseen efectos gráficos envidiables pero cuyos enemigos se comportan básicamente como unos imbéciles ¿cubrirme al lado de barriles de combustible? ¿Olvidarme de mi compañero 30 segundos después de haber sido asesinado? ¿Tener la capacidad de organización de una hormiga sin antenas? me hace preguntarme en que piensan los desarrolladores cuando prueban sus propios juegos.
 

Y reflexionando un tanto, creo tener una solución practica,aunque supongo que ya se habrá estudiado en algún momento, y debe estar escrita en algún artículo de un científico gamer (que cool suena eso), sin embargo, investigando un poco no encontré nada lo suficientemente similar, y en lo que he vivido en mi experiencia con los videojuegos no he visto nada similar.

La Inteligencia artificial Comandada.
Así se denomina mi solución, fundamentada sencillamente en la vida real: los escuadrones de soldados siempre están dirigidos con un líder que organiza y se encarga de las estrategias, por ello son siempre unos blancos apetecidos por el bando contrario, pues al eliminarlo los enemigos entran en caos y se vuelven presas fáciles. En vez de centrar la IA en desarrollar entidades individuales robustas y con gran cantidad de movimientos, la IA debería concentrarse en desarrollar un comandante que encuentre la forma ideal de mover sus peones por el campo de batalla; así pues, cada peón haría solamente las siguientes funciones:

  • Buscar disturbios en el entorno para intentar detectar al jugador.
  • Informar al comandante acerca del jugador (cuando este ya ha sido detectado).
  • Seguir órdenes del comandante.

Estos pasos deberían ser un proceso cíclico y el comandante debería tener la facultad de cambiar la estrategia, una vez calcule que esta es ineficaz contra el jugador, así, en vez de crear robustas IAs individuales, crearas obedientes peones con un comandante impredecible y astuto.

Estrategias.


Si bien existen un montón de estrategias posibles a tomar, y variaciones dentro de ellas, en este apartado escribo ciertas ideas que se podrían usar como base en la construcción de estrategias (las estrategias propuestas se idearon con un FPS en mente, sin embargo podrían ser usadas para otros tipos de juegos):

Flanqueo: una estrategia básica para afrontar un enemigo podría ser tomarlo desprevenido por la espalda, en este caso, el comandante necesitaría calcular un camino seguro para realizar el flanqueo. Esta estrategia puede ser útil para un jugador con gran potencia de fuego y siempre y cuando el peón enviado a flanquear no haya sido descubierto por este. El mayor problema de esta estrategia es la selección del momento y camino indicado.
Ejemplo de flanqueo: el flanqueo por la izquierda del jugador debería ser mas apetecible para el comandante.

Un algoritmo de flanqueo efectivo, debería ser capaz de usar edificios cercanos (subiendo y llegando hasta las ventanas) o detectar nuevos caminos  creados dinámicamente (humo de una granada, la nueva posición de un vehículo).

Fuego directo: en caso de que el comandante determine  una potencia de fuego superior a la del jugador, o en caso de que este posea muy poca vida y además este se encuentre a muy poca distancia, un potente ataque con todo el equipo disponible puede ser efectivo para eliminar el jugador. En este caso, los peones se mueven lo más cerca posible del jugador e intentaran atacar  más o menos el mismo momento.


Cubrirse: Una estrategia bastante viable, en un sitio intrincado, con gran cantidad de sitios donde evitar los tiros, también, en combinación con el flanqueo. Es una de las mejores formas de abordar a un jugador armado con rifles sniper. Para esta tarea, el comandante debe conocer todas las posibilidades para cubrirse, esto puede ser sencillo mediante waypoints, pero el uso de estos vuelve a las IA predecibles (además, no pueden usarse cambios inesperados del mapa como herramienta para nuevas estrategias).

Circulo cántabro: (gracias por la idea, Laura): Le digo así en referencia a la estrategia de hostigamiento  de los caballos cántabros, pero esta es algo diferente, la idea es posicionar alrededor del jugador a los peones, y hostigarlo atacando con los peones ubicados en la espalda del jugador.

Usar un señuelo: El comandante podría decidir usar un señuelo, un peón de gran resistencia para atacar al jugador de manera directa y a la vez, flanquearlo con el resto de peones, esta sería un ejemplo de combinación de estrategias de parte del comandante.

(continuara...)

lunes, 10 de junio de 2013

Arduino

Hola mi abandonado blog. Hace mucho no tenía temas relevantes con que nutrirte.

Sin embargo, estas vacaciones he decidido por primera vez evitar el aburrimiento a como dé lugar; Y es que todos hemos pasado por esas típicas fases vacacionales:
 1) felicidad extrema haz salido a vacaciones.
 2) haces todo lo que deseas (y puedes) en 2 o 3 días, te diviertes y disfrutas a lo máximo.
 3) te das cuenta que en realidad no sabías que coño hacer en vacaciones, caes en el aburrimiento.
 4) TE DESESPERAS del aburrimiento, Dios! no hay un C*L* que hacer en vacaciones (esto excluye a la gente rica, de la cual no hago parte. os matare algún día).
 5) finalizan las vacaciones y tienes una sonrisa de oreja a oreja al ver que los estudios se reanudan, o que buena sensación es volver a la vida social activa.

 Y bien, esa felicidad es efímera pues a lo máximo te dura hasta que te colocan el primer trabajo de ese periodo, así que está demostrado que el culpable de todas nuestras tristezas es el estudio, pero esto es tema aparte.

 Estas vacaciones, he decidido comprar una placa arduino, para desarrollar peripecias electrónicas, convirtiéndome de esto:


 A esto!

 Y no, no me he equivocado en el orden.
Porque ahora soy un jodido nerd (mas nerd, mucho mas nerd) encuevado en mi casa, descubriendo lo que nos rodea gracias a un bello plástico azul enmarañado en pines y microchips.

Vacaciones! No podrás vencerme esta vez.

Bueno, en general Arduino es un dispositivo capaz de lanzar y recibir electricidad siguiendo unas ordenes programadas, es algo que en concepto parece bastante simple, pero en la practica todos los equipos electrónicos funcionan de la misma manera.Gracias a este pequeño dispositivo podemos crear desde un led parpadeante(que es lo mejor que he podido hacer)

hasta cosas como esta: