Localizar por síntoma los fallos habituales del 3DGS en UE5
Esta página está organizada por el síntoma que se observa, y cada entrada indica las causas posibles, cómo confirmarlas y cómo resolverlas.
Para consultar los logs y usar las herramientas de depuración, consultar Logs y diagnóstico. Para preguntas de consulta (qué formatos son compatibles, la diferencia entre los dos pipelines), consultar Preguntas frecuentes.
Índice
| Categoría | Síntomas cubiertos |
|---|---|
| Hacer estas dos cosas primero | Recomendado para cualquier problema |
| Fallos de carga de datos | No pasa nada tras Load, invisible después de empaquetar, empaquetado de un proyecto Blueprint, posición GIS incorrecta, cierre inesperado con datos enormes |
| No se muestra nada o solo una parte | No se ve nada en absoluto, falta el contenido lejano, huecos en el borde, SceneCapture en blanco, ocluido por el agua |
| Problemas de calidad de imagen | Estelas, parpadeo, huecos, colores grisáceos, costuras, una línea que cruza la escena |
| Problemas de iluminación | Sobreexposición, sin sombreado de la forma, ProxyMesh no surte efecto, sombras cortadas, efectos ocultos |
| Los cambios de parámetros no surten efecto | Casilla desmarcada, carga completa, recorte y seccionado, armónicos esféricos, cuota de licencia |
| Problemas de rendimiento | Tasa de fotogramas baja, memoria de vídeo alta, tirones al cargar, oclusión incorrecta |
| Colisión y navegación | Los line traces no impactan, el personaje cae o atraviesa, el NavMesh no se genera |
| Cierres inesperados | Error de aserción ArraySliceIndex |
| Problemas de licencia | El Status no es una marca verde, varios errores de licencia |
| Compilación y empaquetado | Binarios que faltan, precompiled manifest que falta, fallo de empaquetado, Android |
| Sigue sin resolverse | Qué reunir antes de notificar un problema |
Hacer estas dos cosas primero
La mayoría de los problemas se pueden localizar con estos dos pasos, así que conviene recorrerlos ante cualquier síntoma.
- Abrir el Output Log y leer el log del plugin. Los fallos de carga, los errores de ruta y los problemas de licencia dejan ahí información clara. Consultar Consultar el log del plugin.
- Confirmar que los datos se cargaron correctamente. Seleccionar el Actor y comprobar si MetaInfo tiene contenido en el panel Details (Total Splats mayor que 0). Si está vacío, los datos no entraron, así que pasar directamente a Fallos de carga de datos.
Fallos de carga de datos
Síntoma: no aparece nada después de hacer clic en Load
Comprobar en orden:
| Causa posible | Cómo confirmarla | Solución |
|---|---|---|
| La ruta no existe o está mal escrita | El log muestra LCC file :<path> does not exist. | Verificar la ruta. Las rutas relativas se basan en Content |
| A los datos LCC1 les faltan archivos | El log muestra Load Meta.lcc error o meta.lcc file :<path> load error | data.bin e index.bin deben estar junto al archivo .lcc; si falta uno de ellos, falla |
| Se usa el Actor equivocado | Sin error explícito, pero la imagen queda en blanco | .lcc2 usa ALCC2Actor, .lcc usa ALCCActor, y los formatos de archivo único tienen cada uno su propio Actor. Consultar Preguntas frecuentes |
| El formato no es compatible | El log muestra LCC4Unreal do not support this file format! | Confirmar que la extensión está dentro del rango admitido, consultar Introducción |
El .ply no tiene formato 3DGS | El log indica que el PLY se rechazó | El plugin solo admite .ply con propiedades 3DGS; las nubes de puntos geométricas normales no se pueden cargar |
Síntoma: correcto en el editor, invisible después de empaquetar
Comprobar dos cosas en orden.
Una, si se usó una ruta absoluta. Las rutas absolutas solo funcionan en la máquina local y dejan de existir en otra. Cambiar a una ruta relativa, relativa al directorio Content del proyecto, por ejemplo Scenes/Tower/meta.lcc2.
Dos, si el directorio de datos está configurado en los ajustes de empaquetado. Los dos ajustes tienen finalidades distintas, así que conviene elegir según lo que se necesite:
| Ajuste | Finalidad |
|---|---|
Additional Non-Asset Directories To Copy | Los datos se copian en la salida del paquete como archivos normales |
Additional Non-Asset Directories To Package | Los datos se empaquetan dentro del archivo pak |
Usar el segundo para meter los datos LCC en el pak, y el primero cuando los datos solo tengan que distribuirse junto a la salida del paquete. Ambos se encuentran en ProjectSettings > Packaging.
Volver a empaquetar después de configurarlos y comprobar si los datos están realmente en la salida del paquete. Para la configuración detallada, consultar Inicio rápido.
Síntoma: el plugin no funciona después de empaquetar un proyecto Blueprint
Los proyectos solo de Blueprint son compatibles únicamente en el editor, no para el empaquetado. El empaquetado requiere un proyecto C++.
Síntoma: la posición geográfica es incorrecta, el modo GIS no surte efecto
Comprobar estos puntos:
- Si los datos contienen información RTK. Usar
GetMetaInfo().IsRTK()para comprobarlo; si el log muestraThis lcc does not have RTK information!, los datos no tienen información geográfica - Al activarlo desde código, llamar a
SetGeoPlacement(true), que recarga automáticamente para que el ajuste surta efecto. AsignarbEnableGeoPlacedirectamente no provoca ninguna recarga - Usar
GeoLocationOffsetpara el ajuste fino cuando la posición está desplazada
Para los pasos de configuración con Cesium, consultar Integración con plugins de terceros y del motor.
Síntoma: cierre inesperado al recorrer datos LCC2 muy grandes
En la v1.0.0 se trata de un defecto conocido de esa versión (un desbordamiento de un GPU Buffer). Actualizar a la v2.x o superior.
Síntoma: error relacionado con arrays al cargar un PLY grande
Un defecto conocido de la v3.0.0, corregido en la v3.3.0 y superiores; actualizar la versión.
Además, cuando un PLY no tiene armónicos esféricos, los archivos de más de 2 GB pueden fallar al cargarse, por lo que se recomienda convertirlos al formato LCC2.
No se muestra nada o solo una parte
Síntoma: el Actor está en la escena pero no se ve ningún contenido
| Causa posible | Cómo confirmarla | Solución |
|---|---|---|
| Los datos no se cargaron | Consultar la sección anterior | Resolver primero el problema de carga |
LoadMode está establecido en None | Comprobar el panel Details | Devolverlo a Both |
| La cámara está más allá de la distancia de renderizado | Acercarse y ver si aparece | Aumentar Max Distance |
| Un volumen de recorte eliminó el contenido | Desactivar temporalmente bEnabled en el volumen de recorte | Comprobar el modo de recorte, ya que Inside y Outside hacen lo contrario, consultar EClipType |
| Un plano de sección eliminó el contenido | Desactivar temporalmente el plano de sección | Comprobar Mode y la orientación del plano, consultar ESectionType |
GlobalAlpha es 0 | Comprobar el panel Details | Devolverlo a 1.0 |
Todo está en los datos de entorno pero está establecido OnlyMain | Cambiar LoadMode y comparar | Elegir según los datos reales, consultar ELoadMode |
Síntoma: falta el contenido lejano y solo aparece al acercarse
Es el resultado normal del LOD y del límite de distancia, no un fallo. Para mostrar también el contenido lejano:
- Aumentar Max Distance, a costa de un rendimiento menor
- Reducir Level Factor para que se use una precisión mayor a la misma distancia
- La niebla puede ayudar a disimular el límite de la distancia
Síntoma: huecos en el borde de la pantalla al girar la vista rápidamente
La precarga de nodos no puede seguir el cambio de vista. El pipeline LCC puede activar Add Extra Preload Nodes, que añade nodos de precarga adicionales a costa de más nodos que renderizar.
Síntoma: SceneCapture o el minimapa aparecen en blanco
Activar primero SceneCaptureComponent Support en la configuración del proyecto. Está desactivado por defecto y tiene un ligero coste de rendimiento.
Para establecer la estrategia de renderizado de un SceneCapture por separado desde código, consultar SetSceneCaptureRenderMode; este grupo de interfaces solo funciona en el pipeline LCC.
Síntoma: el 3DGS queda ocluido por la superficie del agua
Lo provoca el tratamiento de la profundidad del material de single layer water. Activar SingleLayerWater Support, consultar Compatibilidad con single layer water.
Problemas de calidad de imagen
Síntoma: estelas y arrastre al moverse
Lo provoca el método de anti-aliasing. TSR y TAA se basan en fotogramas anteriores para la acumulación temporal, así que un 3DGS en movimiento deja fácilmente el fotograma previo detrás.
Probarlos en orden y encontrar el equilibrio entre calidad y estelas:
None → FXAA → MSAA → TAA → TSR
Cuando la escena solo contiene 3DGS, se puede establecer None directamente, lo que elimina las estelas y ahorra el coste del anti-aliasing. Para el valor predeterminado de cada pipeline y dónde establecerlo, consultar Parámetros de rendimiento.
Síntoma: la imagen parpadea y los bordes tiemblan
Probar estas opciones por orden de beneficio:
- Comprobar el método de anti-aliasing. Es la causa más habitual, y se recomienda TSR para el pipeline LCC2, consultar Parámetros de rendimiento.
- Pipeline LCC: reducir Sort Factor para ordenar con mayor frecuencia. Cuando la frecuencia de ordenación es demasiado baja, el orden de delante a atrás de la translucidez solo se actualiza cada varios fotogramas, lo que se manifiesta como un ligero temblor.
- Comprobar Small Splat Threshold; un valor demasiado grande hace que el fondo se vea granulado.
- Para las estructuras finas que parpadean mientras la cámara se acerca y se aleja, probar a activar Mip Filter, que aplica un filtro de paso bajo con compensación de opacidad y es más estable a distintas escalas.
.ply/.spz/.soglo tienen desactivado por defecto.
Síntoma: la imagen tiene huecos y se ve dispersa
SplatScale está establecido en un valor demasiado bajo. El valor predeterminado de 1.0 es el límite superior; reducirlo baja el sobredibujado y aumenta la tasa de fotogramas, pero unos quads más pequeños dejan huecos a la vista. Volver a subirlo algo.
Síntoma: los colores se ven grises y planos
Tratarlo con los parámetros de color, consultar Ajustes visuales. El enfoque habitual consiste en aumentar ligeramente Contrast, o aclarar las zonas oscuras con Gamma. Para la interfaz de código, consultar Ajuste de color.
Síntoma: costuras evidentes en la imagen (pipeline LCC)
La versión 5.0 y superiores del archivo LCC trata las costuras automáticamente. Para los datos de versiones anteriores, activar Corte de costuras manualmente, que corresponde a la propiedad bEnableSeamCutting.
Síntoma: aparece una línea que cruza la escena
Comprobar la escala del Actor. La familia de Actors LCC (ALCCActor, ALCC2Actor, ASogActor, ASpzActor, APlyActor) solo admite el escalado uniforme.
No usar un escalado no uniforme como este:
- Con valores negativos, por ejemplo
(-1, 1, 1) - Con ejes desiguales, por ejemplo
(2, 1, 3)
Los tres ejes deben mantenerse iguales, por ejemplo (1, 1, 1) o (2, 2, 2). El escalado no uniforme provoca anomalías de renderizado que se manifiestan como una línea en la imagen.
Problemas de iluminación
Síntoma: sobreexposición después de cambiar a Lit
Los colores de los datos capturados ya incorporan la iluminación del lugar de captura, y las luces de la escena añaden otra capa por encima.
- Pipeline LCC2: reducir el brillo original con
LightingScale, consultar Normales e iluminación - Comprobar si la intensidad de la iluminación de la escena es demasiado alta
Síntoma: sin sombreado de la forma en el modo Lit, la imagen se ve plana
Es el comportamiento esperado. Los datos 3DGS no tienen normales geométricas, y Fixed, ViewFacing y Hemispherical construyen todos las normales por aproximación, así que solo pueden producir cambios de brillo generales y ninguno de ellos puede producir un sombreado que siga la forma. Para la definición de cada modo, consultar ELCC2NormalGenerationMode.
Solo ProxyMesh puede producir un sombreado real de la forma. Requiere crear y colocar una malla proxy y requiere una licencia. Consultar Proxy Mesh y Normales e iluminación.
La diferencia entre los tres modos aproximados está en cómo cambia el brillo general con la iluminación y la vista, no en si existe sombreado de la forma:
Fixed: toda la zona comparte una única normal fija, completamente estable mientras la cámara se mueveViewFacing: las normales siguen a la cámara, así que el brillo general cambia al girar la vistaHemispherical: las normales se proyectan desde la posición en pantalla sobre un hemisferio fijo, así que el brillo general transiciona con mayor suavidad que en los otros dos mientras una luz direccional rota
Síntoma: el modo ProxyMesh está establecido pero no surte efecto
| Punto que comprobar | Cómo confirmarlo |
|---|---|
| Si NormalMode es ProxyMesh | Comprobar el panel Details |
| Si la licencia es válida | Comprobar Status en el panel del plugin; una marca verde significa que la licencia está correcta. Desde código, si GetEffectiveNormalGenerationMode() devuelve Fixed, se ha degradado |
| Si la malla proxy tiene un StaticMesh | El log muestra una advertencia has a null StaticMesh |
| Si la malla proxy se solapa con el 3DGS en el espacio | El emparejamiento se decide por la posición, así que sin solapamiento no hay efecto |
Consultar Proxy Mesh.
Síntoma: el sombreado aparece en el lugar equivocado
La malla proxy se desvía demasiado de la superficie real del 3DGS. Mejorar la coincidencia de la malla proxy, o cambiar a un modo de normales aproximado, que no tiene sombreado de la forma pero es más estable.
Síntoma: las sombras de ProxyMesh solo aparecen de cerca y desaparecen a lo lejos
Las sombras se cortan por distancia. Es un problema del motor, no un defecto del plugin.
Solución: seleccionar el Actor ProxyMesh y desactivar y volver a activar Far Shadow para restaurar las sombras completas. La propiedad se encuentra en la categoría Lighting de StaticMeshComponent.
Síntoma: sombras enormes y anómalas en el modo Lit
Los modos de normales aproximados producen anomalías con ciertos ángulos de iluminación. Probar en orden:
- Cambiar NormalMode para encontrar qué modo se comporta correctamente
- Ajustar el ángulo de la luz direccional
- Cambiar al modo ProxyMesh con una malla proxy bien ajustada, que da el mejor resultado
Síntoma: los colores cambiaron después de activar las sombras
Es el comportamiento esperado. En cuanto el 3DGS recibe iluminación externa, sus colores cambian con la fuente de luz, así que hay que ajustar el color y la intensidad de la luz direccional.
Síntoma: el brillo no se puede ajustar, toda la escena está oscura
Cuando el proyecto usa un plugin de composición como Composure, desactivar las opciones relacionadas con el posprocesado en el Component y controlar la exposición mediante un Post Process Volume en su lugar.
Para los ajustes relacionados con la exposición, consultar Ajustes visuales.
Síntoma: los efectos de Niagara no se ven sobre el 3DGS
El pipeline LCC2 genera profundidad, así que la oclusión de los efectos es correcta y este problema normalmente no se produce.
Solo el pipeline LCC (datos .lcc) puede sufrirlo, porque no genera profundidad y el orden de delante a atrás de la translucidez se decide por prioridad de ordenación. La solución consiste en aumentar Translucent Sort Priority en el Niagara System para que se renderice por encima del 3DGS.
Síntoma: contenido desordenado alrededor del exterior de la escena
Son los datos de entorno. Cambiar LoadMode de Both a OnlyMain para renderizar solo la parte principal.
Síntoma: cambiar el modo de iluminación no hace nada
SetLightMode no surte efecto en el modo de nube de puntos: omite la asignación y muestra una advertencia. Volver primero al modo 3DGS.
Síntoma: sin efecto de iluminación tras cambiar al modo Lit
La pipeline de renderizado forward (Forward Shading) carece de GBuffer, por lo que la reiluminación no está disponible. Establecer LightMode en Lit no producirá ningún efecto.
Cambiar a la pipeline de renderizado diferido (Deferred Shading) para que el modo Lit funcione correctamente. Desmarcar Project Settings > Rendering > Forward Shading. Tener en cuenta que la plantilla VR de UE activa Forward Shading por defecto y es necesario desactivarlo manualmente.
Los cambios de parámetros no surten efecto
Síntoma: se cambiaron los valores de Performance pero nada cambió
Cada parámetro tiene una casilla a su izquierda y, mientras está desmarcada, el plugin usa su valor predeterminado interno y el valor introducido no tiene efecto. Es la trampa más habitual de todas.
Para el valor predeterminado interno de cada parámetro, consultar Parámetros de rendimiento.
Síntoma: cambiar los parámetros de carga completa no hace nada
Use Full Load y Full Load Splat Number se evalúan en el momento de la carga, así que hay que recargar los datos después de cambiarlos.
Para la diferencia entre los dos métodos de carga, consultar Renderizado.
Síntoma: cambiar las propiedades de un volumen de recorte o de un plano de sección en tiempo de ejecución no hace nada
bEnabled, Mode y VolumeType no tienen Setter, así que hay que llamar a Refresh() en ese Actor después de asignarlos en tiempo de ejecución. Lo mismo se aplica al cambio del transform (posición, rotación) en tiempo de ejecución.
Cambiar las propiedades en el panel Details del editor actualiza automáticamente y no requiere ninguna llamada manual.
Consultar ALCCClippingVolume.
Síntoma: los armónicos esféricos están activados pero la imagen no cambió
- Los datos pueden ser del tipo
Portable, que no contiene armónicos esféricos. Confirmarlo con CanSetShcoef(); para las definiciones de tipo, consultar EFileType - SetUseShcoef se ignora sin avisar en el modo de nube de puntos, así que hay que volver primero al 3DGS
- LCC2 puede desactivar los armónicos esféricos completamente con SetUseShcoef
Síntoma: se añadieron muchos volúmenes de recorte pero solo algunos surten efecto
La edición gratuita limita cada tipo a 50. El log lo indica de forma explícita: Unlicensed: enabled clipping volumes limited to 50 .... Para las licencias, consultar Ediciones y licencias.
Problemas de rendimiento
Para el flujo de trabajo completo de ajuste ante una tasa de fotogramas baja, consultar Guía de rendimiento; esta sección solo enumera comprobaciones rápidas.
Síntoma: tasa de fotogramas baja
Confirmar primero si el cuello de botella es el 3DGS. Usar stat unit para leer Game / Draw / GPU, y después stat XGrids para leer el coste de LCC en sí. Cuando la parte de LCC es baja, el problema está en otro sitio de la escena (iluminación, posprocesado, lógica de Blueprint) y ajustar los parámetros de LCC no aporta ninguna mejora.
Una vez confirmado que el 3DGS es la causa, ajustar por orden de beneficio:
- Aumentar Level Factor (el beneficio más notable)
- Reducir Max Distance
- Reducir Max Splat Num
- Aumentar Start Level para omitir el Level más fino
- Desactivar los armónicos esféricos
- Cambiar al modo de nube de puntos si es necesario
Síntoma: el uso de memoria de vídeo es demasiado alto
- Aumentar Level Factor
- Reducir Max Splat Num
- Ajustar LCC2 GPU Memory Budget en el pipeline LCC2
- Ajustar el umbral de liberación Max GPU Usage Percetage For Free
Para las reglas de asignación de memoria de vídeo y el mecanismo de liberación automática, consultar Renderizado. Los formatos de archivo único (.sog / .spz / .ply) se cargan por completo de una vez, así que su uso de memoria de vídeo es constante y no cambia con la vista, consultar Límites de carga de los formatos de archivo único.
Síntoma: tirones al cargar
- Activar la colisión por primera vez tiene un coste de horneado puntual, así que conviene activarla durante la etapa de carga y no en medio de la interacción del jugador
- Reducir Max Load Collision Distance para cargar solo el rango necesario
- Ajustar la configuración de hilos, consultar Parámetros de rendimiento
Síntoma: oclusión incorrecta cuando varios 3DGS se interpenetran
- Pipeline LCC: activar la ordenación de translucidez entre varios Actors
- Pipeline LCC2: ajustar el umbral de profundidad para cambiar dónde se escribe la profundidad
Colisión y navegación
Síntoma: los line traces no impactan en el 3DGS
| Punto que comprobar | Acción |
|---|---|
| Si los datos contienen colisión | Los formatos de archivo único no contienen datos de colisión, consultar Requisitos previos |
| Si la colisión está activada | Marcar bEnableCollision, consultar Activación |
| Si la colisión está cargada en ese lugar | Usar ShowCollision() para ver la estructura alámbrica, consultar Visualización de la colisión |
| Si la distancia de la prueba supera el rango de carga de colisión | Aumentar Max Load Collision Distance |
Si el log muestra There is neither collision.bin nor collision.lci in the folder, no hay ningún archivo de colisión en el directorio de datos.
LCC1 tiene otro conjunto de interfaces de prueba de rayos contra las posiciones de la nube de puntos, pero no están suficientemente probadas, así que se recomienda usar colisión más las pruebas de rayos del motor, consultar Prueba de rayos de ULCCComponent.
Síntoma: el personaje cae justo al empezar
La colisión se carga dinámicamente por bloques, así que los datos de colisión pueden no estar construidos todavía cuando comienza el juego, y el personaje cae cuando no hay colisión bajo sus pies.
Cómo tratarlo:
- Colocar PlayerStart un poco por encima del suelo
- O retrasar el movimiento del personaje unos segundos
- Activar la colisión durante la etapa de carga y no después de que el jugador comience a interactuar
Síntoma: el personaje atraviesa o cae después de alejarse cierta distancia
La colisión se transmite por distancia, así que las zonas más allá del rango de carga no tienen cuerpos de colisión. Aumentar Max Load Collision Distance(m) para cubrir el rango de actividad del personaje.
La colisión también puede no seguir el ritmo cuando el personaje se mueve demasiado rápido, lo que se mitiga igualmente aumentando la distancia de carga.
Síntoma: el NavMesh no se genera en absoluto
| Punto que comprobar | Acción |
|---|---|
| Los datos no contienen colisión | Confirmar que se usa .lcc o .lcc2; los formatos de archivo único no tienen datos de colisión |
| La colisión no está activada | Marcar bEnableCollision y confirmar CanEverAffectNavigation = true |
| La colisión todavía no está cargada | Seleccionar player collision o visibility collision en el modo de visualización y confirmar que han aparecido cuerpos de colisión en la zona de destino |
| El rango de carga de colisión es insuficiente | Aumentar Max Load Collision Distance(m) para cubrir toda la zona de actividad de la IA |
| Falta el NavMeshBoundsVolume o no cubre la zona | Colocarlo y escalarlo para cubrir la zona de destino |
| La navegación no se reconstruyó | Ejecutar Build → Build Paths y guardar el nivel |
Para el flujo de trabajo completo, consultar Compatibilidad con Navigation System.
Cierres inesperados
Síntoma: cierre inesperado tras un error de aserción ArraySliceIndex
El error tiene este aspecto:
Assertion failed: ArraySliceIndex >= 0
La causa es que la versión actual no admite el formato Adaptive GBuffer de Substrate.
Solución:
- Abrir
ProjectSettings > Renderingy buscar Substrate GBuffer Format (Project). - Cambiar el valor a BlendableGBuffer. Es el valor predeterminado del motor.
- Reiniciar el motor.
AdaptiveGBuffer es un formato incompatible conocido, y BlendableGBuffer funciona correctamente.
Problemas de licencia
Comprobar primero Status en el panel del plugin: una marca verde significa que la licencia está correcta y las funciones de la edición Pro están disponibles. Cualquier cosa distinta de una marca verde significa que la licencia no surtió efecto, así que hay que leer el log para confirmar el motivo.
La información de licencia del log es bastante explícita, así que conviene actuar según lo que indica:
| Mensaje de log | Significado y acción |
|---|---|
ProjectID is invalid; generate one in Project Settings | El proyecto no tiene Project ID. Generar uno en Project Settings > Project > Description |
Failed to decode AppKey, please check. | El contenido de la AppKey está incompleto o se copió mal, copiarla de nuevo |
Invalid AppKey, please check. | El formato de la AppKey es incorrecto, confirmar que es la cadena completa de la plataforma para desarrolladores |
Authorization has expired, please check. | La licencia ha caducado, generarla de nuevo en la plataforma para desarrolladores |
AppKey has expired. Please generate a new one. | Igual que el anterior |
HTTP request failed / HTTP error! Status: <code> | Un problema de red o el servidor de licencias no es accesible, comprobar la red y el firewall |
Signature Verification Failed | La verificación de la firma ha fallado, contactar con el soporte técnico |
Para el flujo de trabajo de licencias, consultar Ediciones y licencias.
Compilación y empaquetado
Síntoma: faltan binarios o falla la compilación del módulo
Cuando aparece cualquiera de los errores siguientes, regenerar y recompilar el proyecto siguiendo los pasos de esta sección:
Missing UnrealGame binary. You may have to build the UE project with your IDE.
Alternatively, build using UnrealBuildTool with the commandline:
UnrealGame <Platform> <Configuration>
*** could not be compiled. Try rebuilding from source manually
La causa es que, después de añadir el plugin a un proyecto C++, el motor detecta los módulos nuevos pero falta la salida de compilación correspondiente. Tratarlo así:
- Cerrar el proyecto.
- Localizar el archivo
*.uprojectdel proyecto. - Hacer clic derecho en
*.uprojecty seleccionar Generate Visual Studio project files. - Esperar a que el proyecto de VS termine de regenerarse.
- Hacer doble clic en
*.slnpara abrir Visual Studio. - Hacer clic derecho en el proyecto en el Solution Explorer y seleccionar Set as Startup Project para asegurarse de que es el proyecto de inicio.
- Confirmar que la configuración es Development Editor y Win64.
- Hacer clic en Debug > Start Without Debugging para iniciar el proyecto.
- Una vez que la compilación pasa, el proyecto se abre con normalidad. Después basta con hacer doble clic en
*.uprojecty no hace falta repetir este flujo cada vez.
Cuando sigue fallando después de los pasos anteriores, eliminar primero el directorio Intermediate del proyecto y volver a ejecutar desde el paso 3.
Para los pasos de instalación del plugin, consultar Inicio rápido.
Síntoma: el empaquetado falla
Comprobar primero estos tres puntos:
- Full Rebuild en
ProjectSettings > Packagingdebe permanecer desactivado, y no ejecutar Rebuild en VS. El plugin no admite ninguna de las dos cosas, consultar Inicio rápido - Confirmar que se usa un proyecto C++, ya que los proyectos Blueprint no se pueden empaquetar
- Confirmar que la versión del motor está dentro del rango admitido (UE 5.4 ~ 5.8)
Para errores concretos, consultar las dos secciones siguientes.
Síntoma: falta el precompiled manifest durante el empaquetado
El error tiene este aspecto:
Missing precompiled manifest for 'LCC4UnrealRuntime',
'\Shipping\LCC4UnrealRuntime\LCC4UnrealRuntime.precompiled'.
This module was most likely not flagged for being included in a precompiled build
- set 'PrecompileForTargets = PrecompileTargetsType.Any;' in LCC4UnrealRuntime.build.cs
to override. If part of a plugin, also check if its 'Type' is correct.
Por qué ocurre: los archivos que menciona el error se distribuyen con el plugin y se encuentran en su directorio Intermediate. Ejecutar Full Rebuild en ProjectSettings > Packaging, o Rebuild en VS, hace que el motor limpie el directorio Intermediate y elimine esas salidas precompiladas con él.
LCC4Unreal es un plugin binario sin código fuente, así que las salidas eliminadas no se pueden recompilar y solo se pueden restaurar desde el paquete del plugin. Por eso conviene evitar ambas operaciones.
Cómo resolverlo:
- Confirmar que Full Rebuild en
ProjectSettings > Packagingestá desactivado, y no ejecutar Rebuild en VS. - Copiar el contenido del directorio del plugin
lcc4unreal/Intermediate/Build/Win64/UnrealGameen<directorio del proyecto>/Intermediate/Build/Win64/<nombre del proyecto>. - Copiar el contenido del directorio del plugin
lcc4unreal/Intermediate/Build/Win64/x64en<directorio del proyecto>/Intermediate/Build/Win64/x64. - Reiniciar el motor y empaquetar de nuevo.
Nota: el nombre del directorio de destino del paso 2 es el nombre del proyecto, no
UnrealGame. Para un proyecto llamadoMyProject, la ruta de destino esMyProject/Intermediate/Build/Win64/MyProject.
Si el error apunta a otros archivos: los dos directorios anteriores cubren los casos habituales. Cuando el error menciona otro archivo, tratarlo igual: buscar ese archivo en el directorio Intermediate del plugin en la misma ruta relativa y copiarlo a la ubicación correspondiente del proyecto.
Si el directorio Intermediate del plugin también se limpió: no queda nada de dónde copiar, así que hay que descargar de nuevo el paquete del plugin y extraerlo sobre los archivos existentes para restaurarlos.
Síntoma: la compilación falla en un motor personalizado
Los paquetes del plugin publicados solo funcionan con los motores publicados por Epic. Las ramas personalizadas por proveedores, los motores comerciales derivados de UE y los motores con el código fuente modificado localmente requieren todos una compilación personalizada, consultar Versiones de motor personalizadas.
Síntoma: errores al empaquetar para Android
La versión actual no admite el empaquetado directo para la plataforma Android. Es una limitación de compatibilidad de plataforma y no se puede resolver cambiando la configuración de empaquetado.
Para usarlo en un dispositivo de VR, ejecutarlo en el PC y transmitirlo por streaming, consultar Inicio rápido - Quest3.
Sigue sin resolverse
Reunir la información siguiente y contactar con nosotros, consultar Contacto:
- Versión del plugin y versión del motor
- Formato de los datos y tamaño aproximado
- El archivo de log completo de la ejecución en la que se produjo el problema, sin filtrar y no solo las líneas de error
- Pasos de reproducción
- Modelo de tarjeta gráfica y versión del controlador
Para la ubicación del archivo de log y otros detalles, consultar Logs y diagnóstico.