Bagikan melalui


Penginstalan DirectX untuk Pengembang Game

Artikel ini dimaksudkan untuk mengatasi beberapa pertanyaan umum tentang runtime DirectX, dan menggunakan DirectSetup untuk menginstal DirectX.

Penting

DirectX SDK warisan berada di akhir masa pakai, tetapi masih tersedia untuk mendukung game, tutorial, dan proyek lama. Proyek baru tidak boleh menggunakannya. Menggunakan DirectX SDK warisan memerlukan penggunaan DirectSetup yang tidak digunakan lagi untuk komponen seperti D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3, dan XACT. Untuk detail selengkapnya tentang status DirectX SDK saat ini, lihat Di mana DirectX SDK?, dan posting blog Tidak Jadi Penyiapan Langsung.

DirectX Runtime

Runtime DirectX terdiri dari komponen inti dan komponen opsional.

Komponen inti, seperti Direct3D dan DirectInput, dianggap sebagai bagian dari sistem operasi. Komponen inti untuk DirectX 9.0c tidak berubah sejak Pembaruan DirectX SDK Musim Panas 2004, dan cocok dengan apa yang dirilis dengan Microsoft Windows XP SP2, Windows XP Pro x64 Edition, dan Windows Server 2003 SP1. Windows Vista mencakup DirectX 10, yang mendukung Windows Display Driver Model (WDDM) dan Direct3D 10.x. Windows 7 dan Windows Vista mendukung DirectX 11, yang mendukung Direct3D 11, Direct2D, DirectWrite, perangkat penyajian perangkat lunak WARP10, dan tingkat fitur 10level9. Lihat API Grafis di Windows untuk detail selengkapnya.

Komponen opsional dirilis dalam pembaruan DirectX SDK, dan mereka termasuk D3DX, XACT, XAudio2, XINPUT, Managed DirectX, dan komponen lainnya. Banyak komponen opsional diperbarui secara teratur untuk mengintegrasikan umpan balik pelanggan dan mengekspos fitur baru.

Nomor Versi DirectX

Nomor versi DirectX, seperti 9.0c, hanya mengacu pada versi komponen inti, seperti Direct3D, DirectInput, atau DirectSound. Jumlah ini tidak mencakup versi berbagai komponen opsional yang dirilis di DirectX SDK, seperti D3DX, XACT, XINPUT, dan sebagainya.

Secara umum, nomor versi DirectX tidak bermakna kecuali sebagai referensi cepat ke bit run-time inti. Angka ini tidak boleh digunakan untuk memeriksa apakah runtime DirectX yang benar sudah diinstal, karena tidak memperhitungkan komponen DirectX opsional.

Pustaka DirectX

Di masa lalu, komponen opsional DirectX SDK, termasuk D3DX, dirilis sebagai pustaka statis. Namun, ini sekarang dirilis sebagai pustaka seperti dinamis (DLL) karena peningkatan permintaan untuk praktik keamanan yang lebih baik. DLL memungkinkan layanan kode yang dirilis sebelumnya. Jika komponen ini disebarkan sebagai pustaka statis, tidak akan ada cara bagi Microsoft untuk mengatasi masalah keamanan yang ditemukan setelah rilis.

Karena fitur ditambahkan atau diubah ke komponen opsional, nama DLL yang sesuai juga diubah untuk memastikan bahwa tidak ada regresi yang disebabkan pada game yang ada yang menggunakan komponen yang dirilis. DLL untuk setiap komponen secara langsung berdampingan, dan pengembang game dapat memilih dengan tepat versi DLL mana yang digunakan game dengan menautkan ke pustaka impor yang sesuai.

