Roblox: recrea lo que hay en un video de referencia
El estándar del usuario es "exactamente como en el video". Rechaza efectos o mecánicas inventadas, animaciones rígidas y adornos que no estén en el clip. Todo aquí te mantiene anclado a la referencia y verificando contra ella, no contra tu memoria.
Herramientas: Roblox Studio MCP (execute_luau, search_asset, insert_asset, upload_image, screen_capture, start_stop_play, user_keyboard_input, user_mouse_input, get_console_output, multi_edit), Blender MCP (execute_blender_code — extracción de fotogramas y creación de VFX), PowerShell/Bash.
0. Reglas básicas
- Reproduce solo lo que muestra el video. ¿Ambiguo? Mira más fotogramas; ¿aún no claro? Pregunta — no llenes los vacíos con tus propias ideas.
- Texturas/imágenes: no dibujes las tuyas. Usa primero la Tienda del Creador. Si no hay nada parecido, crea el activo en Blender a partir de la referencia (§4) e informa al usuario que hiciste eso.
- El activador por defecto es una pulsación de tecla (pregunta cuál si no se especifica).
- Sin adornos no solicitados (giros, volteretas de dibujos animados). El usuario los detestó explícitamente.
- Copia mecánicas, sensación y efectos — no marcas, nombres, arte de UI o activos robados de otro juego, y no clones un juego completo existente. Si te piden hacer un juego idéntico a otro, recrea las mecánicas/efectos específicos que se muestran y dilo.
1. Extrae y estudia los fotogramas
- Renderiza fotogramas a través de Blender (ffmpeg suele estar ausente): envía
scripts/extract_frames.pyaexecute_blender_codeconVIDEO/OUTconfigurados. Usa una escena desechable y deja el .blend del usuario intacto. En Windows manténOUTcorto (MAX_PATH). scripts/contact_sheet.ps1 -Dir <OUT>→ hojas de 4×4 etiquetadas. Lee todas las hojas, luego abre fotogramas individuales en cada corte, impacto, cambio de UI y entrada. Para mecánicas rápidas usaSTEP = 1alrededor del momento que estás midiendo.- Decide qué estás construyendo: VFX/cinemática, sistema de juego, o ambos (la mayoría de los movimientos de combate son ambos: un sistema que decide qué sucede + VFX que lo muestra).
- Escribe la especificación antes de construir — es contra lo que verificarás después:
- Hoja de tiempos (VFX): una línea por tiempo con tiempo (fotograma/fps), cámara, cada efecto (forma, color, textura, tamaño, vida útil, cantidad), pose de cada personaje, post-procesado.
- Especificación del sistema (mecánicas): entradas, estados y transiciones, tiempos (preparación/activo/recuperación/enfriamiento en fotogramas), distancias y velocidades (medidas contra el cuerpo R15 de ~5 studs), números mostrados en pantalla, UI y sus animaciones, lo que ven otros jugadores. Consulta
references/systems.md.
2. Inspecciona el lugar
search_game_tree + volcados rápidos de Lighting, StarterPlayer, ReplicatedStorage, ServerScriptService. Reutiliza los frameworks existentes del usuario (módulos de combate, remotos, almacenes de datos, kits de UI) en lugar de construir otros paralelos; coincide con su estilo de código.
3. Activos de la Tienda del Creador
search_asset(ámbitocreator_store,priceFilter: free) con 3–5 redacciones por elemento. Compara candidatos visualmente:scripts/asset_sheet.ps1construye una hoja de miniaturas etiquetada para leer junto a los fotogramas de referencia.- Un ID de activo de Decal no es el ID de imagen: resuélvelo con
game:GetObjects("rbxassetid://"..id)[1].Texture(Editar modelo de datos) antes de usarlo en partículas/GUIs. - Los modelos gratuitos suelen contener puertas traseras. Después de insertar un Model, enumera cada
LuaSourceContainer; conserva solo lo que necesitas y destruye el resto. - Avatares reales como maniquíes/enemigos:
Players:CreateHumanoidModelFromUserId(Players:GetUserIdFromNameAsync(name))funciona desde Editar. Ancla el HRP, coloca los pies en el suelo, elimina scripts excepto Animate.
4. Cuándo construir VFX en Blender
Por defecto, usa efectos nativos de Roblox (partículas, beams, trails, partes, GUIs) — baratos, ajustables, renderizados en vivo. Ve a Blender cuando la referencia muestre algo que los nativos no puedan aproximar bien:
| La referencia muestra | Salida de Blender | A Roblox mediante |
|---|---|---|
| Crescentes 3D gruesos, espirales retorcidas, ondas de choque en cúpula, púas, fracturas de suelo con profundidad | Malla con UVs (+ textura de degradado/ruido) | EditableMesh construido a partir de datos exportados, o Importador 3D |
| Humo dibujado a mano/anime, fuego, explosiones, ráfagas de energía, fotogramas de impacto | Hoja de sprites de flipbook renderizada (PNG transparente) | upload_image → ParticleEmitter flipbook / ImageLabel |
| Texturas complejas (estelas de ruido, rampas de degradado, mapas de remolino) | PNG renderizado | upload_image → Beam/Trail/Texture |
Lee references/blender_vfx.md para el pipeline (configuración de escena, renderizado de flipbook + empaquetado en cuadrícula, exportación de malla a Luau, subida localhost, constructor EditableMesh, animación de mallas en la línea de tiempo).
5. Construye
- VFX / cinemáticas: un ModuleScript de cliente impulsado por una línea de tiempo (eventos, tomas de cámara, actualizadores por fotograma, retardos de línea de tiempo, zonas warp, pausa) con una pila de limpieza, más cuerpos con fotogramas clave para el lanzador y el objetivo. Copia el esqueleto en
references/engine.md. - Sistemas: autoritarios del servidor — el cliente envía la intención a través de un RemoteEvent, el servidor valida (enfriamiento, estado, rango, límite de velocidad) y aplica el resultado, los clientes renderizan la retroalimentación. Diseño de carpetas y recetas por sistema en
references/systems.md. - Ambos: el servidor decide golpes/daño/estado y dispara a los clientes; cada cliente ejecuta el módulo de VFX. Mantén los tiempos en una configuración compartida para que las mecánicas y los visuales permanezcan sincronizados.
6. Animación que se siente viva
Las poses estáticas se leen como "panes". Lo que funciona:
- Pistas de fotogramas clave, no poses — docenas de claves por personaje; cada clave = pose + anulaciones + easing hacia ella.
- Cada ataque: anticipación (Quad.In) → golpe (Exponential.Out, 40–70 ms) → exceso (Quad) → asentamiento (Sine.InOut). Cada golpe en un objetivo: clave de retroceso + impulso de sacudida decayente.
- Vida aditiva cada fotograma: respiración, deriva de ruido lenta en todas las articulaciones, sacudida de impacto, temblor.
- Dale a los objetivos una actuación (sobresalto, retrocesos, tambaleo, colapso en el suelo: rodillas, manos, costado). Sin volteretas a menos que el clip las tenga.
- Coincide los latidos de la historia con los cortes del clip; pregunta sobre el ritmo y usa zonas
TimeWarppara ralentizar secciones.
7. Verifica contra la referencia
- Prueba de juego. Líneas de tiempo: avanza con
PauseAty captura cada tiempo junto al fotograma de referencia correspondiente. Sistemas: impulsa entradas conuser_keyboard_input/user_mouse_input, lee el estado de los modelos de datosClientyServer, y mide tiempos (os.clock) y distancias contra la especificación — números, no impresiones. - Cámara de depuración en
Enum.RenderPriority.Last.Value; limpia partículas/desactiva beams y GUIs mientras está en pausa para ver los cuerpos. execute_luause ejecuta en su propia VM:requireda una instancia de módulo separada — observa el estado del juego (atributos, anclaje, CameraType), no los campos del módulo.- Termina con una entrada real, luego confirma la limpieza/restauración y un
get_console_outputlimpio.
8. Puntos críticos
Lee references/gotchas.md antes de construir — beams invisibles de 1 segmento, destellos de halo oscuro, mancha de DepthOfField, Expo vs Exponential, transformaciones de articulaciones que solo se renderizan cuando se escriben en PreSimulation, rigs con AnimationConstraint, escalado de tamaño de cuerpo + sujeción al suelo, profundidad del agua del terreno, superposiciones reflejadas en el agua, dificultades de red, y más.
9. Informe
Qué hace ahora cada tiempo/mecánica (con marca de tiempo o por estado), qué activos se usaron (IDs de tienda, activos hechos en Blender y sus IDs subidos), cualquier cosa que no se pudo igualar y por qué, dónde viven los ajustables (módulos de configuración, Cutscene.Poses/Tracks, TimeWarp), y un recordatorio de guardar el lugar (Ctrl+S).