Lección 41 de 170

Separar la decisión de la ejecución

Curso de desarrollo de videojuegos con IA

Define límites entre controladores para que la IA enemiga elija intenciones mientras los sistemas de dominio conservan la autoridad sobre el movimiento, el combate, la salud, los resultados, la presentación y las recompensas.

601. Identidad de la lección

Módulo
2.2 — IA enemiga
Lección
Separar la decisión de la ejecución
Tipo académico
Sistemas
Orden
2 del módulo
Tiempo estimado
35–45 minutos, incluida la práctica

602. Objetivo de aprendizaje

Al terminar esta lección, podrás dibujar un diagrama de límites de IA, redactar criterios de aceptación para los contratos de patrulla, alerta, persecución y retirada, y rastrear el efecto de un cambio en la regla de detección a través de esos límites.

603. Conocimientos previos

Esta lección continúa lo aprendido en 2.2 L1 — El comportamiento enemigo como contrato de estado. Debes poder identificar la condición de entrada, el comportamiento observable, la condición de salida, el responsable y la alternativa de fallo de un estado.

604. Por qué importan los límites

Un controlador de decisiones enemigo debe elegir qué intenta hacer el enemigo. No debe moverlo de forma oculta, modificar la salud, confirmar una muerte, controlar la presentación ni entregar recompensas.

Cuando un solo controlador realiza todas esas operaciones, cualquier cambio de comportamiento introduce acoplamientos difíciles de detectar. Los contratos claros permiten revisar cada solicitud: el controlador de decisiones propone una intención, el sistema de dominio correspondiente aplica sus reglas y el contrato de estado recibe un resultado observable.

605. El contrato entre controladores

Usa el modelo observar → decidir → solicitar → validar → ejecutar → informar:

Hechos de percepción
        |
        v
Controlador de decisión/estado -- solicitud --> Sistema de dominio
                                              valida sus propias reglas
                                              ejecuta o rechaza
                                                     |
                                                     v
                                          Resultado observable
                                                     |
                                                     v
                                   Contrato de estado y presentación

En esta lección se aplica la siguiente distribución de responsabilidades:

  • Percepción: informa hechos sin interpretar o normalizados, como visibilityConfidence, la distancia o si la línea de visión está bloqueada.
  • Controlador de decisión/estado: controla la política de comportamiento. Compara los hechos de percepción con los umbrales del contrato de estado, elige estados e intenciones y determina si la persecución sigue permitida desde el punto de vista del comportamiento.
  • Controlador de movimiento: controla la viabilidad y la ejecución del desplazamiento, incluida la navegación, las rutas bloqueadas, los límites de velocidad y las condiciones de detención.
  • Sistema de combate: valida las solicitudes de ataque, incluidos el alcance, el enfriamiento, la validez del objetivo y las reglas de ataque.
  • Sistema de salud: aplica el daño aceptado y controla la modificación de la salud.
  • Sistema de resultados: confirma resultados terminales como Defeated o Escaped según las reglas del juego.
  • Sistema de animación o presentación: representa estados y resultados confirmados sin convertirse en su autoridad.
  • Sistema de recompensas o progresión: reacciona a resultados confirmados, no a intenciones de la IA.

Una implementación puede combinar los componentes de combate, salud y resultados. Aun así, cada regla debe tener un único responsable explícito. En los ejemplos de esta lección, combate valida el ataque, salud aplica el daño aceptado y resultados confirma el desenlace terminal.

606. Contrato de detección

Esta lección utiliza un contrato de detección explícito:

  1. Percepción informa un hecho normalizado, por ejemplo visibilityConfidence = 0.72.
  2. El contrato de decisión/estado de Patrol → Alert controla el umbral de alerta, por ejemplo alertThreshold = 0.65.
  3. El controlador de decisiones compara el hecho informado con ese umbral.
  4. Si el contrato permite la transición, el controlador entra en Alert o emite la intención correspondiente.

Percepción no decide que el enemigo deba entrar en Alert. Por tanto, cambiar el umbral de alerta modifica el contrato de decisión/estado, no el contrato de percepción. Percepción solo cambia si se modifica el significado, el intervalo o la forma de producir visibilityConfidence.

607. La política no es la viabilidad

La persecución plantea dos preguntas diferentes:

  • Política: ¿Debe este enemigo seguir persiguiendo? El controlador de decisión/estado responde según el contrato de persecución, la validez del objetivo, los límites de persecución y los hechos informados.
  • Viabilidad: ¿Puede ejecutarse ahora el movimiento solicitado? El controlador de movimiento responde según las reglas de navegación, rutas bloqueadas, desplazamiento y detención.