Meskipun memastikan bahwa DLL diinstal pada sistem tidak semampu menautkan ke pustaka statis, beberapa perubahan telah dilakukan pada DirectX SDK untuk mengatasi rasa sakit model DLL:

  • DirectX redistributable dapat dikonfigurasi untuk hanya berisi komponen yang diperlukan aplikasi Anda untuk meminimalkan distribusi dan ukuran media.
  • Folder yang dapat didistribusikan ulang, Program Files\DirectX SDK\Redist\, sekarang berisi file kabinet (.cab) untuk setiap komponen opsional yang mungkin, sehingga Anda tidak perlu menggali SDK yang lebih lama untuk menemukannya.
  • Menginstal SDK itu sendiri menginstal setiap komponen opsional yang mungkin.
  • DirectX redistributable yang berisi semua komponen opsional tersedia sebagai alat penginstal berbasis Web dan sebagai paket yang dapat diunduh; lihat Pusat Pengembang DirectX (DirectX) untuk informasi selengkapnya.

Penginstalan DirectX oleh Penginstal Game

Berikut ini adalah praktik terbaik untuk menambahkan penginstalan DirectX ke alat penginstal game:

Istilah Deskripsi
Instal komponen yang dapat didistribusikan ulang setiap saat.
Proses penginstalan game harus menginstal komponen directx yang dapat didistribusikan ulang selama setiap penginstalan tanpa mengizinkan pengguna untuk menolaknya. Jika Anda mengizinkan penolakan, beberapa pengguna akan menebak bahwa mereka tidak membutuhkannya, dan jika mereka benar-benar melakukannya, permainan tidak akan berjalan.
Biarkan alat penginstal DirectX memeriksa komponen opsional.
Jangan berasumsi bahwa komponen opsional terbaru sudah diinstal pada sistem, karena Windows Update dan Paket Layanan tidak menyediakan komponen opsional DirectX apa pun. Anda harus menginstal runtime DirectX baik dengan menjalankan dxsetup.exe secara langsung atau memanggil DirectSetup.
Siapkan secara diam-diam.
Luncurkan penyiapan dalam mode senyap sehingga pengguna tidak secara tidak sengaja melewati pembaruan runtime DirectX. Anda dapat melakukan ini dengan meluncurkan dxsetup.exe dengan perintah berikut:
   path-to-redistributable\dxsetup.exe /silent
atau dengan memanggil DirectSetup dan tidak menampilkan UI apa pun.
Gabungkan penerimaan EULA.
Jika Anda meminta pengguna untuk menerima EULA, maka gabungkan dengan meminta penerimaan DirectX EULA saat menginstal dalam mode senyap sehingga meminta penerimaan UE terjadi hanya sekali. Perintah harus terjadi sebelum Anda menginstal apa pun sehingga jika pengguna tidak menerima, Anda tidak berakhir dengan penginstalan yang gagal dan sebagian.
Cukup jalankan dxsetup atau panggil DirectSetup.
Karena nomor versi DirectX tidak merujuk ke apa pun kecuali komponen DirectX inti, jangan periksa versi yang diinstal sebelum menjalankan dxsetup.exe atau memanggil DirectSetup. Selain itu, jangan periksa keberadaan file untuk menguji apakah komponen opsional sudah diinstal, karena ini biasanya tidak akan menentukan dengan benar kapan komponen ada tetapi perlu diperbarui. Namun, paket penyiapan DirectX akan dengan cepat menentukan ini, dan melakukan tindakan yang tepat.

Paket Penginstalan Kecil

Anda dapat membuat paket penginstalan yang lebih kecil untuk DirectX dengan menghapus konten folder DirectX yang dapat didistribusikan ulang ke set file minimal yang diperlukan untuk membuat alat penginstal berfungsi, dan mempertahankan komponen tambahan apa pun yang digunakan game Anda.

Tergantung pada spesifikasi minimum Anda, Anda bahkan mungkin tidak perlu menyertakan file kabinet DirectX 9.0c inti di folder yang dapat didistribusikan ulang dari media penginstalan Anda. Sebagian besar instalasi Windows XP memiliki Paket Layanan 2, yang mencakup komponen inti DirectX 9.0c, sehingga operasi penyiapan DirectX akan sangat cepat, dan tidak akan memerlukan boot ulang. Paket terkecil yang dapat dibuat adalah sekitar 3 MB, dan dapat dikompresi hingga sekitar setengah ukuran itu. Paket seperti ini berisi satu versi DLL D3DX, dan mengharuskan DirectX 9.0c sudah ada.

