601. Identidad de la lección
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
DefeatedoEscapedsegú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:
- Percepción informa un hecho normalizado, por ejemplo
visibilityConfidence = 0.72. - El contrato de decisión/estado de
Patrol → Alertcontrola el umbral de alerta, por ejemploalertThreshold = 0.65. - El controlador de decisiones compara el hecho informado con ese umbral.
- Si el contrato permite la transición, el controlador entra en
Alerto 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:
- Completa un diagrama de límites para percepción, decisión/estado, movimiento, combate, salud, resultados, presentación y recompensas.
- 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.
- Decide si el controlador de estado recibe resultados distintos, como
TargetLost,EscapedyDefeated, 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. - 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 dePatrol → Alertcontrola 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?
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?
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?
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?
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?
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.