Lección 7 de 170

Invariantes que puedes comprobar

Curso de desarrollo de videojuegos con IA

Escribe y comprueba invariantes de estado, invariantes de transición y postcondiciones relacionadas para una mecánica.

88. Identidad de la lección

Módulo
1.3 — Mecánicas y reglas
Lección
Invariantes que puedes comprobar
Tipo académico
Sistemas
Tipo de esquema
Texto
Orden
Lección 2 del módulo
Tiempo estimado
25–35 minutos, incluida la práctica

89. Objetivo de aprendizaje

Después de esta lección, podrás escribir dos invariantes observables para una mecánica, reconocer invariantes de estado y de transición, y usar postcondiciones relacionadas para comprobar si la mecánica se comporta de forma consistente.

90. Por qué importa

Una mecánica resulta más fácil de probar y revisar cuando sus reglas indican qué debe cumplirse siempre. Algunas reglas limitan el estado del juego; otras limitan todas las acciones de un tipo determinado. Escribir ambas formas permite detectar límites rotos, costes de recursos inconsistentes y cambios que alterarían la mecánica sin hacerlo evidente.

Para el hito de la Etapa 1, estas afirmaciones convierten una mecánica en un comportamiento que otra persona puede revisar en papel o durante el juego antes de centrarse en los detalles de implementación.

91. Conocimientos previos

Debes haber completado 1.3 — Mecánicas y reglas, Lección 1: Una mecánica es una regla. Debes poder describir una mecánica como una regla observable que conecta una acción o condición con una respuesta y un cambio. No se necesitan conocimientos de programación.

92. Concepto central

Un invariante es una regla que debe cumplirse en todos los estados o transiciones pertinentes dentro de un alcance definido.

En esta lección usaremos dos formas:

  1. Invariante de estado: una propiedad que debe ser cierta en todos los estados pertinentes del juego. Ejemplo: «La salud del jugador nunca supera la salud máxima».
  2. Invariante de transición: una regla que debe cumplirse cada vez que ocurre una transición determinada. Ejemplo: «Cada uso aceptado de un botiquín consume exactamente un botiquín».

Un invariante de transición no tiene que permanecer visible como una propiedad inmóvil del estado. Lo que hace es limitar todos los cambios de estado a los que se aplica. Para comprobarlo, se compara el estado anterior con el estado posterior a cada acción pertinente.

Una postcondición es un requisito del estado resultante asociado a una acción. Por ejemplo, una postcondición de usar un botiquín con éxito puede exigir que después haya más salud y un botiquín menos.

Estas categorías no siempre se excluyen entre sí. Una postcondición describe qué debe ser cierto después de una acción. Si ese mismo requisito se formula como una regla para cada ejecución válida de la acción, también funciona como invariante de transición. En cambio, anotar que en un caso concreto la cantidad pasó de 2 a 1 solo registra el resultado observado en ese caso; por sí solo, no establece una regla universal.

Una regla comprobable debe identificar:

  • Alcance: ¿Cuándo se aplica?
  • Objeto: ¿Qué estado o transición limita?
  • Propiedad exigida: ¿Qué debe ser cierto?
  • Observación: ¿Qué prueba revelaría una infracción?

93. Modelo mental

Usa dos comprobaciones complementarias:

Forma Pregunta Ejemplo Cómo comprobarla
Invariante de estado ¿Qué debe ser cierto en todos los estados pertinentes? La cantidad de botiquines nunca baja de cero Revisar la cantidad después de usos normales, repeticiones e intentos rechazados
Invariante de transición ¿Qué debe ocurrir cada vez que se realiza una acción aplicable? Cada uso aceptado consume exactamente un botiquín Comparar la cantidad justo antes y después de cada uso aceptado

Usa un alcance que no deje lugar a dudas:

Siempre que la mecánica de botiquines esté activa, incluso cuando la cantidad sea cero.

Para las postcondiciones, pregunta:

¿Qué estado resultante se exige después de aceptar o rechazar esta acción?

Después, recorre la mecánica con el bucle de la Etapa 1:

ACTUAR → RESPONDER → CAMBIAR → OTRA VEZ

En cada vuelta, pregunta:

  1. ¿La acción se aceptó o se rechazó según las condiciones indicadas?
  2. ¿El estado resultante cumplió las postcondiciones de la acción?
  3. ¿Siguieron cumpliéndose todos los invariantes de estado pertinentes?
  4. ¿La transición respetó todas las reglas universales para ese tipo de acción?