Set minimal file yang diperlukan untuk membangun paket yang dapat didistribusikan ulang adalah file berikut, yang terletak di folder DirectX SDK Redist (Program Files\DirectX SDK\Redist):

  • dxsetup.exe
  • dsetup32.dll
  • dsetup.dll
  • dxupdate.cab

Tambahkan ke file kabinet ini untuk komponen yang ingin Anda instal. Jika Anda mengharuskan pengguna aplikasi Anda untuk sudah memiliki DirectX 9.0c, maka Anda tidak perlu menyertakan DirectX.cab atau dxnt.cab, yang membentuk sebagian besar persyaratan ruang. DirectX.cab hanya diperlukan untuk Windows 98 dan Windows ME; dxnt.cab hanya diperlukan untuk Windows 2000, Windows XP, dan Windows XP SP1; dan dxdllreg_x86.cab hanya diperlukan untuk Windows 2000, Windows XP RTM, Windows XP SP1, dan Windows Server 2003 RTM. Selain itu, jika Anda tidak menggunakan DirectShow, atau Anda berasumsi bahwa itu sudah diinstal, Anda dapat menghilangkan BDA.cab, BDANT.cab, dan BDAXP.cab.

Catatan

Anda dapat berasumsi bahwa pengguna aplikasi Anda sudah memiliki DirectX 9.0c jika diinstal oleh versi aplikasi sebelumnya, Anda memaksa pengguna untuk memperbarui secara manual melalui Penginstal Web, atau Anda menganggap bahwa mereka memiliki Windows XP SP2 atau yang lebih baru.

Melanjutkan dengan contoh ini, jika Anda hanya menggunakan D3DX versi 32-bit untuk April 2006, Anda dapat menambahkan Apr2006_d3dx9_30_x86.cab. Jika Anda menggunakan XINPUT versi 32-bit Agustus 2006 32-bit, Anda menambahkan Aug2006_xinput_x86.cab.

Jika Anda memiliki aplikasi 64-bit asli, Anda harus menambahkan versi _x64. Namun, jika Anda memiliki aplikasi 32-bit yang berjalan pada OS 64-bit, DLL versi 32-bit akan berfungsi.

Anda kemudian dapat mendistribusikan paket file ini dan meluncurkan DirectSetup dalam mode senyap atau menjalankan dxsetup.exe di shell perintah dalam mode senyap. Ingatlah untuk tidak menjaga paket ini dengan setiap pemeriksaan versi file, dan pastikan bahwa pengguna Anda tidak dapat menolak menjalankan penyiapan DirectX. Salah satu peristiwa ini menciptakan proses penginstalan yang dapat dijatuhkan.

Penyebaran Internal Runtime DirectX Debug

Runtime debug komponen DirectX diinstal ketika DirectX SDK diinstal, tetapi menginstal SDK pada setiap komputer pengujian bisa menyakitkan. Anda perlu merancang proses penyiapan Anda untuk menyalin DLL runtime debug dari Program Files\Microsoft DirectX SDK\Developer Runtime\architecture\ ke Windows\system32\ atau ke folder game.

Namun, kami sangat menyarankan Agar Anda tidak hanya menyalin DLL run-time yang dirilis karena mudah untuk lupa menghapusnya untuk produk akhir. Sebagai gantinya, letakkan file penyiapan DirectX di folder bersama dan jalankan penyiapan secara diam-diam dari folder bersama.

Aplikasi Desktop Bridge

Aplikasi Desktop Bridge yang menggunakan D3DX9, D3DX10, D3DX11, XAudio 2.7, XInput 1.3, atau XACT harus mengunduh kerangka kerja Microsoft.DirectX.x86 atau Microsoft.DirectX.x64 untuk menyebarkan komponen berdampingan DirectX SDK warisan ini. Atau, Anda dapat menghapus semua dependensi tersebut—(lihat Panduan pengembang untuk versi XAudio 2.9 yang dapat didistribusikan ulang, dan posting blog Hidup tanpa D3DX dan XINPUT dan Windows 8).