Bueno, esto es algo que más de una vez me he preguntado ¿como se hace?.
Hay varios "tipos de inteligencia", las cual catalogaría como las siguientes:
1 - Acción del jugador o proximidad ante un objeto -> movimiento u acción programado
2 - Juegos tipo "4 en raya" -> acierto / error en todas las posiciones posibles.
* Si come ficha -> No realizar acción
* No come ficha -> Movimiento de ficha, y verifica si puede comer ficha sin ser comido. En caso de ser comido, se valorará el rango de la ficha comida con respecto a la ficha que se está usando ahora mismo.
3 - Juegos de lucha:
Aquí está la que posiblemente traiga más problemas a la hora de crear un juego de lucha. Yo pienso que debe ser de la siguiente forma:
Primer paso:
Verificar la proximidad del jugador. Si se está muy lejos, ha de acercarse hasta cierta distancia programada. Una vez llegado a ese punto, dependiendo del nivel de dificultad, se reaccionará con más o menos velocidad. En caso de estar en un nivel de dificultad muy alto, se atacará rapidamente con una tanda de ataques aleatorios (o no tanto, dependiendo de factores como vida, etc)
Segundo paso:
Si se está cerca del jugador y este ha iniciado un ataque, dependiendo del nivel de dificultad, de más bajo a mas alto, se puede:
- No hacer nada (o muy pocas veces)
- Defenderse o bien saltar hacia atrás
- Hacer algún tipo de contramedida, como atacar por las piernas o saltar y golpear desde arriba (si se está a una distancia proxima pero lo suficienmente lejana, si se está cerca, seguramente se responderá con cubrirse seguido de un ataque rápido)
Tercer paso:
Para añadir cierta aleatoridad y dar la sensación de que se lucha contra un adversario dificil de batir y no un pelele, pueden programarse una serie de acciones si el jugador realiza cierta combincación de botones, cosas como lanzar todo el día hadokens o bien estar golpeando en un rincón al contrincante sin dejar ni moverse.
La aleatoriedad y velocidad de respuesta a un ataque igualmente pienso que ha de estar basada en el nivel de dificultad. Vamos a poner que estamos jugando al SSF2. Si lo pones con tan solo una estrella de dificultad, tardará en responder a los ataques por ejemplo 400ms. Si lo pones en el tope de dificultad, tardará 150 ms. También están las respuestas a cosas tan tipicas como saltar y acto seguido golpear por arriba, podiendose repeler con un puñetazo por lo alto xD.
Cuarto y último paso:
Esto es algo importante, y es que apartir de cierta cantidad de tiempo, las acciones sean llevadas más rápido, teniendo en cuenta el nivel de dificultad. Vamos, lo que haría un jugador si tiene menos vida y va perdiendo, el intentar quitarle todo la vida al contrincante antes de que se acabe el tiempo, usando fatalities, combos, etc.
Si, tiene que ser bastante díficil diseñar estas cosas, luego venimos nosotros y nos fundimos estas cosas que han sido diseñadas en semanas xDDDDDDDDD.
¿Existen algún tipo de documento por la red que hable sobre esto, o algún manual?