OTRA VEZ significa repetir la acción o la comprobación, incluido un caso límite. La repetición ayuda a determinar si una regla se cumple de forma consistente o solo parece cumplirse en un recorrido concreto.

94. Ejemplo concreto

Considera esta mecánica inventada:

Cuando el jugador usa un botiquín estando herido y tiene al menos uno, el uso se acepta: recupera 20 puntos de salud sin superar la salud máxima y gasta un botiquín. Cuando tiene cero botiquines, el intento se rechaza y la cantidad permanece en cero.

Entre sus reglas comprobables están:

  • Invariante de estado — límite del recurso: Siempre que la mecánica de botiquines esté activa, incluso cuando la cantidad sea cero, la cantidad de botiquines nunca baja de cero.
  • Invariante de estado — límite de salud: La salud del jugador nunca supera la salud máxima.
  • Invariante de transición — coste del uso aceptado: Cada uso aceptado de un botiquín consume exactamente uno.
  • Invariante de transición — protección ante el rechazo: Cada intento rechazado porque la cantidad es cero deja la cantidad de botiquines en cero.

Una postcondición de un uso aceptado es:

  • Después de la acción, la salud ha aumentado hasta 20 puntos sin superar el máximo y la cantidad de botiquines es una unidad menor que antes.

Esta postcondición describe el estado resultante exigido. Como el coste de un botiquín debe cumplirse en cada uso aceptado, esa parte también puede formularse como invariante de transición. Una observación como «este recorrido comenzó con 2 botiquines y terminó con 1» aporta evidencia sobre la regla, pero no es la regla universal.

Prueba el ejemplo en papel:

  1. ACTUAR: Intentar usar un botiquín con 40 puntos de salud y 2 botiquines.
  2. RESPONDER: La acción se acepta.
  3. CAMBIAR: La salud pasa a 60 y la cantidad de botiquines pasa a 1.
  4. OTRA VEZ: Repetir con 60 puntos de salud y 1 botiquín; después, volver a intentarlo con 0 botiquines.

En cada transición aceptada, compara la cantidad anterior con la posterior. Pasar de 2 a 1 o de 1 a 0 cumple la regla universal del coste. Pasar de 2 a 0 la infringiría aunque la cantidad siguiera siendo no negativa. Con cero botiquines, aceptar la acción o producir una cantidad de −1 infringiría las reglas especificadas.

Esto demuestra por qué importan ambas formas: una mecánica puede respetar un límite de estado y, aun así, incumplir el coste de una transición.

95. Errores comunes

Limitar los invariantes a propiedades de estado

«La cantidad de botiquines nunca se vuelve negativa» es un invariante de estado, pero no comprueba el coste exacto de un uso aceptado. Añade un invariante de transición como «cada uso aceptado consume exactamente un botiquín».

Tratar un resultado observado como una regla universal

«En este recorrido, los botiquines pasaron de 2 a 1» informa de un resultado. «Cada uso aceptado reduce la cantidad exactamente en uno» formula una regla para todas las transiciones aplicables.

Suponer que una postcondición nunca puede coincidir con un invariante de transición

Una postcondición especifica el resultado exigido después de una acción. Cuando ese resultado se exige en cada ejecución válida, también puede expresar un invariante de transición. Clasifica las afirmaciones según su alcance y función, no solo porque incluyan la palabra «después».

Excluir los estados límite del alcance

Si una regla afirma que la cantidad de recursos nunca se vuelve negativa, prueba un intento de uso con cero recursos. Evita una redacción que excluya por accidente ese estado.

Escribir intenciones en lugar de restricciones observables

«El botiquín se siente útil» es una intención de diseño, no un invariante comprobable. Sustitúyela por una regla de estado o transición que otra persona pueda verificar.

96. Práctica guiada

Elige una mecánica sencilla de la lección anterior o utiliza esta:

Una puerta cerrada se abre cuando el jugador tiene una llave. Cada apertura aceptada consume una llave. Un intento sin llave se rechaza.

Prepara una hoja de reglas con estos elementos:

  1. Un invariante de estado. Indica su alcance, la propiedad exigida y un caso límite que podría revelar una infracción.
  2. Un invariante de transición. Indica qué acción cubre, qué debe ocurrir en cada transición aplicable y qué comparación entre el antes y el después podría revelar una infracción.
  3. Una postcondición. Describe el estado resultante exigido después de una apertura aceptada. Señala cualquier parte que también exprese una regla universal de transición.
  4. Una decisión de límite. Decide qué ocurre cuando el jugador intenta abrir una puerta que ya está abierta. Indica si el intento se acepta, si consume otra llave y qué regla protege esa decisión.

