Original prompt: arreglar la escala: los NPC y el jugador son gigantes, tapan el mapa y el movimiento no se percibe
- Decisión: conservar el arte maestro de 25x25 como referencia, pero no renderizarlo dentro del mapa.
- Hecho: sprites jugables nativos de 9x7; el maestro de 25x25 se conserva fuera del mapa.
- Hecho: dos poses alternadas de piernas y equipo compacto para el héroe.
- Verificado visualmente: ciudad, portón y pradera en fotogramas de 120x34.
- Verificado automáticamente: movimiento cambia posición y pose; portón y colisiones siguen funcionando.
- Resultado: lint limpio, smoke del mapa OK y 52/52 pruebas (391 aserciones).
- TODO: ninguno para esta corrección de escala.
- Causa: la segunda pose cambiaba pies densos por apóstrofes finos y parecía difusa al alternar.
- Cambio: cabeza y torso permanecen idénticos; ambas poses de piernas usan el mismo ancho y densidad.
- Revisado: los cuadros consecutivos conservan torso, ancho y densidad; no quedan trazos finos residuales.
- Revisado: movimiento real, ciudad, portón y transición completa a la pradera.
- Resultado final: lint limpio, smoke OK y 52/52 pruebas (393 aserciones).
- TODO: ninguno para la corrección de nitidez.
- Hecho: el mercado fue sustituido por una plaza cívica abierta con estatua, árboles, bancos y cuatro accesos.
- Hecho: castillo, iglesia, hogar, taberna, alquimista, herrería y armería tienen siluetas y detalles propios.
- Revisión visual: corregidos cruces entre ventanales, ranuras de torre, escudos y puertas.
- Revisión funcional: un rótulo
[RUNA]creaba accidentalmente otra puertaA; se pasó todo texto decorativo a minúsculas. - Resultado final: siete puertas únicas y alcanzables, smoke TODO OK, lint limpio y 52/52 pruebas (396 aserciones).
- TODO: ninguno para esta renovación urbana.
- Diagnóstico: el render diferencial limpia filas correctamente; el arte móvil de 9x7 y 9x5 invadía líneas vecinas y parecía romperlas.
- Decisión: rollback selectivo de escala para actores móviles, conservando ciudad y edificios.
- Hecho: héroe y NPC máximo 7x4; monstruos máximo 5x3; arte maestro detallado conservado fuera del mapa.
- Hecho: héroe y monstruos anclados por los pies para no pintar debajo de su casilla de colisión.
- Verificado: las celdas abandonadas se restauran exactamente y ningún cuadro cambia el ancho o alto de la terminal.
- Resultado final: ciudad, plaza, portón, pradera y combate revisados; smoke TODO OK, lint limpio y 53/53 pruebas (405 aserciones).
- TODO: ninguno para la estabilidad del movimiento.
- Decisión del usuario: recuperar exactamente el dibujo
O--[=],/T\\,/ \\. - Hecho: el héroe vuelve a ocupar un máximo fijo de 7x3 caracteres en ciudad, pradera y combate.
- Hecho: eliminadas las poses alternadas y las variaciones visuales por equipo; moverse solo cambia coordenadas.
- Revisado visualmente con Bare: los cuadros 0 y 1 son idénticos y el terreno queda visible alrededor del personaje.
- Revisado funcionalmente: ciudad, portón, teletransporte a la pradera, combate y restauración del terreno siguen funcionando.
- Resultado final: lint limpio, diff limpio y 53/53 pruebas (401 aserciones).
- TODO: ninguno para este rollback puntual.
- Causa confirmada: al desplazarse la cámara cambian muchas filas y la terminal alcanzaba a mostrar el repintado mientras lo procesaba.
- Hecho: cada diff de Bare TUI se envía ahora dentro de DECSET 2026 (actualización sincronizada) y en una sola escritura.
- Compatibilidad comprobada: Windows Terminal instalado 1.24; esta versión soporta la presentación sincronizada.
- Hecho sin parchear dependencias: el adaptador vive en
lib/synchronized-renderer.jsy se conecta desdebin.mjs. - Verificado automáticamente: un cuadro completo produce una sola escritura BSU/ESU; 54/54 pruebas (404 aserciones) y lint limpio.
- Verificado en el runtime Bare: inicio, entrada a la ciudad, movimientos consecutivos y salida limpia; cada cuadro lleva BSU/ESU.
- Resultado final: 54/54 pruebas (404 aserciones), lint limpio y diff válido.
- TODO: ninguno para el barrido de actualización; relanzar explícitamente con Windows Terminal 1.24.
- Menú: ya no acepta cualquier tecla; solo
EnteroEspaciocomienzan yQsale, evitando saltos por entradas residuales. - Aclaración del usuario: el patrullaje no debía eliminarse. Se conservó íntegro y una prueba de 200 ticks confirma desplazamiento real.
- Causa adicional del barrido en pradera: cada celda coloreada emitía su propio par ANSI, inflando mucho cada fila modificada.
- Hecho:
paintRunsagrupa celdas contiguas del mismo color; conserva el resultado visible y reduce drásticamente la salida. - Verificado: filas con monstruos móviles permanecen compactas, restauran terreno y mantienen su ancho exacto.
- Revisión interactiva: una tecla ajena deja la portada visible y
Enterabre la ciudad; salida limpia conQ. - Revisión visual: ciudad, portón y pradera conservan arte, proporciones y sprites; smoke completo
TODO OK. - Resultado final: 56/56 pruebas (411 aserciones), lint limpio y diff válido.
- TODO: ninguno para este ajuste; relanzar la versión revisada.
- Elección del usuario: opción 2 exacta,
O,/T\\ [#],/ \\. - Hecho: sprite fijo de 8x3 en ciudad, pradera y combate; no cambia por movimiento ni equipo.
- Hecho: anclaje horizontal por el torso
T, evitando que el escudo desplace la posición visual. - Corrección de revisión: separación de combate asimétrica para que el escudo no tape al monstruo contactado.
- Verificado visualmente: ciudad, portón y pradera; poses consecutivas idénticas.
- Resultado final: 56/56 pruebas (411 aserciones), lint limpio y diff válido.
- TODO: rediseñar los edificios con referencias ASCII individuales aprobadas por el usuario.
- Pedido del usuario: conservar el héroe elegido, pero mover brazos y piernas al caminar.
- Hecho: dos poses alternadas por cada paso; cabeza y escudo permanecen fijos.
- Estabilidad: ambas poses ocupan exactamente 8x3 y dibujan la misma cantidad de celdas visibles.
- Revisado visualmente: ciudad, portón y pradera mantienen escala, alineación y terreno íntegro.
- Verificado: restauración de terreno, patrullaje, combate y portales siguen funcionando.
- Resultado final: 56/56 pruebas (416 aserciones), lint limpio y diff válido.
- TODO: ninguno para la animación de caminata.
- Diagnóstico: iglesia, hogar, taberna, alquimista, herrería y armería todavía compartían el generador
building(); los adornos no alcanzaban para diferenciarlas. - Referencias: colección de Genoveva y arquitectura eclesiástica ASCII clásica; la iglesia adapta a la escala del mapa una silueta asociada a Joan G. Stark y conserva el crédito en el código.
- Hecho: seis constructores propios sustituyen el molde común y mantienen las coordenadas originales de todas las puertas.
- Iglesia: nave ancha, campanario, cruz, vitrales, contrafuertes y rosetón.
- Hogar: casa baja de entramado, buhardilla y chimenea lateral.
- Taberna: dos plantas, entramado, barriles y cartel colgante.
- Alquimista: cúpula curva, burbujas, cuatro frascos y ventanales de laboratorio.
- Herrería: cubierta industrial baja, chimenea, fragua abierta y yunque.
- Armería: torres, almenas, sala de armas, escudos y puerta de rastrillo.
- Corrección de revisión: vaciados los interiores de las torres y convertidos los umbrales en mampostería válida.
- Verificado visualmente: los seis recortes tienen siluetas independientes y proporciones compatibles con el mapa 320x200.
- Resultado final: smoke
TODO OK, 56/56 pruebas (420 aserciones), lint limpio y diff válido. - TODO: en otra iteración, reemplazar también la base genérica interna del castillo conservando su entrada
V.
- Problema reportado: el héroe parecía envuelto en un rectángulo negro al caminar.
- Causa: los espacios de la caja 8x3 se componían como celdas opacas y reemplazaban pasto, calle y grava.
- Hecho: todos los espacios de héroe, NPC y monstruos son transparentes; solo los caracteres visibles modifican el cuadro.
- Pradera:
Field.render()puede entregar terreno limpio sin los marcadores lógicos@y los glifos de monstruo para quefieldPanecomponga encima. - Rendimiento: los cambios ANSI de color se encadenan sin cerrar y reabrir cada tramo; la fila de estrés bajó de 237 a 190 bytes.
- Revisión visual: ciudad, portón y pradera muestran sus caracteres dentro de los huecos de cabeza, brazo/escudo y piernas.
- Resultado final: smoke
TODO OK, 58/58 pruebas (428 aserciones), lint limpio y diff válido. - TODO: ninguno para la transparencia de actores.
- El menu ahora abre
Nueva partida, pide un nombre y no permite comenzar con el campo vacio. - La primera letra alfanumerica del nombre aparece en el pecho del heroe en ciudad, pradera y combate.
- Inventario y equipo son estados distintos: arma izquierda y armadura derecha se guardan por ranura.
- Comprar un arma o armadura la equipa; Enter vuelve a equipar un objeto propio y X lo quita sin venderlo.
- El heroe ya no dibuja escudo al comenzar; espada, ballesta, escudo y botas solo aparecen cuando corresponden al equipo activo.
- El equipo activo entra al combate y se conserva en guardados version 2; los guardados anteriores migran sin inventar equipo.
- El escudo ahora es mecanico: reduce en 2 el dano de cada golpe, con un minimo de 1.
- Revision visual: formulario 80x24, ciudad sin equipo y cinco variantes compactas dentro del limite 8x3.
- Verificado: 60 pruebas, lint limpio, smoke del mapa
TODO OKy diff valido. - TODO: ninguno para este ajuste.
- README reescrito en español para reflejar el menú de nueva partida, el combate sobre el mapa y el equipo real.
- Se reemplazaron las capturas antiguas de menú, ciudad, campo y combate.
- Se agregaron capturas de creación del personaje y tienda de armaduras con equipo activo.
- Las seis imágenes son estados producidos por el render actual, no maquetas manuales.
- Se agregó
scripts/readme-screens.jspara volver a generar los estados documentados de forma reproducible. - Capturas revisadas individualmente a 1280x800: texto legible, marcos completos y colores ANSI conservados.
- TODO: ninguno para la documentación actual.
- El menú principal ofrece tres ranuras navegables con flechas o
W/S. Entercarga una ranura ocupada o crea un personaje en una vacía;Npermite reemplazar la seleccionada.- El guardado conserva nombre, vida, oro, experiencia, pociones, inventario, equipo, mapa y coordenadas.
- La posición en la pradera se restaura sin reanudar un combate a medio resolver.
- Cada entrada relevante y el cierre del programa escriben la ranura activa mediante
lib/saves.js. - Los archivos viven bajo el directorio persistente de RUNA, no en la carpeta temporal usada anteriormente.
- Revisión integrada: se creó un
slot-1.jsonreal, se comprobó su contenido y se eliminó el fixture aislado. - Pulido posterior: menú principal y selector de ranuras son pantallas separadas; en
64x16no se pisan ni cortan controles. - Resultado final: 62/62 pruebas (473 aserciones), lint limpio y smoke del mapa
TODO OK. - Las seis capturas quedaron recortadas al borde real de la terminal, sin el lienzo exterior de
1280x800. - TODO: ninguno para este ajuste.
- Pedido actual: los duelos deben ocurrir en un Coliseo propio, no en la pradera ni en el mapa del jefe mundial.
- Hecho: mapa eliptico de alta resolucion (128x52), con arena de grava, marcas runicas, gradas, publico, muros y tunel sur.
- Integracion:
MAPS.coliseumpublica dosduelSpawnssimetricos,refereeSpawn,arenaBoundsyduelReady. - Seguridad: la baldosa
Qpermite volver a la ciudad durante pruebas; la futura logica PvP puede bloquearla mientras el duelo este activo. - Documentado:
docs/coliseum.mddeja el contrato exacto para que el agente de duelos conecte transporte, limites y retorno. - Revision visual: comprobados el punto de duelo oeste y el recorrido completo del tunel en vistas reales de 100x30 y 120x32.
- Verificado: 65/65 pruebas (515 aserciones) y lint limpio.
- TODO: conectar el desafio multijugador con
walker.placeAt('coliseum', spawn.x, spawn.y)cuando llegue la logica de duelos.
- Agregado
CLAUDE.mden la raiz para que Claude lea automaticamente el estado canonico antes de trabajar. - La nota impide duplicar el Coliseo dentro de la ciudad y separa arte/mapas de infraestructura, red y contratos.
- Detalla el flujo pendiente del duelo: conservar retorno, asignar lados, usar
duelSpawns, bloquearQ, aislar PvP del jefe y regresar al finalizar. - Advierte que
/root/runa-bdquedo corrupto; la fuente canonica es este repositorio de Windows y el nuevo remoto transferidoBitcoindefi/runa. - Recuperados 13,7 GB al vaciar solamente la cache regenerable de npm; no se borraron fuentes ni dependencias instaladas.