Por ejemplo, la persecución puede seguir permitida aunque una ruta esté bloqueada de forma temporal. El controlador de movimiento puede rechazar la solicitud actual; después, el contrato de estado elige una alternativa, como esperar, solicitar otra ruta, cambiar de posición o retirarse. Un rechazo de movimiento no modifica por sí solo la política de comportamiento.

608. Límites de ataque y resultado

Cuando el enemigo quiere atacar, el controlador de decisiones emite una solicitud o intención de ataque para que el sistema de combate la valide. No emite un ataque ya validado.

Decisión: RequestAttack(targetId)
Combate: validar alcance, enfriamiento, objetivo y reglas de ataque
Combate: aceptar o rechazar la solicitud
Salud: aplicar el daño aceptado y modificar la salud
Resultados: confirmar Defeated si se cumple la regla terminal
Presentación: representar el ataque y el resultado confirmados
Recompensas: reaccionar una sola vez al resultado confirmado

Una animación de ataque no demuestra que el ataque haya sido aceptado. Un valor de salud bajo o el final de una animación de muerte tampoco confirman por sí solos Defeated. El resultado válido debe proceder del sistema responsable de esa regla.

609. Ejemplo de transiciones

Considera Patrol, Alert, Pursue y Disengage:

Contrato Responsabilidad de decisión/estado Responsabilidad del sistema de dominio Resultado observable
Patrol → Alert Comparar visibilityConfidence con el umbral de alerta. Percepción informa el nivel de confianza. Entrada en Alert o permanencia en Patrol.
Alert → Pursue Determinar si la persecución está permitida por la política de comportamiento. Movimiento validará después el desplazamiento solicitado. Persecución seleccionada o mantenimiento de la alerta.
Movimiento durante Pursue Mantener o terminar la persecución según la política. Movimiento acepta o rechaza una ruta o solicitud de desplazamiento. Movimiento aceptado, ruta bloqueada o destino inaccesible.
Ataque durante Pursue Solicitar un ataque. Combate valida; salud aplica el daño aceptado. Ataque aceptado o rechazado; resultado de daño informado.
Resultado terminal Reaccionar a un resultado confirmado. Resultados confirma Defeated o Escaped. Transición de estado y reacciones posteriores.

610. Errores comunes

Un método descriptivo con autoridad oculta

Un método llamado enemyAttack() no constituye un límite útil si modifica directamente la salud, inicia lógica de muerte con autoridad y entrega recompensas. Un límite requiere una solicitud, un validador responsable y un resultado observable.

Permitir que movimiento decida la política

El controlador de movimiento puede informar RouteBlocked, pero no debe decidir que la persecución ya no está permitida. El contrato de decisión/estado interpreta ese resultado y elige entre reintentar, cambiar de posición, esperar o retirarse.

Permitir que la presentación confirme reglas

La animación representa acciones aceptadas y resultados confirmados. No determina si se aplicó daño, si un enemigo fue derrotado ni si corresponde una recompensa.

611. Práctica guiada

Completa la evaluación práctica vinculada a esta lección. Incluye una tabla de contratos parcialmente resuelta para que no tengas que repetir en prosa todas las etiquetas del diagrama.

El trabajo tiene cuatro partes:

  1. Completa un diagrama de límites para percepción, decisión/estado, movimiento, combate, salud, resultados, presentación y recompensas.
  2. Completa las celdas pendientes de la tabla de transiciones y redacta cinco criterios de aceptación breves: uno para patrulla, alerta, persecución, retirada y un resultado terminal confirmado.
  3. Decide si el controlador de estado recibe resultados distintos, como TargetLost, Escaped y Defeated, o un conjunto más reducido. Explica la ventaja y el coste de tu elección sin transferir a la IA la autoridad sobre el resultado.
  4. Eleva el umbral de alerta y rastrea el contrato afectado, las consecuencias posteriores, sus responsables y un contrato o prueba que deba revisarse.

No escribas código de implementación. La evidencia consiste en el modelo de límites y el razonamiento sobre sus contratos.

612. Lista de comprobación

La entrega debe mostrar lo siguiente:

  • Percepción informa visibilityConfidence; el contrato de decisión/estado de Patrol → Alert controla el umbral de alerta.
  • El controlador de decisión/estado determina si la persecución está permitida.
  • El controlador de movimiento valida la viabilidad del desplazamiento, la navegación y las condiciones de detención.
  • El ataque cruza el límite como una solicitud todavía no validada para que combate la valide.
  • Combate valida ataques, salud modifica la salud y resultados confirma desenlaces terminales.
  • Presentación y recompensas solo reaccionan a resultados con autoridad.
  • Al menos una solicitud rechazada conduce a una alternativa observable.
  • El análisis del cambio de umbral identifica los contratos y responsables que deben revisarse.