Recorre al menos dos vueltas de ACTUAR → RESPONDER → CAMBIAR → OTRA VEZ:

  • un caso normal con una llave;
  • un caso límite sin llave o con la puerta ya abierta.

En cada recorrido, anota el estado pertinente antes y después de la acción. Etiqueta el resultado observado por separado de la regla universal que pretende comprobar.

97. Validación / evidencia

Tu evidencia será una hoja breve de reglas que contenga:

  • Una mecánica nombrada.
  • Al menos un invariante de estado y uno de transición.
  • Un alcance claro para cada invariante.
  • Una comprobación observable para cada invariante.
  • Una postcondición etiquetada por separado.
  • Una nota que identifique cualquier coincidencia entre la postcondición y una regla universal de transición.
  • Un caso normal y uno límite recorridos mediante ACTUAR → RESPONDER → CAMBIAR → OTRA VEZ.
  • Una decisión explícita sobre la repetición o el comportamiento en un límite.

El trabajo es suficiente cuando otra persona puede:

  • distinguir una regla sobre estados válidos de una regla sobre transiciones válidas;
  • distinguir el resultado de un recorrido concreto de una regla aplicable a todas las acciones de ese tipo;
  • identificar qué observación demostraría que cada regla es falsa;
  • aplicar las reglas en el límite de cero recursos o ante una acción repetida.

98. Ideas clave

  • Los invariantes de estado limitan todos los estados pertinentes del juego.
  • Los invariantes de transición limitan todos los cambios de estado aplicables.
  • Una postcondición especifica el estado resultante exigido después de una acción.
  • Una postcondición universal también puede funcionar como invariante de transición; las categorías no siempre son excluyentes.
  • El resultado de un solo recorrido aporta evidencia, pero no constituye por sí solo una regla universal.
  • Los casos límite y las acciones repetidas permiten detectar infracciones que un caso ordinario podría ocultar.

99. Próxima lección

Lleva tu hoja de reglas completada a 1.3 L3 — Lo que un cambio no debe hacer. Usa sus invariantes de estado, invariantes de transición y postcondiciones como restricciones protegidas al identificar qué no debe romper una modificación.

100. Comprobación

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

¿Qué afirmación es un invariante de estado para una mecánica de salud?

  • A. Una prueba comenzó con 40 puntos de salud
  • B. La salud se almacena en algún lugar del juego
  • C. El efecto de curación debería sentirse potente
  • D. La salud del jugador nunca supera la salud máxima
Mostrar respuesta y explicación

Respuesta: La salud del jugador nunca supera la salud máxima

Por qué: La regla de salud máxima limita todos los estados pertinentes del juego y puede comprobarse en el límite.

¿Qué afirmación es un invariante de transición?

  • A. Cada uso aceptado de un botiquín consume exactamente uno
  • B. El jugador tenía dos botiquines durante una prueba
  • C. El botiquín debería ser fácil de entender
  • D. El inventario tiene un icono
Mostrar respuesta y explicación

Respuesta: Cada uso aceptado de un botiquín consume exactamente uno

Por qué: La afirmación limita cada uso aceptado al exigir el mismo cambio del recurso entre el antes y el después.

¿Cómo puede relacionarse una postcondición con un invariante de transición?

  • A. Todo resultado observado se convierte automáticamente en un invariante
  • B. Un invariante de transición solo se aplica antes de una acción
  • C. Nunca pueden describir el mismo requisito
  • D. Una postcondición exigida después de cada ejecución válida de una acción también puede expresar un invariante de transición
Mostrar respuesta y explicación

Respuesta: Una postcondición exigida después de cada ejecución válida de una acción también puede expresar un invariante de transición

Por qué: Una postcondición especifica un estado resultante exigido. Cuando el requisito se aplica a cada ejecución válida, también limita universalmente ese tipo de transición.

Un recorrido muestra que una apertura exitosa cambió la cantidad de llaves de 2 a 1. ¿Qué afirmación adicional convierte ese resultado observado en una regla universal de la acción?

  • A. La puerta parecía abierta después de la prueba
  • B. Las llaves sirven para las puertas
  • C. Este recorrido concreto terminó con una llave
  • D. Cada apertura aceptada de una puerta consume exactamente una llave
Mostrar respuesta y explicación

Respuesta: Cada apertura aceptada de una puerta consume exactamente una llave

Por qué: El recorrido informa de un solo resultado. La afirmación sobre cada apertura aceptada limita universalmente todas las transiciones aplicables y, por tanto, funciona como invariante de transición.

Apoyar