fylux / GameAI

0 stars 0 forks source link

Implementar "Defender territorio" #13

Open fylux opened 5 years ago

fylux commented 5 years ago

Opción 1

Descripción

Las unidades estan en modo defender zona que cubre todo el territorio aliado hasta el rio.

Lógica

  1. Si la unidad está en un punto de curación y su salud no es máxima: ->Nada

  2. Si la unidad está en un punto de curación y su salud es máxima: ->Considerar 3. y 4.

  3. Si la unidad está en fuera del rango del centro del terreno y no tiene GoTo ->GoToPasivo centro del terreno por camino seguro, margen de llegada alto.

    -> Defender zona

  4. Si la unidad está en en el rango del centro, no hay enemigos en el territorio y tiene asignado DefendZona: -> GoToActivo cerca del punto, marge de llegada medio

    -> Defender zona

  5. Si la unidad está en el rango del centro, tiene poca vida y no GoTo -> GoToPasivo camino seguro a punto de recuperar vida con margen pequeño

    -> Defender zona con radio muy pequeño

Problemas

Posibles soluciones:


Opción 2

Descripción

Las capa 3 detecta clusters de enemigos y les manda el número apropiado de unidades disponibles como para destruirlo. También predice la llegada de enemigos por el puente y bloquea los puentes.

Métodos

Detección de clusters:

Cluster 1: Se coge un enemigo, se buscan sus vecinos no visitados y se marca enemigo como visitado. Se repite el proceso añadiendo los vecinos no visitados al cluster. Cluster N: Repetir hasta que no queden enemigos en territorio aliado.

Asiganción de unidades a cluster:

Los clusters se recalculan cada N segundos y se asignan las unidades más cercanas.

N unidades atacar a cluster:

Lógica

[Las unidades con poca vida debería ir a curarse]

  1. Obtener lista de clusters
  2. Puntuarlos en función del número de aliados alrededor del cluster, ponderando la cercanía.
  3. Restar a la ponderación el número de unidades del cluster. (para obtener el balance de fuerzas)
  4. Ordenarlos por puntuación
  5. Asignar a cada cluster el número mínimo de unidades para tener una pequeña ventaja. 5.1 Cada cluster coge la unidad más cercana a su centro 5.2 Está unidad se le ordena un atacar+follow al enemigo más cercano del clúster
  6. Si quedan unidades restantes -> Coger el número de enemigos de cada clúster y normalizarlo para que sumen el número de unidades restantes. 6.1 Repetir 5.1 6.2 Si la relación de unidades mandas respecto a enemigos es muy alta -> Dejar de asignar.

Si la lista de clusters es nula o quedan unidades sin asignar -> Mandar las unidades a algún puente con GoToPasivo

->poner en defender zona

jaimegrw commented 5 years ago

Con las unidades sobrantes:

  1. Si quedan enemigos, y no puedes con ninguna de ellos ni con todas las unidades, a base
  2. Si sobran unidades, al puente que digamos segun la circunstancia