Caso real de desarrollo de CONTRABAND

Distancia de llegada a Keros: dos caminos, dos posiciones

Un producto educativo de Martinez AI Studios

Last Run enseñaba un warp real Keros ↔ Belu. El salto de vuelta no compartía la pose near-dock del teletransporte scripted.

El tutorial de CONTRABAND (Last Run) tiene dos llegadas distintas a Keros. La primera es un teletransporte scripted. La segunda es un warp de mapa del jugador desde Belu. No son la misma función. Tratar un offset local de estación como posición de mundo aparcó el retorno cerca del origen — unos 795–798 m HUD del muelle — en vez de la banda near-dock prevista.

Categoría
Ownership de estado
Proyecto
CONTRABAND
Registrado
2026-08-19
Estado
Verificado · publicado

1. Síntoma

Tras el salto de mapa Belu → Keros, la nave no estaba junto a la estación de Keros. La distancia HUD quedaba cerca de ~798 m. La primera llegada scripted a Keros seguía usando una pose de vista. Abrir el mapa y seleccionar Belu no contaba como llegar; solo un cambio físico de sistema.

2. Impacto en el jugador

La lección de mapa terminaba con la nave lejos del muelle al que “acababa de llegar”. El paso a Capítulo 1 y el beat de entrenamiento básico dependían de estar físicamente en Keros, así que una pose incorrecta hacía sentir roto el tutorial aunque el id de sistema fuera correcto.

3. Reproducción

Jugar Last Run hasta la lección de mapa: saltar de verdad Keros → Belu, reabrir el mapa, saltar Belu → Keros. Comparar los metros HUD a la estación con la primera colocación scripted. Los tests de regresión reconstruyen el fallo sumando el offset local de estación (190, 72, 0) como si fuera espacio mundo.

4. Ownership del sistema

Las reglas de mapa/vuelo de Last Run viven en last-run-map-lesson.js (puras, sin warp propio). La colocación real la posee galaxy arrival / runtime de Last Run. El warp genérico usa _computeWarpArrivalPosition. El primer Keros scripted usa _teleportToKeros. Los comentarios en fuente nombran esas dos llegadas como funciones distintas.

5. Supuesto erróneo

Si currentSystemId === "keros", la nave “está en Keros” de un modo usable. También: un offset local de estación puede aplicarse como sample de mundo. También: un solo helper de llegada de warp basta para tutorial y campaña.

6. Causa raíz

El near-dock Belu → Keros usaba el offset local de la estación como si ya fuera espacio mundo, lo que aparcaba la nave cerca del origen (~795 m HUD en la reconstrucción). El warp de mapa no reutilizaba el ancla near-dock scripted. Entradas posteriores registran que el helper genérico de warp seguía dejando el segundo salto fuera de la banda 80–100 m HUD hasta que Last Run aplicó el mismo hook near-dock (~90 m).

7. Arreglo mínimo

Reconstruir el ancla de muelle sobre el host visual de Keros, descartar un sample local no confiable, y aplicar near-dock al completar aunque el flag ya estuviera puesto. Dejar igual la vista del primer Keros, el warp genérico y el respawn de muerte. La segunda llegada de Last Run (Belu → Keros, pata to_keros, ida ya llegada) es el único camino que debe usar el hook near-dock.

8. Test de regresión

last-run-map-warps.test.mjs afirma: seleccionar Belu sin llegar no completa Last Run; warpear no es llegada física; la reconstrucción offset-local-como-mundo queda demasiado lejos; samples de muelle confiables producen la banda 80–100 m HUD; lastRunSecondKerosArrivalUsesNearDock es verdadero solo para el retorno Last Run Belu → Keros.

9. Validación de release

Quedó registrado en el log de desarrollo de CONTRABAND el 19 de agosto de 2026 en v0.4.155–v0.4.157 (rebuild near-dock, banda 80–100 m, segundo salto también ~90 m). El QA Electron de Last Run sigue en el gate qa:release posterior; el contrato de este incidente es el archivo unitario anterior.

10. Lección generalizada

El id de sistema no es la pose. Dos entradas que comparten etiqueta siguen necesitando un contrato de colocación compartido. Mezclar espacio local y mundo se ve como un “bug de warp” para el jugador y como un vector de una línea para un asistente de IA. Posee una política de llegada por intención (vista vs near-dock) y testa metros, no solo flags.

Antes / después

Antes: salto de retorno ~795–798 m del muelle (offset local tratado como mundo); la primera llegada seguía en vista. Después: el retorno Last Run Belu → Keros usa el ancla near-dock (~80–100 m HUD, log ~90 m); la vista del primer Keros scripted no cambia; warp genérico y respawn no cambian.

Extracto simplificado

Simplificado / pseudocódigo para enseñar. No es un volcado de archivos de producción.

Reconstrucción de test de la mezcla mundo/local. No es el fuente de producción.

// Simplified teaching excerpt — not CONTRABAND production source.
const stationLocal = { x: 190, y: 72, z: 0 };

// Wrong: treat local dock offset as a world sample (~795 m HUD in the test).
const wrongWorld = stationLocal;

// Right: rebuild dock on the Keros visual host, then apply near-dock offsets.
const dockWorld = kerosHost.position.clone().add(stationLocal);
placeNearDock(kerosStar, dockWorld);

// Arrival #1 = scripted teleport. Arrival #2 = Belu→Keros map warp.
// lastRunSecondKerosArrivalUsesNearDock is true only for #2.

Evidencia pública

  • Log de desarrollo de CONTRABAND, 19 ago 2026, v0.4.155–v0.4.157 (near-dock de Keros / segundo salto).
  • last-run-map-warps.test.mjs (metros de muelle, dos caminos de llegada, reglas de cierre del mapa).
  • Comentarios en last-run-map-lesson.js y lastRunSecondKerosArrivalUsesNearDock; samples de muelle confiables en galaxy-arrival.

Módulos relacionados del curso insignia

Notas relacionadas