현재 프로젝트에서 플레이어의 하드웨어 사양을 자동으로 분석하여 적절한 렌더 품질을 추천해주는 시스템을 구현하고자 합니다.
현재 구현 상황:
- 옵션 UI에서 해상도 설정 기능을 제공하고 있습니다
- 현재는 블루프린트에서 해상도 관련 설정만 구현되어 있습니다
- 설정 항목: 해상도, 렌더 품질 (엔진 퀄리티 세팅)
구현하고자 하는 기능:
- 클라이언트의 하드웨어 사양(GPU, CPU, RAM, VRAM) 감지
- 감지된 하드웨어 사양을 기반으로 적절한 렌더 품질 자동 추천
- 게임 최초 실행 시 또는 설정 메뉴 진입 시 자동으로 실행
구체적인 질문사항:
- 언리얼 엔진에서 하드웨어 사양(GPU 모델, VRAM, CPU 코어 수, RAM 등)을 조회할 수 있는 내장 함수나 블루프린트 노드가 제공되나요?
- 자동 그래픽 품질 감지 기능을 구현하는 권장 방법이 있을까요?
- 게임 실행시에 자동으로 성능 테스트를 수행하고 적절한 품질 설정을 제안하는 내장 기능이 있나요?
추가 정보:
- 플랫폼: PC (Windows)
- 엔진 버전: UE 5.6
- 목표: 사용자가 수동으로 여러 설정을 테스트하지 않고, 최초 실행 시 자동으로 적절한 그래픽 옵션이 설정되어 원활한 사용자 경험을 제공하고자 합니다.
관련하여 가이드나 코드 예제를 제공해주시면 큰 도움이 될 것 같습니다.
감사합니다.
[Image Removed]
[Image Removed]
안녕하세요.
[하드웨어 정보 조회]
CPU/GPU
- FPlatformMisc 클래스를 통해 CPU, GPU 브랜드, 코어 수 등을 조회할 수 있습니다
(Windows의 경우 FWindowsPlatformMisc로 구현)
메모리 정보
- FPlatformMemory 클래스의 GetStats() 함수로 메모리 크기 및 사용량 정보를 얻을 수 있습니다
(Windows의 경우 FWindowsPlatformMemory로 구현)
VRAM 정보
- RHI의 RHIGetTextureMemoryStats() 함수 사용
(FTextureMemoryStats 구조체를 통해 VRAM 정보를 받아올 수 있습니다.)
이러한 하드웨어 사양을 조회하는 함수의 경우 보통 블루프린트에 노출되어있지 않습니다.
필요시 별도의 블루프린트용 라이브러리를 구현하여 사용하시면 좋을 것 같습니다.
[자동 그래픽 품질 감지]
엔진에 내장된 자동 그래픽 품질 감지 기능을 UGameUserSettings.h 에서 확인하실 수 있습니다.
/** Runs the hardware benchmark and populates ScalabilityQuality as well as the last benchmark results config members, but does not apply the settings it determines. Designed to be called in conjunction with ApplyHardwareBenchmarkResults */
UFUNCTION(BlueprintCallable, Category=Settings)
ENGINE_API virtual void RunHardwareBenchmark(int32 WorkScale = 10, float CPUMultiplier = 1.0f, float GPUMultiplier = 1.0f);
/** Applies the settings stored in ScalabilityQuality and saves settings */
UFUNCTION(BlueprintCallable, Category=Settings)
ENGINE_API virtual void ApplyHardwareBenchmarkResults();
[Image Removed]위 함수는 블루프린트에 노출되어 있으며 벤치마크 결과를 기반으로 품질 옵션이 설정되게 할 수 있습니다.
반복 테스트로 품질 옵션이 적절히 설정되는지 확인하고 파라미터를 조정할 것을 권장드립니다.
마지막으로 벤치마크 실행과 적용은 게임 실행시에 자동으로 동작하지 않으며,
진행하고 계시는 프로젝트에 적합하게 구현해야 할 것으로 보입니다.
감사합니다.