#android #opengl-es #unreal-engine4
Вопрос:
Я могу запустить PUBG MOBILE (и ОБЛЕГЧЕННУЮ версию тоже) на своем устройстве sm-j700m samsung galaxy j7 2015.
Pubg использует Unreal Engine 4!
Установлена здесь версия редактора UE4: 4.26.2
В настройках проекта включена опция «Поддержка OpenGL ES3.1».
Некоторый код движка по этой ссылке показывает, в чем именно заключалась проблема при проверке():
https://forums.unrealengine.com/t/4-25-apk-runs-fine-4-26-1-apk-crash/158698/4
static FORCEINLINE void ColorMaskIndexed(GLuint Index, GLboolean Red, GLboolean Green, GLboolean Blue, GLboolean Alpha)
{
if (bSupportsDrawBuffersBlend)
{
// ES 3.2 or extension
glColorMaskiEXT(Index, Red, Green, Blue, Alpha);
}
else
{
check(Index == 0);
glColorMask(Red, Green, Blue, Alpha);
}
}
Вот соответствующие строки журнала сбоев (найдено в /Phone/UE4Game/…/Сохранено/Журналы) :
[2021.08.13-23.50.57:859][ 0]LogAndroid: Default profile: Android_Default
[2021.08.13-23.50.57:859][ 0]LogAndroid: GpuFamily: Mali-T720
[2021.08.13-23.50.57:859][ 0]LogAndroid: GlVersion: OpenGL ES 3.1 v1.r7p0-03rel0.b8759509ece0e6dda5325cb53763bcf0
[2021.08.13-23.50.57:859][ 0]LogAndroid: VulkanAvailable: false
[2021.08.13-23.50.57:859][ 0]LogAndroid: VulkanVersion: 0.0.0
[2021.08.13-23.50.57:859][ 0]LogAndroid: AndroidVersion: 6.0.1
[2021.08.13-23.50.57:859][ 0]LogAndroid: DeviceMake: samsung
[2021.08.13-23.50.57:859][ 0]LogAndroid: DeviceModel: SM-J700M
[2021.08.13-23.50.57:859][ 0]LogAndroid: DeviceBuildNumber: MMB29K.J700MUBU2BRA1
[2021.08.13-23.50.57:860][ 0]LogAndroid: UsingHoudini: false
[2021.08.13-23.50.57:860][ 0]LogAndroid: Hardware: SAMSUNG Exynos7580
[2021.08.13-23.50.57:860][ 0]LogAndroid: Chipset: unknown
...
[2021.08.13-23.50.58:063][ 0]LogAndroid: VulkanRHI will NOT be used:
[2021.08.13-23.50.58:063][ 0]LogAndroid: ** Vulkan support is not available (Driver, RHI or shaders are missing, or disabled by cmdline, see above logging for details)
[2021.08.13-23.50.58:063][ 0]LogAndroid: ** Vulkan is disabled via console variable.
[2021.08.13-23.50.58:063][ 0]LogAndroid: OpenGL ES will be used.
[2021.08.13-23.50.58:063][ 0]LogAndroid: Vulkan SM5 is available but disabled for this device.
[2021.08.13-23.50.58:064][ 0]LogRHI: App is packaged for OpenGL ES 3.1 and an ES 3.1-capable device was detected.
[2021.08.13-23.50.58:069][ 0]LogRHI: Extension eglPresentationTimeANDROID Present
[2021.08.13-23.50.58:069][ 0]LogRHI: Extension eglGetNextFrameIdANDROID NOT Available
[2021.08.13-23.50.58:069][ 0]LogRHI: Extension eglGetCompositorTimingANDROID NOT Available
[2021.08.13-23.50.58:069][ 0]LogRHI: Extension eglGetFrameTimestampsANDROID NOT Available
[2021.08.13-23.50.58:069][ 0]LogRHI: Extension eglQueryTimestampSupportedANDROID NOT Available
[2021.08.13-23.50.58:069][ 0]LogRHI: Extension eglGetCompositorTimingSupportedANDROID NOT Available
[2021.08.13-23.50.58:069][ 0]LogRHI: Extension eglGetFrameTimestampsSupportedANDROID NOT Available
[2021.08.13-23.50.58:072][ 0]LogRHI: Initializing OpenGL RHI
[2021.08.13-23.50.58:072][ 0]LogRHI: GL_VENDOR: ARM
[2021.08.13-23.50.58:072][ 0]LogRHI: GL_RENDERER: Mali-T720
[2021.08.13-23.50.58:072][ 0]LogRHI: GL_VERSION: OpenGL ES 3.1 v1.r7p0-03rel0.b8759509ece0e6dda5325cb53763bcf0
[2021.08.13-23.50.58:072][ 0]LogRHI: GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.10
...
[2021.08.13-23.51.00:619][ 0]LogInit: First time updating LLM stats...
[2021.08.13-23.51.00:910][ 0]LogAndroid: Error: === Critical error: ===
[2021.08.13-23.51.00:910][ 0]LogAndroid: Error:
[2021.08.13-23.51.00:910][ 0]LogAndroid: Error: Assertion failed: Index == 0 [File:/UnrealEngine/Engine/Source/Runtime/OpenGLDrv/Public/OpenGLES.h] [Line: 439]
[2021.08.13-23.51.00:910][ 0]LogAndroid: Error:
[2021.08.13-23.51.00:910][ 0]LogAndroid: Error: [Callstack] 0x00000000E0C73608 libUE4.so(0x000000000C122608)!FOpenGLDynamicRHI::RHIClearMRT(bool, int, FLinearColor const*, bool, float, bool, unsigned int) []
[2021.08.13-23.51.00:910][ 0]LogAndroid: Error: [Callstack] 0x00000000E0C73354 libUE4.so(0x000000000C122354)!FOpenGLDynamicRHI::SetRenderTargetsAndClear(FRHISetRenderTargetsInfo constamp;) []
[2021.08.13-23.51.00:910][ 0]LogAndroid: Error: [Callstack] 0x00000000E0CA3214 libUE4.so(0x000000000C152214)!FOpenGLDynamicRHI::RHIBeginRenderPass(FRHIRenderPassInfo constamp;, char16_t const*) []
[2021.08.13-23.51.00:910][ 0]LogAndroid: Error: [Callstack] 0x00000000DCDF3A10 libUE4.so(0x00000000082A2A10)!FRHICommand<FRHICommandBeginRenderPass, FRHICommandBeginRenderPassString1127>::ExecuteAndDestruct(FRHICommandListBaseamp;, FRHICommandListDebugContextamp;) []
[2021.08.13-23.51.00:911][ 0]LogAndroid: Error: [Callstack] 0x00000000DCD178BC libUE4.so(0x00000000081C68BC)!FRHICommandListExecutor::ExecuteInner_DoExecute(FRHICommandListBaseamp;) []
[2021.08.13-23.51.00:911][ 0]LogAndroid: Error: [Callstack] 0x00000000DCD74FB8 libUE4.so(0x0000000008223FB8)!FExecuteRHIThreadTask::DoTask(ENamedThreads::Type, TRefCountPtr<FGraphEvent> constamp;) []
[2021.08.13-23.51.00:911][ 0]LogAndroid: Error: [Callstack] 0x00000000DCD746BC libUE4.so(0x00000000082236BC)!TGraphTask<FExecuteRHIThreadTask>::ExecuteTask(TArray<FBaseGraphTask*, TSizedDefaultAllocator<32> >amp;, ENamedThreads::Type) []
[2021.08.13-23.51.00:911][ 0]LogAndroid: Error: [Callstack] 0x00000000DB5AAF8C libUE4.so(0x0000000006A59F8C)!FNamedTaskThread::ProcessTasksNamedThread(int, bool) []
[2021.08.13-23.51.00:911][ 0]LogAndroid: Error: [Callstack] 0x00000000DB5A9508 libUE4.so(0x0000000006A58508)!FNamedTaskThread::ProcessTasksUntilQuit(int) []
[2021.08.13-23.51.00:911][ 0]LogAndroid: Error: [Callstack] 0x00000000DCE01FB4 libUE4.so(0x00000000082B0FB4)!FRHIThread::Run() []
[2021.08.13-23.51.00:911][ 0]LogAndroid: Error: [Callstack] 0x00000000DB6A1970 libUE4.so(0x0000000006B50970)!FRunnableThreadPThread::Run() []
[2021.08.13-23.51.00:911][ 0]LogAndroid: Error: [Callstack] 0x00000000DB5A4928 libUE4.so(0x0000000006A53928)!FRunnableThreadPThread::_ThreadProc(void*) []
[2021.08.13-23.51.00:911][ 0]LogAndroid: Error: [Callstack] 0x00000000F74A7C8C libc.so(0x000000000003FC8C)![Unknown]() []
[2021.08.13-23.51.00:911][ 0]LogAndroid: Error: [Callstack] 0x00000000F74823AC libc.so(0x000000000001A3AC)![Unknown]() []
есть ли в журнале что-нибудь еще, что могло бы быть полезно для решения этой проблемы?
Итак, «LogRHI: приложение упаковано для OpenGL ES 3.1, и было обнаружено устройство с поддержкой ES 3.1». значит, это должно работать правильно?
Как и предлагалось (https://forums.unrealengine.com/t/4-25-apk-runs-fine-4-26-1-apk-crash/158698/7), мне придется перекомпилировать редактор (который занял 12 часов на моем 4 ядре), удалив это утверждение, или есть менее травматичный вариант?
Как вы думаете, они удалили это утверждение для pubg mobile?
Я видел, что есть много утверждений, в которых он может выйти из строя только в OpenGLES.h, поэтому я бы предпочел не исправлять движок, если только это не единственный вариант, потому что перекомпиляция занимает слишком много времени.
Комментарии:
1. Я прокомментировал строку check (), но она не перекомпилировала связанные файлы с помощью
make
. Когда мне наконец удастся его перекомпилировать, я отредактирую эту операцию, чтобы сказать, что время компиляции не является проблемой. Проблема заключалась в том, что я переместил папку проекта, и она хотела перекомпилировать все, чтобы обновить этот путь во многих файлах .cpp… Поэтому я просто вернул его на начальный путь компиляции.2. Я удалил все файлы OpenGLDrv .o и .so, перекомпилировал, но оба libUE4Editor-OpenGLDrv.so новое и старое идентичны! все еще не удается перекомпилировать на основе новых изменений .h.