613. Ideas clave

  • Los controladores de decisiones eligen estados e intenciones; los sistemas de dominio hacen cumplir sus propias reglas.
  • Percepción informa hechos; en este contrato, el umbral de alerta pertenece a decisión/estado.
  • El permiso para perseguir es una política de comportamiento; la viabilidad del movimiento pertenece al desplazamiento.
  • Combate debe validar las intenciones de ataque antes de que cambie la salud.
  • Se pueden combinar componentes, pero cada regla debe conservar un único responsable explícito.
  • Los rechazos y resultados confirmados deben volver al contrato de estado como resultados observables.

614. Próxima lección

Siguiente: 2.3 L1 — Un encuentro tiene un límite. Los resultados confirmados de aparición, actividad, derrota, huida y limpieza se convertirán allí en entradas del ciclo de vida del encuentro.

615. Comprobación

Responde estas preguntas por tu cuenta antes de leer las respuestas.

¿Qué debe emitir un controlador de decisiones enemigo cuando quiere atacar?

  • A. Una solicitud o intención de ataque para que el sistema de combate la valide
  • B. Una modificación directa de la salud del objetivo
  • C. Una recompensa confirmada por la derrota prevista
  • D. Una orden de animación que demuestre que el ataque tuvo éxito
Mostrar respuesta y explicación

Respuesta: Una solicitud o intención de ataque para que el sistema de combate la valide

Por qué: El controlador de decisiones expresa una intención. Después, el sistema de combate valida el alcance, el enfriamiento, la validez del objetivo y las demás reglas de ataque.

Percepción informa visibilityConfidence = 0.72. En el contrato de esta lección, ¿qué sistema controla el umbral para entrar en Alert?

  • A. El contrato de decisión/estado
  • B. El controlador de movimiento
  • C. El sistema de animación
  • D. El sistema de recompensas
Mostrar respuesta y explicación

Respuesta: El contrato de decisión/estado

Por qué: Percepción informa el hecho normalizado de visibilidad. El contrato de decisión/estado de Patrol → Alert controla el umbral y lo usa para decidir si la transición está permitida.

¿Qué distribución separa correctamente la política de persecución de la viabilidad del movimiento?

  • A. Animación determina la política de persecución y movimiento confirma los resultados
  • B. Percepción ejecuta el movimiento y la IA valida la navegación
  • C. Movimiento decide si se permite perseguir y la IA modifica la ruta
  • D. El controlador de decisión/estado determina si se permite perseguir; movimiento valida si puede ejecutar el desplazamiento solicitado
Mostrar respuesta y explicación

Respuesta: El controlador de decisión/estado determina si se permite perseguir; movimiento valida si puede ejecutar el desplazamiento solicitado

Por qué: El permiso para perseguir es una política de comportamiento del contrato de decisión/estado. La navegación, las rutas bloqueadas, el desplazamiento y las condiciones de detención pertenecen al controlador de movimiento.

Según la distribución de ejemplo de esta lección, ¿qué afirmaciones sobre responsabilidades son correctas?

  • A. Combate valida las solicitudes de ataque
  • B. Salud aplica el daño aceptado y modifica la salud
  • C. Resultados confirma los desenlaces terminales
  • D. Animación confirma si el daño tiene autoridad
Mostrar respuesta y explicación

Respuesta: Combate valida las solicitudes de ataque; Salud aplica el daño aceptado y modifica la salud; Resultados confirma los desenlaces terminales

Por qué: Combate valida el ataque, salud aplica el daño aceptado y resultados confirma los desenlaces terminales. Una implementación puede combinar componentes, pero la animación sigue siendo presentación y no autoridad.

La persecución sigue permitida por la política de comportamiento, pero el controlador de movimiento informa RouteBlocked. ¿Qué debe ocurrir después?

  • A. Animación debe elegir otra ruta
  • B. La IA debe omitir la navegación y mover al enemigo directamente
  • C. Movimiento debe finalizar la persecución sin informar
  • D. El contrato de decisión/estado debe interpretar el rechazo y elegir una alternativa definida
Mostrar respuesta y explicación

Respuesta: El contrato de decisión/estado debe interpretar el rechazo y elegir una alternativa definida

Por qué: Movimiento controla el resultado de viabilidad, pero el contrato de decisión/estado controla la respuesta de comportamiento. Puede reintentar, esperar, cambiar de posición, solicitar otra ruta o retirarse según una alternativa explícita.

Apoyar