Lógica del juego
Movimiento e IA
Cómo caminan las unidades, cómo eligen objetivo y cómo siguen las órdenes de una misión o del jugador.
Movimiento
- Una unidad camina su velocidad / 32 px por tic (su velocidad × 1,875 px por segundo), siempre a toda velocidad: no acelera y gira al instante.
- Las rutas son líneas rectas entre puntos, 56 como mucho; no busca caminos. Una unidad que choca contra un obstáculo se desliza por él, porque el juego la empuja hacia afuera en cada cuadro.
- Llega a cada punto de su ruta cuando está a menos de 4,472 px.
- Si se manda a un grupo, cada unidad va al punto tocado más su propia dirección desde el centro del grupo por su radio + 4 px. No mantienen formación al caminar: solo se empujan para no encimarse.
Elegir objetivo
- Cada 10 tics (la primera vez, desfasada según su lugar en el escuadrón) una unidad busca enemigos a menos de 200 px.
- Elige uno con una de tres reglas: el más cercano, el que tiene más vida o el que tiene menos vida. Las dos últimas prefieren a los que ya están a su alcance de ataque.
- Una unidad encantada elige su objetivo entre los de su propio bando e Isaac.
- Solo buscan un objetivo nuevo las unidades en estos estados de decisión: 0, 1, 3, 4, 5, 8, 9 y 10. Mientras siguen una ruta sin atacar, una orden explícita o huyen, conservan el que tienen.
Órdenes
Una misión o el jugador da a cada unidad una orden, y la orden fija el estado desde el que la unidad decide en cada cuadro. El radio de visión es el de cada unidad (está en su página), y las misiones suelen cambiarlo.
| Orden | Qué hace la unidad | Estado |
|---|---|---|
| EsperarWait | Con el modo 0 se queda donde está y ataca a un objetivo que entre en su alcance + 22 px; nunca persigue. Con cualquier otro modo (estado 1) persigue y ataca a un objetivo dentro de su radio de visión, y si no hay, se queda quieta. | 0 / 1 |
| IrWalk · Move | Sigue su ruta sin detenerse a atacar. | 2 |
| Ir, atacando de pasoWalkAuto · MoveAuto | Sigue su ruta y ataca a los objetivos que ya están a su alcance, sin salirse de la ruta. | 3 |
| Ir, persiguiendoWalkAttack · MoveAttack | Persigue a un objetivo dentro de su radio de visión; si no hay, sigue su ruta. | 4 |
| Ir y después esperarWalkWaitAuto · MoveWaitAuto | Sigue su ruta y persigue objetivos dentro de su radio de visión; detenida y sin objetivo, espera como con un modo distinto de 0. | 5 |
| Tomar un cristalOccupation | Va al cristal de maná de otro bando más cercano a menos de 80 px y se queda hasta que es de su bando. Si no hay ninguno tan cerca, no hace nada. | 8 |
| Vigilar un puntoGuardPosition | Vigila un punto y puede perseguir desde ahí. Si se aleja del punto más que su radio de visión, vuelve caminando (estado 10) y retoma la vigilancia al estar a menos de la mitad de ese radio. | 9 / 10 |
| HuirEscape | Huye en línea recta de su objetivo mientras sus centros están más cerca que su distancia de seguridad (en la página de cada unidad: 60 px los monstruos, 0 Isaac y los magos); después se detiene. | 11 |
También existen los estados 6, 7 y 12: órdenes explícitas de atacar a una unidad u objeto concretos, y uno sin decisión propia. Qué órdenes los producen se sigue investigando.
Las órdenes de cada batalla
Cada unidad empieza la batalla con una lista de órdenes que sigue por su cuenta, un paso por tic (1/60 s). Además de las órdenes de arriba, la lista puede llevar:
back· Volver ese número de órdenes atrás en la lista, nunca antes de la primera: así se repiten las patrullas.target_nearest· Desde ahí, elegir el objetivo más cercano (también: el de más vida, el de menos vida).set_sight· Cambiar su radio de visión.change_max_hp· Cambiar su vida máxima a un porcentaje de ella; otra orden la fija en un valor. Las dos salen de la lista al cumplirse.
- Los movimientos van a un punto del mapa, o a un punto medido desde donde está la unidad. Un movimiento termina el tic después de que la unidad llega a su punto.
- Una espera dura sus tics; con 0 dura para siempre. Vigilar tampoco termina: la lista se queda ahí.
- Cada orden empieza el tic después de que terminó la anterior. Al terminar la última, la unidad sigue haciendo lo que hacía.
Ejemplo: la primera batalla
Seis Hongos bruma con tres cuartos de su vida. Los tres primeros patrullan entre dos puntos; los otros tres esperan 2 segundos y después van de un punto a otro, persiguiendo a quien entre en su visión.
| Unidad | Empieza en | Órdenes |
|---|---|---|
| Hongo bruma | (344, 133) |
|
| Hongo bruma | (431, 78) |
|
| Hongo bruma | (422, 204) |
|
| Hongo bruma | (128, 82) |
|
| Hongo bruma | (176, 128) |
|
| Hongo bruma | (128, 174) |
|
Cuántas veces usan cada orden los 196 archivos de batalla
move_attack6268wait2983back2075move_attack(dx, dy) 515move_auto479guard367move169take_crystal156change_max_hp28move(dx, dy) 25set_sight19move_wait_auto9target_nearest6move_auto(dx, dy) 4
Leído del código del juego (la clase de cada orden, el estado que guarda y las instrucciones que deciden); no se observó en un emulador.