게임 개발자를 위한 DirectX 설치
이 문서는 DirectX 런타임과 DirectSetup을 사용하여 DirectX를 설치하는 방법에 대한 몇 가지 일반적인 질문을 해결하기 위한 것입니다.
중요
레거시 DirectX SDK는 수명이 종료되었지만 이전 게임, 자습서 및 프로젝트를 지원하기 위해 계속 사용할 수 있습니다. 새 프로젝트는 사용하지 않아야 합니다. 레거시 DirectX SDK를 사용하려면 D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3 및 XACT와 같은 구성 요소에 사용되지 않는 DirectSetup을 사용해야 합니다. DirectX SDK의 현재 상태에 대한 자세한 내용은 DirectX SDK는 어디에 있나요?를 참조하고 블로그 게시물 Not So Direct Setup을 참조하세요.
DirectX 런타임
DirectX 런타임은 핵심 구성 요소와 선택적 구성 요소로 구성됩니다.
Direct3D 및 DirectInput과 같은 핵심 구성 요소는 운영 체제의 일부로 간주됩니다. DirectX 9.0c의 핵심 구성 요소는 DirectX SDK Summer 2004 업데이트 이후 변경되지 않았으며 Microsoft Windows XP SP2, Windows XP Pro x64 Edition 및 Windows Server 2003 SP1과 함께 출시된 구성 요소와 일치합니다. Windows Vista에는 WDDM(Windows 디스플레이 드라이버 모델) 및 Direct3D 10.x를 지원하는 DirectX 10이 포함되어 있습니다. Windows 7 및 Windows Vista는 Direct3D 11, Direct2D, DirectWrite, WARP10 소프트웨어 렌더링 디바이스 및 10level9 기능 수준을 지원하는 DirectX 11을 지원합니다. 자세한 내용은 Windows의 그래픽 API 를 참조하세요.
선택적 구성 요소는 DirectX SDK 업데이트에서 릴리스되며 D3DX, XACT, XAudio2, XINPUT, Managed DirectX 및 기타 구성 요소를 포함합니다. 많은 선택적 구성 요소가 정기적으로 업데이트되어 고객 피드백을 통합하고 새로운 기능을 공개합니다.
DirectX 버전 번호
9.0c와 같은 DirectX 버전 번호는 Direct3D, DirectInput 또는 DirectSound와 같은 핵심 구성 요소의 버전만 나타냅니다. 이 숫자는 D3DX, XACT, XINPUT 등 DirectX SDK에서 릴리스되는 다양한 선택적 구성 요소의 버전을 다루지 않습니다.
일반적으로 DirectX 버전 번호는 핵심 런타임 비트에 대한 빠른 참조를 제외하고는 의미가 없습니다. 이 숫자는 선택적 DirectX 구성 요소를 고려하지 않으므로 올바른 DirectX 런타임이 이미 설치된 경우 검사 데 사용하면 안 됩니다.
DirectX 라이브러리
이전에는 D3DX를 포함한 DirectX SDK의 선택적 구성 요소가 정적 라이브러리로 릴리스되었습니다. 그러나 이러한 라이브러리는 이제 더 나은 보안 사례에 대한 수요 증가로 인해 DLL(동적 유사 라이브러리)로 릴리스됩니다. DLL을 사용하면 이전에 릴리스된 코드를 서비스할 수 있습니다. 이러한 구성 요소가 정적 라이브러리로 배포된 경우 Microsoft는 릴리스 후에 발견된 보안 문제를 해결할 방법이 없습니다.
기능이 선택적 구성 요소에 추가되거나 변경되면 릴리스된 구성 요소를 사용하는 기존 게임에 대한 회귀가 발생하지 않도록 해당 DLL의 이름도 변경됩니다. 각 구성 요소의 DLL은 나란히 라이브로 진행되며, 게임 개발자는 해당 가져오기 라이브러리에 연결하여 게임에서 사용하는 DLL 버전을 정확히 선택할 수 있습니다.
시스템에 DLL을 설치하는 것이 단순히 정적 라이브러리에 연결하는 것만큼 쉽지는 않지만 DLL 모델의 문제를 해결하기 위해 DirectX SDK를 일부 변경했습니다.
- DirectX 재배포 가능 패키지는 애플리케이션에서 배포 및 미디어 크기를 최소화하는 데 필요한 구성 요소만 포함하도록 구성할 수 있습니다.
- 재배포 가능 폴더인 Program Files\DirectX SDK\Redist\에는 가능한 모든 선택적 구성 요소에 대한 캐비닛(.cab) 파일이 포함되어 있으므로 이전 SDK를 찾아 찾을 필요가 없습니다.
- SDK 자체를 설치하면 가능한 모든 선택적 구성 요소가 설치됩니다.
- 모든 선택적 구성 요소를 포함하는 DirectX 재배포 가능 패키지는 웹 기반 설치 관리자와 다운로드 가능한 패키지로 모두 사용할 수 있습니다. 자세한 내용은 DirectX 개발자 센터(DirectX)를 참조하세요.
게임의 설치 관리자에 의한 DirectX 설치
다음은 게임 설치 관리자에 DirectX 설치를 추가하는 모범 사례입니다.
용어 | 설명 |
---|---|
매번 재배포 가능 구성 요소를 설치합니다. |
게임의 설치 프로세스는 사용자가 옵트아웃할 수 없도록 모든 단일 설치 중에 DirectX 재배포 가능 구성 요소를 설치해야 합니다. 옵트아웃을 허용하면 일부 사용자는 필요하지 않다고 추측하고 실제로 옵트아웃하면 게임이 실행되지 않습니다. |
선택적 구성 요소에 대해 DirectX 설치 관리자가 검사. |
Windows 업데이트 및 서비스 팩은 DirectX의 선택적 구성 요소를 제공하지 않으므로 최신 선택적 구성 요소가 시스템에 이미 설치되어 있다고 가정하지 마세요. 직접 dxsetup.exe 실행하거나 DirectSetup을 호출하여 DirectX 런타임을 설치해야 합니다. |
자동으로 설정합니다. |
사용자가 실수로 DirectX 런타임 업데이트를 건너뛰지 않도록 자동 모드에서 설정을 시작합니다. 다음 명령을 사용하여 dxsetup.exe 시작하여 이 작업을 수행할 수 있습니다. 또는 DirectSetup을 호출하고 UI를 표시하지 않습니다. |
EULA 동의를 결합합니다. |
사용자에게 EULA를 수락하라는 메시지가 표시되면 자동 모드로 설치할 때 DirectX EULA를 수락하라는 메시지를 표시하여 EULA를 수락하라는 메시지가 한 번만 발생하도록 결합합니다. 사용자가 수락하지 않으면 실패한 부분 설치로 끝나지 않도록 설치하기 전에 프롬프트가 발생합니다. |
dxsetup을 실행하거나 DirectSetup을 호출하기만 하면 됩니다. |
DirectX 버전 번호는 핵심 DirectX 구성 요소 외에는 아무 것도 참조하지 않으므로 dxsetup.exe 실행하거나 DirectSetup을 호출하기 전에 설치된 버전을 검사 않습니다. 또한 선택적 구성 요소가 이미 설치되어 있는지 테스트하기 위해 파일의 존재 여부를 검사 않습니다. 일반적으로 구성 요소가 있는 시기를 올바르게 결정하지는 않지만 업데이트가 필요하기 때문에 테스트하지 마세요. 그러나 DirectX 설치 패키지는 이를 신속하게 확인하고 올바른 작업을 수행합니다. |
소형 설치 패키지
DirectX 재배포 가능 폴더의 콘텐츠를 설치 관리자가 작동하도록 하는 데 필요한 최소 파일 집합으로 제거하고 게임에서 사용하는 추가 구성 요소를 유지하여 DirectX용 더 작은 설치 패키지를 만들 수 있습니다.
최소 사양에 따라 설치 미디어의 재배포 가능 폴더에 핵심 DirectX 9.0c 캐비닛 파일을 포함할 필요가 없을 수도 있습니다. 대부분의 Windows XP 설치에는 핵심 DirectX 9.0c 구성 요소가 포함된 서비스 팩 2가 있으므로 DirectX 설치 작업이 매우 빠르며 다시 부팅할 필요가 없습니다. 만들 수 있는 가장 작은 패키지는 약 3MB이며 해당 크기의 약 절반으로 압축할 수 있습니다. 이와 같은 패키지에는 D3DX DLL의 한 버전이 포함되어 있으며 DirectX 9.0c가 이미 있어야 합니다.
재배포 가능 패키지를 빌드하는 데 필요한 최소 파일 집합은 DirectX SDK Redist 폴더(Program Files\DirectX SDK\Redist)에 있는 다음 파일입니다.
- dxsetup.exe
- dsetup32.dll
- dsetup.dll
- dxupdate.cab
설치하려는 구성 요소에 대한 캐비닛 파일을 이러한 캐비닛 파일에 추가합니다. 애플리케이션 사용자에게 이미 DirectX 9.0c가 있어야 하는 경우 대부분의 공간 요구 사항을 구성하는 DirectX.cab 또는 dxnt.cab 포함할 필요가 없습니다. DirectX.cab Windows 98 및 Windows ME에만 필요합니다. dxnt.cab Windows 2000, Windows XP 및 Windows XP SP1에만 필요합니다. 및 dxdllreg_x86.cab Windows 2000, Windows XP RTM, Windows XP SP1 및 Windows Server 2003 RTM에만 필요합니다. 또한 DirectShow를 사용하지 않거나 이미 설치되어 있다고 가정하는 경우 BDA.cab, BDANT.cab 및 BDAXP.cab 생략할 수 있습니다.
참고
애플리케이션의 이전 버전에서 설치한 경우 애플리케이션의 사용자에게 이미 DirectX 9.0c가 있다고 가정하거나, 사용자가 웹 설치 관리자를 통해 수동으로 업데이트하도록 하거나, Windows XP SP2 이상이 있다고 가정할 수 있습니다.
이 예제를 계속 진행하면서 2006년 4월에 D3DX의 32비트 버전만 사용하는 경우 Apr2006_d3dx9_30_x86.cab 추가할 수 있습니다. 2006년 8월 32비트 버전의 XINPUT를 사용하는 경우 Aug2006_xinput_x86.cab 추가합니다.
네이티브 64비트 애플리케이션이 있는 경우 _x64 버전을 추가해야 합니다. 그러나 64비트 OS에서 실행되는 32비트 애플리케이션이 있는 경우 32비트 버전의 DLL이 작동합니다.
그런 다음, 이 파일 패키지를 배포하고 자동 모드에서 DirectSetup을 시작하거나 명령 셸에서 자동 모드로 dxsetup.exe 실행할 수 있습니다. 파일의 버전 검사로 이 패키지를 보호하지 않고 사용자가 DirectX 설치 프로그램을 옵트아웃할 수 없도록 해야 합니다. 이러한 이벤트 중 하나가 오류 발생 가능한 설치 프로세스를 만듭니다.
디버그 DirectX 런타임의 내부 배포
DirectX SDK가 설치될 때 DirectX 구성 요소의 디버그 런타임이 설치되지만 모든 테스트 컴퓨터에 SDK를 설치하는 것은 어려울 수 있습니다. Program Files\Microsoft DirectX SDK\Developer Runtime\architecture\에서 Windows\system32\ 또는 게임의 폴더로 디버그 런타임 DLL을 복사하는 설치 프로세스를 디자인해야 합니다.
그러나 최종 제품에 대해 제거하는 것을 잊기 쉽기 때문에 릴리스된 런타임 DLL을 복사하지 않는 것이 좋습니다. 대신 DirectX 설치 파일을 공유 폴더에 넣고 공유 폴더에서 설치 프로그램을 자동으로 실행합니다.
데스크톱 브리지 애플리케이션
D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3 또는 XACT를 사용하는 데스크톱 브리지 애플리케이션은 이러한 레거시 DirectX SDK 병렬 구성 요소를 배포하기 위해 Microsoft.DirectX.x86 또는 Microsoft.DirectX.x64 프레임워크를 다운로드해야 합니다. 또는 이러한 종속성을 모두 제거할 수 있습니다.(재배포 가능 버전의 XAudio 2.9에 대한 개발자 가이드 및 D3DX 및 XINPUT 및 Windows 8 없는 Living 블로그 게시물 참조).