Defiende al águila en interminables campos de batalla de hierba, nieve e instalaciones industriales, o en 35 mapas clásicos. Recoge diez suministros y derrota a los tanques pesados enemigos, que requieren cuatro impactos para ser destruidos.
Una propuesta inicial basada en el proyecto público del creador, no una transcripción de su prompt original. El resultado puede variar.
Especificación de reconstrucción derivada del proyecto Three.js creado localmente, en el commit de runtime 670383f86f56c61e29e10d12424addf6f8defbe9, y del gameplay público verificado. Tributo independiente de fans a Battle City (1985, Namco). Datos de mapas y oleadas clásicas: gunnerson/battlecity (MIT); audio recopilado: JustoSenka/BattleCity (repositorio MIT). Diecisiete modelos generados con Tripo P2. Esta es una especificación derivada del proyecto, no un prompt de generación original reproducido literalmente.
Battle Cityjuego de tanques en 3DThree.jsTripodefensa con tanquesmapas procedurales
El prompt
1. Objetivo del proyecto
Crear Battle City 3D, un juego de defensa con tanques para navegador inspirado en el clásico de Famicom de 1985. El jugador conduce un tanque, destruye una oleada de 20 enemigos, recoge suministros y protege el cuartel general del águila. Reconstruir la versión actual en perspectiva 3D que aparece en el material de referencia, incluida una campaña infinita basada en una semilla y 35 diseños clásicos seleccionables. Conservar las reglas arcade fáciles de entender, pero dotar de profundidad real a los tanques, las paredes y el escenario.
2. Estilo visual
Usar una PerspectiveCamera de Three.js con un campo de visión de 60 grados. La vista predeterminada del campo de batalla se sitúa detrás y por encima del jugador, a unos 13 unidades del mundo y con una elevación de 0,43 radianes. Seguir suavemente la posición y un punto situado delante del tanque; no girar nunca la cámara automáticamente cuando el tanque cambie de dirección. Ofrecer una vista táctica más elevada, órbita manual mediante arrastre y zoom con la rueda. Usar los cuatro ejes cardinales del mapa para desplazarse y disparar. Después de orbitar, asignar las teclas de dirección al punto cardinal más cercano con respecto a la cámara; no convertir nunca la entrada del teclado en movimiento diagonal. Hacer que la orientación del chasis coincida de inmediato con la dirección del disparo y calibrar la altura de los proyectiles y de los destellos del cañón según el cañón real de cada modelo.
Usar tanques de orugas asentados sobre el terreno, torretas metálicas, ladrillos de terracota, bloques de acero oscuro, agua azul, vegetación baja y hielo reflectante. Prolongar el suelo más allá del área jugable con árboles, edificios en ruinas y bruma. Usar luz direccional cálida, sombras suaves, iluminación ambiental de relleno, mapeado de tonos ACES y destellos de cañón, retroceso, chispas y escombros rebotando con moderación. La nieve cambia la paleta del suelo y los árboles; las fases industriales dan prioridad al acero y a los edificios en ruinas.
Enmarcar el juego con una interfaz de mando verde oliva oscuro, acción principal amarilla cálida, puntuación, vidas compartidas, iconos de enemigos restantes, nombre de la fase y radar. Colocar el selector grande de modelos Tripo 3D / Three.js sobre el campo de batalla, mostrando el modo seleccionado y una vista previa giratoria de un tanque. Usar una guía de suministros ilustrada y localizada, además de indicadores de efectos temporales. Mantener visibles el área de juego y los controles táctiles esenciales en pantallas estrechas.
3. Mundo y escenas
Representar el campo de batalla como una cuadrícula de 26 × 26 casillas, con una semianchura de colisión del tanque de 0,72. Colocar el águila en (13,25), rodeada por una defensa de ladrillos destruible en forma de U. Los puntos de aparición de los jugadores son (9,25) y (17,25); las puertas enemigas están en (1,1), (13,1) y (25,1).
Ofrecer dos campañas: los 35 diseños clásicos con sus tablas de oleadas de 20 enemigos y un generador infinito basado en semillas que alterna biomas de hierba, nieve e industriales. Generar corredores conectados lo bastante anchos para el chasis completo, con conexiones transitables entre los puntos de aparición de los jugadores, las puertas enemigas y las ubicaciones de los objetos. Añadir coberturas centrales de acero escalonadas para impedir una línea de tiro directa entre la aparición y el águila, sin bloquear el acceso entre calles. Permitir seleccionar el bioma inicial o la fase clásica y volver a generar un mapa aleatorio. Transferir a la fase siguiente la semilla de la partida, la puntuación, las vidas y las mejoras de los jugadores que sobrevivan.
Los ladrillos se pueden destruir; los bloques de acero detienen los proyectiles normales y los tanques; el agua bloquea los tanques, pero permite el paso de los proyectiles; la vegetación oculta los modelos enemigos; el hielo reduce la tracción. Mantener el entorno distante como elemento decorativo, separado de las colisiones del juego.
4. Inventario de recursos
Usar estas ranuras estables de modelos 3D, reemplazables de forma independiente. Dar prioridad al jugador, el enemigo, el tanque pesado y el águila, y después a los diez modelos de suministros. Apoyar cada recurso en su punto más bajo y normalizar su orientación, centro y escala. Reutilizar plantillas en lugar de cargar un modelo por enemigo.
- player: tanque de orugas amarillo mostaza, con una torreta fácil de distinguir y un cañón orientado hacia delante; se usa para los tanques de los jugadores, con un color de anillo independiente para el segundo jugador.
- enemy: tanque enemigo compacto de orugas, reutilizado con tintes distintos para las variantes básica, rápida y poderosa.
- heavy: tanque blindado visiblemente más pesado, separado de la malla del enemigo estándar, con cuatro segmentos de blindaje visibles encima.
- eagle: estatua metálica dorada de un águila sobre el pedestal del cuartel general.
- pickup-star: estrella dorada de mejora con cinco puntas.
- pickup-helmet: casco militar protector para proporcionar escudo temporal.
- pickup-clock: reloj fácil de distinguir para congelar el movimiento de los enemigos.
- pickup-shovel: pala para reforzar el cuartel general.
- pickup-life: tanque en miniatura que representa una vida adicional.
- pickup-grenade: granada de mano para destruir a los enemigos activos.
- pickup-ammo: caja de munición para disparo rápido.
- pickup-repair: caja de herramientas de reparación para restaurar el blindaje.
- pickup-magnet: imán de herradura para recoger objetos a distancia.
- pickup-boost: batería de energía para aumentar temporalmente la velocidad.
- environment-building: edificio de apartamentos en ruinas y desgastado, Tripo P2.0, presupuesto solicitado de 1.800 triángulos.
- environment-tree: pino irregular con tronco visible, Tripo P2.0, presupuesto solicitado de 1.100 triángulos.
- environment-bush: arbusto frondoso bajo y matas de hierba, Tripo P2.0, presupuesto solicitado de 650 triángulos.
Mostrar los suministros como modelos coleccionables giratorios y suspendidos, con anillos de colores y miniaturas de guía a juego. Renderizar los edificios, árboles y arbustos repetidos con instancias compartidas de geometría y materiales. Apoyar las raíces de los edificios y árboles en el suelo; enterrar ligeramente la base de los arbustos para integrarlos con el terreno. Añadir nieve a las superficies orientadas hacia arriba en las fases nevadas. Mantener como elementos procedurales las paredes de las casillas, el agua, el hielo, las mallas de los proyectiles, la interfaz, las luces, las partículas y los proxies de colisión. Animar el agua con ondas fluidas en el espacio del mundo, normales cambiantes y una pequeña deformación de la superficie, de forma continua entre casillas adyacentes. La versión de Tripo usa 17 modelos generados; la versión de comparación cambia tanto los tanques como el entorno por geometría creada mediante código, con las mismas reglas y colisiones. Ambas se renderizan con Three.js.
5. Jugabilidad y respuesta
Admitir juego en solitario y cooperativo local para dos jugadores con un fondo compartido de tres vidas. En solitario se usan WASD o las teclas de dirección, y Espacio/J para disparar. En cooperativo, el jugador uno usa WASD y Espacio/J; el jugador dos usa las teclas de dirección y Enter/teclado numérico 0. P/Escape pausa; C cambia la cámara; 1/2 selecciona el modo de modelo. En pantallas táctiles, permitir mantener pulsados simultáneamente el pad direccional y el botón de disparo, liberar la entrada al cancelar el puntero y mostrar las acciones de pausar, reanudar, pasar a la siguiente fase y reintentar sin desplazamiento de pantalla.
La velocidad del jugador es de 4,2 unidades por segundo, o 6,3 con el impulso. Los enemigos incluyen tipos básico, rápido, poderoso y pesado; los tanques pesados tienen cuatro puntos de impacto y sobreviven a los tres primeros impactos sin escudo. Destruir un tipo otorga 100, 200, 300 o 400 puntos; recoger cualquier suministro otorga 500 puntos. Completar una fase requiere derrotar a 20 enemigos. Se pierde cuando destruyen el águila o se agotan las vidas compartidas sin que quede ningún jugador con vida. Ofrecer reintento inmediato, avance explícito a la fase siguiente y un récord guardado localmente.
Implementar los diez suministros: la estrella mejora el nivel hasta tres veces (proyectiles más rápidos, dos proyectiles simultáneos y, por último, proyectiles que rompen el acero); el casco proporciona escudo durante 12 segundos; el reloj congela a los enemigos durante 9 segundos; la pala refuerza la base durante 16 segundos; el tanque miniatura añade una vida; la granada destruye a los enemigos activos; la munición proporciona 14 segundos de disparo rápido con hasta cuatro proyectiles activos; la reparación añade dos puntos de impacto, hasta un máximo de tres; el imán recoge los suministros visibles en un radio de cinco unidades durante 20 segundos; el impulso dura 12 segundos. Los modelos de suministros duran 25 segundos y aparecen en ubicaciones alcanzables, con un mazo barajado para variar los tipos. La recogida mediante el imán debe respetar los obstáculos sólidos.
Usar muestras de estilo NES recopiladas para la apertura de fase de 4,333 segundos, los disparos, la conducción y el ralentí, los impactos contra ladrillos y acero, las explosiones de enemigos y jugadores, la aparición y recogida de suministros, la vida adicional, los impactos contra el blindaje, el hielo, la pausa y el fin de la partida. El proyecto actual usa 15 pistas OGG de JustoSenka/BattleCity, commit 3a07004ba8e53baea74ff70d2ecc22b017eb9b20. Conservar su atribución y el aviso de licencia del repositorio; describirlas como audio recopilado de un remake, sin afirmar que son capturas de hardware bit a bit. Desbloquear el audio mediante un gesto del usuario, calibrar las ganancias de las muestras, ofrecer controles de volumen y silencio, y sincronizar los sonidos con los eventos. No añadir música de batalla continua que no esté relacionada.
6. Implementación técnica
Usar TypeScript, Three.js 0.180.0 y Vite 7, con un package.json y un archivo de bloqueo aislados. Mantener la simulación independiente del renderizado y ejecutarla a 120 Hz. Usar AABB sólidos para los chasis, movimiento separado por ejes, límites y separación entre tanques, además de barridos continuos hasta el contacto más cercano para los proyectiles, incluida la colisión por movimiento relativo entre proyectiles enfrentados. Los proyectiles se originan en el chasis y avanzan mediante barrido para evitar que atraviesen paredes a corta distancia. Añadir aceleración y desaceleración sobre hielo, y gravedad con rebotes amortiguados para los escombros. Se trata de física arcade del terreno, no de un simulador de suspensión.
Cargar recursos GLB del mismo origen mediante GLTFLoader. Mantener los proxies de colisión independientes de la geometría de los recursos. El runtime actual usa atributos cuantizados y texturas WebP (1024 px para vehículos y base; 512 px para suministros y entorno), sin simplificación de geometría ni decodificador WASM. Limitar la carga a cuatro workers, usar URL versionadas mediante hash y rangos de 256 KiB con un tiempo de espera de 20 segundos y hasta tres intentos por rango. Desbloquear el juego cuando los cuatro modelos principales y el audio estén listos; cargar los recursos de suministros y entorno en segundo plano y generar únicamente los tipos de suministros cuyos modelos estén listos. Cambiar el modo de modelo debe conservar el estado de la partida.
Ofrecer la interfaz en inglés, chino simplificado, japonés y coreano. Seleccionar un idioma predeterminado a partir del idioma del dispositivo, excepto zh-TW, zh-HK, zh-MO y zh-Hant, que deben usar inglés por defecto; conservar las elecciones de idioma explícitas. Admitir teclado, puntero de escritorio y multitáctil, y pausar al perder el foco. Mantener todos los recursos, créditos y scripts reproducibles dentro del proyecto fuente, y distribuir un directorio dist estático sin credenciales privadas ni dependencia de un backend en tiempo de ejecución.
7. Criterios de finalización
Entregar el código fuente editable, la procedencia de los recursos y los avisos de licencia, un flujo de desarrollo y compilación con npm y una vista previa estática jugable. Verificar la escena predeterminada de Tripo, la comparación de modelos, todos los biomas, un tanque pesado que reciba cuatro impactos, todos los efectos de los suministros, pausar/reanudar, derrota/reintento y avance de fase. Probar 1.000 mapas con semilla para comprobar la conectividad con anchura suficiente para el chasis y la seguridad de las apariciones, además de todos los mapas clásicos, el atravesamiento de paredes, los disparos diagonales, la separación entre tanques, el impulso sobre hielo, la entrada relativa a la cámara con varios ángulos de guiñada y los cambios de modo que conservan el estado. Validar la interfaz localizada y los controles táctiles con dos dedos en pantallas estrechas, sin afirmar que se han probado en dispositivos físicos cuando solo se haya usado emulación. Comparar los fotogramas reales de inicio y combate con las imágenes y el vídeo de referencia; confirmar que se cargan los 17 modelos y las 15 pistas de audio. Publicar mediante el flujo existente de CMS Web Page y verificar la página pública final, en lugar de considerar un registro guardado en el CMS como una implementación completada.
Cómo usar este prompt
01
Empieza con la herramienta adecuada
Abre tu asistente de programación o herramienta 3D preferida. Usa como punto de partida el modelo indicado en el ejemplo y consulta las instrucciones de los proyectos enlazados.
02
Elige una cosa que cambiar
Cambia el sujeto, el estilo artístico o el entorno. Define bien la cámara y la interacción. Crea primero una versión pequeña y mejora un detalle a la vez.
03
Dale recursos propios a la escena
Para un personaje u objeto personalizado, crea un modelo 3D a partir de una breve descripción o imagen de referencia e impórtalo en tu proyecto.
Las vistas previas pertenecen a sus respectivos creadores. Consulta la fuente original y la licencia del proyecto antes de reutilizar código o recursos.