기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon GameLift 스트림 문제 해결
Amazon GameLift Streams 서비스에 요청할 때 액세스가 거부됨
Amazon GameLift Streams APIs하거나 콘솔에서 리소스를 사용할 때 AccessDenied 예외가 발생하면 AWS Identity and Access Management (IAM) 역할에 Amazon GameLift Streams에 대한 권한이 충분하지 않을 수 있습니다. 다음을 확인하세요.
-
IAM 역할에 명시적 "모두 거부" 정책이 있는 경우
"gameliftstreams:*"NotAction 요소에를 추가하여 Amazon GameLift Streams를 해당 정책에 대한 예외로 명시적으로 나열해야 합니다. 예제:{ "Sid": "DenyAllExceptListedIfNoMFA", "Effect": "Deny", "NotAction": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:GetUser", "iam:ListMFADevices", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice", "sts:GetSessionToken", "gameliftstreams:*" // Add this ], "Resource": "*", "Condition": { "BoolIfExists": {"aws:MultiFactorAuthPresent": "false"} } } -
자세한 내용은 보안 Amazon GameLift Streams의 Identity and Access Management 장의 섹션을 참조하고 IAM 사용 설명서의 액세스 거부 오류 메시지 문제 해결을 참조하세요.
애플리케이션 문제
이 섹션에서는 애플리케이션이 실행되지 않거나 Amazon GameLift Streams에서 다르게 나타나는 문제의 잠재적 원인을 식별합니다.
예비 검사
-
다른 시스템에서 애플리케이션을 실행하여 올바르게 패키징되었는지 확인합니다. 이렇게 하면 애플리케이션 콘텐츠에 하드코딩된 경로, 누락된 자산, 라이브러리 또는 다른 디바이스에서 작동하지 않을 수 있는 바이너리가 포함되지 않습니다.
Proton 문제
-
애플리케이션이 Proton과 호환되는지 확인합니다. Amazon GameLift Streams 서버가 없는 로컬 환경에서 애플리케이션을 테스트하여 Proton과 호환되는지 확인합니다. 지침은 Proton for Amazon GameLift Streams와의 호환성 테스트 및 문제 해결 섹션을 참조하세요.
화면 해상도로 인한 애플리케이션 문제
1920x1080이 아닌 전체 화면 해상도를 사용하려고 하면 애플리케이션이 동결되거나 충돌하거나 잘못 렌더링될 수 있습니다. 경계 없는 전체 화면 창을 사용하여 애플리케이션을 실행하고 해상도 변경을 시도하지 않는 것이 좋습니다.
스트림 세션 시작 시 애플리케이션이 종료됨
스트림 세션이 시작될 때 애플리케이션이 즉시 종료되는 경우 다음에서 잠재적 원인과 해결 방법을 검토하세요.
-
런타임을 확인합니다. Amazon GameLift Streams 애플리케이션 구성에서 실행 파일 시작 경로에 지정한 파일이 실행 파일 또는 스크립트이고 선택한 런타임 환경에 맞는지 확인합니다. Windows 애플리케이션의 파일 형식은 ".exe", ".bat" 또는 ".cmd"여야 하며 Windows 또는 Proton 런타임을 대상으로 해야 합니다. 네이티브 Linux 애플리케이션은 Ubuntu 22.04 LTS 런타임을 대상으로 하는 실행 파일이어야 합니다.
-
필요한 DLLs 확인합니다. Windows 애플리케이션에 필수 DLLs. 예를 들어 애플리케이션이 디버그 빌드인 경우 Microsoft C 및 C++(MSVC) 런타임 라이브러리의 디버그 버전이 필요합니다. 이 문제를 해결하려면 빌드와 DLLs side-by-side 패키징하는 것이 좋습니다. 지침은 Microsoft에서 디버그 실행 파일을 실행하기 위한 테스트 머신 준비를
참조하세요.
일반적으로 Amazon GameLift Streams를 사용하기 전에 먼저 클린 머신에서 빌드를 테스트하는 것이 좋습니다. Amazon EC2 인스턴스 테스트에 대한 지침은 섹션을 참조하세요원격 시스템 설정.
Unreal Engine 애플리케이션이 충돌하거나 추가 종속성이 필요함
Unreal Engine 애플리케이션이 시작되지 않거나 충돌하거나 Microsoft C 및 C++(MSVC) 런타임과 같은 추가 종속성을 설치해야 하는 경우 다음을 시도하세요.
-
올바른 실행 파일을 사용합니다. 애플리케이션이 Amazon GameLift Streams에서 올바르게 작동하려면 애플리케이션 경로를
Binaries/Win64/(또는 유사한) 하위 폴더에 있는 전체 실행 파일로 설정합니다. Unreal Engine은 폴더 루트에 있는 작은 부트스트랩 실행 파일과Binaries/Win64/하위 폴더에 있는 플랫폼 대상 실행 파일이라는 두 가지 실행 파일을 생성합니다. 사전 조건을 검증하려는 루트의 부트스트랩 실행 파일이 올바르고 Amazon GameLift Streams에서 애플리케이션 시작을 방해하는 오탐을 생성할 수 있습니다. 플랫폼 대상 실행 파일이 누락된 경우 애플리케이션이 올바르게 빌드되지 않았을 수 있습니다. 예를 들어 샘플 Unreal 애플리케이션의 다음 폴더 구조를 참조하세요.BuildApp |-> MyUnrealApp.exe |-> MyUnrealApp |-> Binaries |-> Win64 |-> MyUnrealApp.exe -
Unreal Engine Asserts를 끕니다.
check,verify및ensure매크로를 비활성화합니다. 애플리케이션이 충돌 덤프를 생성하지 못하게 할 수 있습니다. 자세한 내용은 Unreal Engine 설명서의 어설트를 참조하세요. -
빌드
USE_CHECKS_IN_SHIPPING=0에서를 정의하여check및verify매크로를 비활성화합니다. -
-handleensurepercent=0명령줄 인수를 사용하여ensure매크로를 비활성화합니다.
-
성능 문제
이 섹션에서는 Amazon GameLift Streams에서 실행할 때 게임 성능 문제의 잠재적 원인을 식별하고 서비스에서 스트림을 최적화하기 위한 제안을 제공합니다.
Amazon GameLift Streams에서 스트리밍할 때 게임 성능이 저하됩니다.
자체 시스템에서 게임이 잘 실행되지만 Amazon GameLift Streams에서 스트리밍할 때 성능 문제가 발생하는 경우 다음을 고려하세요.
-
시스템에 Amazon GameLift Streams보다 더 강력한 하드웨어가 있을 수 있습니다. Amazon GameLift Streams가 사용하는 하드웨어와 비슷한 성능의 시스템에서 애플리케이션을 테스트해야 합니다.
gen4n: NVIDIA RTX 2060 GPU와 유사
gen5n: NVIDIA RTX 3080 GPU와 유사
gen6n: NVIDIA RTX 4060 GPU와 유사
이렇게 하면 애플리케이션의 렌더링 설정이 GPU와 호환되고 성능이 사용자의 기대치를 충족하는지 확인할 수 있습니다.
-
문제는 네트워크 연결 또는 Amazon GameLift Streams의 설정 때문일 수 있습니다. 스트림 연결 문제 섹션의 문제 해결 팁을 시도해 보세요.
로컬에서 실행할 때도 게임 속도가 느리면 성능을 최적화해야 합니다. 최상의 최적화 방법은 사용 중인 특정 엔진 또는 프레임워크에 따라 달라집니다.
-
Unreal Engine 게임은 단원을 참조하십시오Unreal Engine 성능 프로파일링.
Windows 애플리케이션에서 로드 시간이 느리거나 문제가 발생함
게임의 로드 시간이 길거나 동작이 끊기는 경우 다음과 같은 조치를 취하는 것이 좋습니다.
-
콘텐츠 및 셰이더 성능 최적화에 대한 엔진 공급업체의 지침을 사용하여 애플리케이션이 로드 성능에 맞게 패키징되고 최적화되었는지 확인합니다.
-
애플리케이션이 스트림 그룹의 기본 애플리케이션으로 설정되어 있는지 확인합니다.
-
애플리케이션 패키징의 일부로 셰이더를 캐싱하여 서비스에서 애플리케이션 최초 시작을 최적화합니다.
셰이더 캐싱을 활성화하는 방법에는 두 가지가 있습니다.
-
드라이버 기반 캐싱 -이 접근 방식은 런타임 환경 GPU 및 드라이버 버전에 따라 다릅니다. 이 옵션은 모든 애플리케이션에 적용할 수 있으므로 기본 권장 접근 방식입니다. 이 접근 방식의 단계는 모든 GPU/드라이버 조합에 대해 복제해야 합니다.
-
엔진 기반 캐싱 -이 접근 방식은 가능한 경우 게임 엔진을 통한 셰이더 캐싱을 활성화합니다. 개발자가 사전 베이킹된 파이프라인 상태 객체(PSO) 캐시를 생성해야 하는 부담이 있습니다. 또한 엔진이 동일한 GPU 하드웨어의 여러 드라이버에 대한 캐시 지원을 처리할 수 있다고 가정합니다.
주어진 엔진에 대해 PSO 캐싱이 구현되는 방식을 깊이 이해할 필요가 없으므로 드라이버 기반 캐싱을 먼저 구현하는 것이 좋습니다.
이러한 구현을 통해 셰이더 파일을 애플리케이션과 함께 내보내고 패키징할 수 있으므로 새 스트림이 시작될 때마다 파일을 생성할 필요가 없습니다.
Windows 런타임 애플리케이션에 대한 드라이버 기반 캐싱 수정 사항을 구현하려면
-
기본 애플리케이션 스트리밍을 시작하고 광범위하게 재생하여 애플리케이션용 셰이더를 생성합니다.
중요
환경의 모든 영역 또는 레벨을 방문하여 가능한 한 많은 셰이더를 생성해야 합니다.
-
스트림을 닫기 전에 활성 스트림 세션에서 내보내기 기능을 활성화합니다. 자세한 내용은 스트림 세션 파일 내보내기을 참조하세요.
-
이전 단계에서 지정한 Amazon S3 버킷에서 스트림 세션 내보내기 .zip 파일을 다운로드합니다. 세션 페이지의 Amazon GameLift Streams 콘솔에서 다운로드 링크를 찾을 수 있습니다.
-
스트림 세션 내보내기 내에서 셰이더 폴더를 찾습니다. 일반적으로이 위치인에 저장됩니다
AppData\Local\NVIDIA\DXCache. 생성된 셰이더 파일(*.nvph)을 애플리케이션의 Amazon S3 버킷에 업로드합니다. -
런타임 시 셰이더
.bat파일을 NVIDIA 캐싱 폴더에 복사할 파일을 생성합니다. 이 폴더는 일반적으로에 있습니다C:\Users\Administrator\AppData\Local\NVIDIA\DXCache. Amazon S3 애플리케이션 버킷에.bat파일을 업로드합니다. -
.bat파일을 실행 가능한 경로로 사용하여 새 Amazon GameLift Streams 애플리케이션을 생성합니다.
애플리케이션이 스트리밍을 시작하면 .bat 파일은 애플리케이션을 시작하기 전에 미리 생성된 셰이더를 셰이더 캐시에 복사하여 스트림 로드 성능을 개선합니다.
참고
애플리케이션을 업데이트하거나 Amazon GameLift Streams 애플리케이션을 새 스트림 그룹에 연결할 때마다이 단계를 반복해야 할 수 있습니다. 최신 스트림 그룹에는 서비스의 업데이트된 GPU 드라이버가 포함될 수 있습니다.
다음 예제 .bat 파일은 셰이더 파일이 Amazon S3 버킷 접두사에 저장되어 있다고 가정합니다Shaders\. 다른 폴더 구조를 사용할 수 있습니다.
@echo off set CURRENT_PATH=%cd% set DXCACHE_DIR=%CURRENT_PATH%\Shadersset NVIDIA_DXCACHE_DIR=C:\Users\Administrator\AppData\Local\NVIDIA\DXCache if not exist "%NVIDIA_DXCACHE_DIR%" ( mkdir "%NVIDIA_DXCACHE_DIR%" ) xcopy /s /f "%DXCACHE_DIR%" "%NVIDIA_DXCACHE_DIR%" start %CURRENT_PATH%\app.exe
Proton 런타임 애플리케이션에 대한 드라이버 기반 캐싱 수정 사항을 구현하려면
-
다음 환경 변수 재정의로 기본 애플리케이션 스트리밍을 시작합니다.
"__GL_SHADER_DISK_CACHE_PATH" : "/home/unpriv/games" -
애플리케이션을 광범위하게 재생하여 셰이더를 생성합니다.
중요
환경의 모든 영역 또는 레벨을 방문하여 가능한 한 많은 셰이더를 생성해야 합니다.
-
스트림을 닫기 전에 활성 스트림 세션에서 내보내기 기능을 활성화합니다. 자세한 내용은 스트림 세션 파일 내보내기을 참조하세요.
-
이전 단계에서 지정한 Amazon S3 버킷에서 스트림 세션 내보내기 .zip 파일을 다운로드합니다. 세션 페이지의 Amazon GameLift Streams 콘솔에서 다운로드 링크를 찾을 수 있습니다.
-
스트림 세션 내보내기 내에서 셰이더 폴더 및 파일을 찾습니다.
-
application\GLCache폴더 -
애플리케이션에서 DX11을 사용하는 경우:
application\파일path-to-exe\exe-name.dxvk-cache -
애플리케이션에서 DX12를 사용하는 경우:
application\파일path-to-exe\vkd3d-proton.cache.write
-
-
생성된 셰이더 파일을 애플리케이션의 Amazon S3 버킷에 업로드합니다.
-
GLCache폴더를 애플리케이션의 루트 디렉터리에 복사합니다. -
사용 가능한 경우
.dxvk-cache또는vkd3d-proton.cache.write캐시 파일을 애플리케이션 실행 파일이 포함된 폴더에 복사합니다.
-
-
동일한 Proton 구성으로 새 Amazon GameLift Streams 애플리케이션을 생성합니다.
-
동일한 환경 변수 재정의로 애플리케이션을 실행합니다.
"__GL_SHADER_DISK_CACHE_PATH" : "/home/unpriv/games"
애플리케이션이 스트리밍을 시작하면 미리 생성된 셰이더를 사용하여 스트림 로드 성능을 개선합니다.
참고
애플리케이션을 업데이트하거나 Amazon GameLift Streams 애플리케이션을 새 스트림 그룹에 연결할 때마다이 단계를 반복해야 할 수 있습니다. 최신 스트림 그룹에는 서비스의 업데이트된 GPU 드라이버가 포함될 수 있습니다.
Unreal Engine을 사용하여 애플리케이션에 대한 엔진 기반 캐싱 수정을 구현하려면
이 접근 방식에서는 Unreal Engine 기능을 사용하여 Amazon GameLift Streams 애플리케이션에 대한 파이프라인 상태 객체(PSO) 캐시를 생성할 수 있습니다. PSO 캐시를 사용하면 런타임 컴파일 시간이 줄어 사전 컴파일된 그래픽 파이프라인 상태를 제공할 수 있으므로 로드 및 렌더링 중에 히치를 줄일 수 있습니다. 이를 위해서는 Unreal Engine에 대한 고급 지식이 필요하므로 여기에서 모든 엔진별 세부 정보를 다루지는 않습니다. 추가 지침은 번들 PSO 캐시 생성
-
PSO 로깅이 활성화된 애플리케이션의 셰이더를 생성합니다.
-
PSO 지원 애플리케이션과 함께 패키지 빌드를 사용하여 새 Amazon GameLift Streams 애플리케이션을 생성합니다.
-
PSO 로깅 앱에서
-logPSO명령으로 스트림을 시작합니다. Amazon GameLift Streams 콘솔의 스트림 구성 테스트 페이지에서 명령줄 인수 옵션을 사용할 수 있습니다.중요
환경의 모든 영역 또는 수준을 방문하여 가능한 한 많은 셰이더를 생성해야 합니다.
-
스트림을 닫기 전에 활성 스트림 세션에서 내보내기 기능을 활성화합니다. 자세한 내용은 스트림 세션 파일 내보내기을 참조하세요.
-
메뉴에서 또는 Unreal 종료 명령을 사용하여 애플리케이션을 종료합니다. 스트림을 직접 닫으면 Unreal 셰이더 파이프라인 파일이 생성되지 않습니다.
-
내보내기 단계에서 지정한 Amazon S3 버킷에서 스트림 세션 내보내기 .zip 파일을 다운로드합니다. 세션 페이지의 Amazon GameLift Streams 콘솔에서 다운로드 링크를 찾을 수 있습니다.
-
-
Unreal 셰이더 파이프라인 파일을 Amazon GameLift Streams 애플리케이션에 패키징합니다.
-
의 스트림 세션 내보내기에서 기록된 PSO 파일(
rec.pipelinecache)을 찾습니다Saved/CollectedPSOs. Unreal 명령을 사용하여 PSO 파일의 압축을 풉니다. -
압축 해제에서 생성된 출력으로 새 Unreal 빌드를 패키징합니다. Unreal 지침의 PSO 캐시 변환
및 애플리케이션에 PSO 캐시 포함 섹션을 따릅니다. 중요
"PSO 캐시 변환" 섹션에서 Unreal 명령을 실행할 때는 동일한 드라이버의 버전 입력 파일을 사용해야 합니다. 예: DX12의 경우 SM6 파일만 입력으로 사용합니다. 그렇지 않으면 새 애플리케이션을 패키징할 때 오류가 발생합니다.
-
PSO 파일을 사용하여 새 패키지 빌드를 위한 새 Amazon GameLift Streams 애플리케이션을 생성합니다.
-
스트림을 시작하고 테스트할 때 PSO 캐시가 로드되고 있는지 확인합니다. 게임 로그에서 다음 줄을 확인합니다.
Opened FPipelineCacheFile: ../../...
-
참고
애플리케이션을 업데이트하거나 Amazon GameLift Streams 애플리케이션을 새 스트림 그룹에 연결할 때마다이 단계를 반복해야 할 수 있습니다. 최신 스트림 그룹에는 서비스의 업데이트된 GPU 드라이버가 포함될 수 있습니다.
스트림 연결 및 네트워크 성능 문제
Amazon GameLift Streams 백엔드 서비스를 설정할 때 다음을 확인하세요.
-
최종 사용자에게 AWS 리전 가장 가까운를 선택합니다. 클라이언트에서 스트림을 호스팅하는 리전까지의 지연 시간이 길면 스트림 품질에 영향을 미칠 수 있습니다. 스트리밍할 수 있는 위치 AWS 리전 Amazon GameLift Streams에서 지원하는 및 스트리밍 위치 목록은 섹션을 참조하세요. 리전에서 AWS 콘솔 엔드포인트를 ping하여 대략적인 지연 시간 측정값을 얻을 수 있습니다.
-
스트림 그룹에 새 스트림에 대한 용량이 있는지 확인합니다.
-
최종 사용자가 웹 클라이언트 시간이 초과되기 전에 연결할 수 있도록
ConnectionTimeoutSeconds가 충분히 설정되어 있는지 확인합니다.
최종 사용자에게 다음을 확인하도록 권고합니다.
-
방화벽이 UDP 포트 범위 33435-33465에 대한 액세스를 허용하여 Amazon GameLift Streams에서 스트리밍을 허용하는지 확인합니다. Amazon GameLift Streams가 이러한 포트에 연결할 수 없는 경우 검은색 또는 회색 화면과 같은 스트리밍 문제가 발생할 수 있습니다.
-
인터넷 연결이 1080p 스트림에 대해 10Mbps 이상의 연결 속도를 유지할 수 있는지 확인합니다. Amazon GameLift Streams에서 재생하는 동안 네트워크 문제를 감지하면 인터넷 속도가 변동하고 최소 10Mbps를 일관되게 얻지 못할 수 있습니다. 인터넷 속도 테스트를 실행하고 문제 해결 단계를 계속 진행합니다.
-
가능하면 유선 네트워크를 사용합니다. Wi-Fi를 사용할 때는 더 강력한 신호 강도를 위해 디바이스를 라우터 가까이로 이동합니다.
-
2.4GHz 및 5GHz 대역 모두에서 Wi-Fi 라우터를 사용하는 경우 다른 대역에 연결해 보세요. 라우터를 다른 밴드로 전환하는 방법을 잘 모르는 경우 Wi-Fi 라우터의 제조업체 또는 공급자의 지원 페이지를 방문하세요. 고객 서비스에 문의할 수도 있습니다.
-
동일한 네트워크(특히 홈 Wi-Fi)에 있는 다른 사용자가 비디오 스트리밍, 다운로드, 온라인 게임 또는 백업과 같은 고대역폭 애플리케이션을 실행하고 있는지 확인합니다.
-
디바이스에서 대역폭을 차지하는 다른 애플리케이션을 닫습니다.
-
스트리밍 중에는 VPN 또는 프록시를 사용하지 마십시오. 지연 시간이 길어지고 게임 플레이에 영향을 미칠 수 있습니다.
-
iPad 또는 iPhone에서 재생할 때 셀룰러 네트워크 대신 Wi-Fi를 사용하고 있는지 확인합니다. 셀룰러 네트워크를 사용하면 연결 문제가 발생할 수 있습니다.
-
MacOS 사용자는 위치 서비스를 비활성화해야 합니다. 그러면 Wi-Fi가 때때로 일시 중지되어 스트리밍 환경이 저하됩니다.
스트림 입력 문제
이 섹션에서는 스트림 세션의 사용자 입력과 관련된 문제의 잠재적 원인과 해결 방법을 식별합니다.
일반 입력 문제 해결
-
테스트하여 문제가 브라우저 지정인지 확인합니다. 전반적으로 최상의 최종 사용자 경험과 특히 게임 컨트롤러와의 호환성을 극대화하려면 Google Chrome, Microsoft Edge 또는 사용자 지정 Chromium 기반 데스크톱 애플리케이션을 사용하는 것이 좋습니다.
-
클라이언트에서 전송하고 애플리케이션에서 수신한 입력 이벤트를 로깅하여 프런트 엔드 코드에 입력 불일치가 있는 위치를 식별합니다.
-
알려진 문제 및 제한 사항을 포함하여 지원되는 브라우저 및 입력 디바이스에 대한 지원되는 브라우저 및 입력 추가 정보를 확인해야 합니다.
게임패드 및 마이크 입력은 네이티브 Linux 애플리케이션에서 작동하지 않습니다.
게임패드 및 마이크 입력은 네이티브 Linux 애플리케이션에서 지원되지 않습니다. 알려진 문제 및 제한 사항을 포함하여 지원되는 입력 디바이스에 지원되는 브라우저 및 입력 대한 자세한 내용은 섹션을 참조하세요.
MacOS 클라이언트에서 키 입력이 멈춘 것처럼 보임
MacOS 클라이언트에서 명령 한정자 키와 다른 키를 동시에 누르면 키가 갑자기 멈춰 키 이벤트를 반복하는 것처럼 보일 수 있습니다. 예를 들어 명령 키도 누르면 화살표 키가 멈출 수 있습니다. 게임에서 화살표 키를 사용하여 카메라를 회전하면 카메라가 무한히 회전합니다.
-
문제: MacOS의 명령 키는 Microsoft Windows의 Windows 키에 매핑되는 Meta 키 이벤트에 매핑됩니다. 이 문제는 명령과 다른 키를 동시에 누를 때 MacOS 브라우저에 영향을 미치는 버그
입니다. 여기서 Meta 키는 해제될 때 재설정되지만 브라우저가 화살표 키에 대한 키업 이벤트를 캡처하지 않았기 때문에 화살표 키는 재설정되지 않으므로 웹 SDK 클라이언트가 서버에 키업 이벤트를 보내지 않고 스트리밍 애플리케이션은 여전히 키가 눌러지고 있다고 생각할 것입니다. -
해결 방법: 명령 키를 사용하지 않는 경우 웹 SDK의
InputConfiguration인터페이스에 있는 웹 SDK 키보드 필터 메커니즘(keyboardFilter)을 사용하여 필터링할 수 있습니다.
OS UI 요소를 열 때 입력 고정
데스크톱 및 모바일 브라우저 클라이언트에서는 특정 OS 수준 UI 요소에 우선 순위가 있는 경우 키 릴리스와 같은 입력 이벤트가 처리되지 않습니다. 이렇게 하면 키를 해제했더라도 키가 여전히 정지되어 있는 것처럼 캐릭터가 이동하거나 작업이 반복될 수 있습니다.
-
문제: 특정 OS 수준 UI 요소(예: 데스크톱의 브라우저 메뉴 모음 또는 iOS의 Control Center 및 Notification Center)를 열면 브라우저가 블러 또는 포커스 이벤트를 트리거하지 않고 입력 이벤트 실행을 중지합니다. 이렇게 하면 서버가 마지막 입력 상태를 계속 수신합니다. 이는 안정적으로 감지할 수 없는 브라우저 수준 제한입니다.
-
해결 방법: 데스크톱 브라우저에서 전체 화면 모드를 사용하여 브라우저 메뉴 표시줄에 대한 액세스를 방지합니다. 키보드가 연결된 iOS 사용자의 경우 네이티브 앱이 포커스 손실을 더 잘 감지하고 처리할 수 있는 웹 보기로 네이티브 앱 래퍼를 생성하여 브라우저 창 포커스 및 블러 이벤트를 명시적으로 트리거하는 것이 좋습니다. 또는 프런트 엔드 HTML 또는 게임 내 UI 요소를 사용하여 사용자에게 키가 여전히 눌러져 있음을 알리고이 iOS 제한에 대한 정보를 제공합니다.
마우스 움직임은 Amazon GameLift Streams에서 다르게 동작합니다.
Amazon GameLift Streams로 스트리밍할 때 예상보다 빠르게 이동하는 등 마우스 움직임이 다르게 동작하는 경우 애플리케이션에서 마우스 처리 및 커서 관리 로직을 조정해야 할 수 있습니다.
-
문제: Amazon GameLift Streams는 휴리스틱을 사용하여 마우스 이벤트를 “상대적” 또는 “절대적” 모드로 전송할지 여부를 선택합니다. 상대 모드에서 새 마우스 업데이트는 이전 업데이트와 작은 증분 차이로 제공됩니다. 절대 모드에서 마우스 커서는 클라이언트와 동기화된 화면 위치로 계속 강제됩니다. 스트리밍된 콘텐츠 위에 운영 체제 커서가 표시되면 휴리스틱은 항상 절대 좌표를 선택합니다. 이로 인해 애플리케이션이 작고 상대적인 업데이트를 기대하는 경우 예기치 않게 큰 이동 델타가 발생할 수 있습니다.
-
해결 방법: 애플리케이션에서 상대적 마우스 모션(예: FPS 스타일 카메라 제어 또는 드래그 기반 상호 작용)이 필요한 경우 마우스 상호 작용 중에 운영 체제 커서를 숨깁니다. 예를 들어 마우스 아래로 커서를 숨기고 마우스 위로 다시 표시합니다. 이렇게 하면 끌기 모션이 상대 좌표를 사용하고 버튼을 놓을 때만 절대 위치가 동기화됩니다.
Amazon GameLift Streams의 마우스 움직임에 대한 자세한 내용은 섹션을 참조하세요마우스 이동 처리.
스트림 세션 문제
이 섹션에서는 예기치 않게 시작되거나 종료되는 스트림 세션과 관련된 문제의 잠재적 원인과 해결 방법을 식별합니다.
스트림 세션이 시작되지 않음
잠재적 원인:
-
애플리케이션이 중단되거나 충돌합니다. 문제 해결 지침은 애플리케이션 문제 섹션을 참조하세요.
-
스트림 그룹 상태가이 아닙니다
Active. 스트림 그룹의 상태를 확인합니다. -
온디맨드 용량이 StartStreamSession API에서
ConnectionTimeoutSeconds에 지정된 제한 시간보다 오래 걸립니다. Windows 런타임에서 온디맨드 스핀 업 시간은 5분 이상 걸릴 수 있습니다. -
스트리밍 위치에 사용 가능한 용량이 없습니다. 할당된 용량이 사용 중인 용량보다 크거나 사용 중이 아닌 온디맨드 용량이 있는지 확인합니다(할당된 용량이 항상 켜져 있는 용량 + 온디맨드 용량보다 작음). 콘솔의 스트림 그룹 목록 또는 스트림 그룹 세부 정보 페이지에서 이러한 값을 찾을 수 있습니다. 서비스 API를 사용하면 GetStreamGroup을 사용하여 이러한 값을 찾을 수 있습니다. 사용 가능한 용량이 일시적으로 0인 몇 가지 시나리오는 다음과 같습니다.
-
스트리밍 위치에서 상시 작동 용량을 방금 늘린 경우 용량이 할당될 때까지 몇 분 정도 기다립니다.
-
스트리밍 위치에 사용 가능한 용량이 하나뿐이고 클라이언트가 예기치 않게 연결 해제된 경우에도 이전 세션은 여전히 연결 해제 상태일 수 있습니다. 세션이 시간 초과될 때까지 몇 분 정도 기다렸다가 다시 시도하세요.
-
최근에 스트림 그룹에 위치를 추가했지만 해당 위치에 애플리케이션이 없는 경우 애플리케이션이 해당 위치 복제를 완료하지 않았을 수 있습니다. 콘솔의 스트림 그룹 세부 정보 페이지에서 복제 상태를 확인합니다. 또는 GetApplication API를 사용하여
ReplicationStatuses값을 확인하여 원하는 스트리밍 위치Status의가 인지 확인할 수 있습니다COMPLETED.
-
-
네트워크 조건이 너무 좋지 않아 프레임, 특히 첫 번째 프레임이 전송되지 않습니다. 클라이언트와 스트리밍 위치 간의 네트워크 상태를 확인하고 다른 위치를 조정하거나 시도합니다.
스트림 세션 종료됨
애플리케이션이 충돌하거나 종료되거나 클라이언트 연결이 끊어지면 스트림 세션이 자동으로 종료됩니다. 세션은 다음과 같은 제한 시간 값으로 인해 종료될 수도 있습니다.
-
배치 제한 시간: Amazon GameLift Streams가 스트림 세션을 호스팅할 컴퓨팅 리소스를 찾는 제한 시간 값입니다.
-
연결 제한 시간: 클라이언트가 스트림 세션에 연결하거나 다시 연결하는 제한 시간 값입니다.
-
유휴 제한 시간: 사용자 입력 없이 스트림 세션을 유휴 상태로 유지할 수 있는 최대 시간입니다.
-
세션 길이 제한 시간: 스트림 세션의 최대 시간입니다.
각 제한 시간 및 가능한 값에 대한 자세한 설명은 섹션을 참조하세요스트림 세션에 영향을 미치는 제한 시간 값.