Audio untuk permainan
Pelajari cara mengembangkan dan menggabungkan musik dan suara ke dalam game DirectX Anda, dan cara memproses sinyal audio untuk membuat suara dinamis dan posisi.
Untuk pemrograman audio, sebaiknya gunakan pustaka XAudio2 di DirectX, atau API grafik Windows Runtime Audio. Kami menggunakan XAudio2 di sini. XAudio2 adalah pustaka audio tingkat rendah yang menyediakan fondasi pemrosesan dan pencampuran sinyal untuk game, dan mendukung berbagai format.
Anda juga dapat menerapkan pemutaran suara dan musik sederhana dengan Microsoft Media Foundation. Microsoft Media Foundation dirancang untuk pemutaran file dan streaming media, baik audio maupun video, tetapi juga dapat digunakan dalam game, dan sangat berguna untuk adegan sinematik atau komponen non-interaktif dari game Anda.
Sekilas konsep
Berikut adalah beberapa konsep pemrograman audio yang kami gunakan di bagian ini.
- Sinyal adalah unit dasar pemrograman suara, dianalogikan dengan piksel dalam grafik. Prosesor sinyal digital (DSP) yang memprosesnya seperti shader piksel audio game. Mereka dapat mengubah sinyal, atau menggabungkannya, atau memfilternya. Dengan memprogram ke DSP, Anda dapat mengubah efek suara dan musik game Anda dengan kompleksitas sesedikit atau sebanyak yang Anda butuhkan.
- Suara adalah komposit submix dari dua sinyal atau lebih. Ada 3 jenis objek suara XAudio2: sumber, submix, dan suara penguasaan. Suara sumber beroperasi pada data audio yang disediakan oleh klien. Suara sumber dan submix mengirimkan outputnya ke satu atau beberapa submix atau suara penguasaan. Submix dan suara mastering mencampur audio dari semua suara yang memberinya makan, dan beroperasi pada hasilnya. Menguasai suara menulis data audio ke perangkat audio.
- Pencampuran adalah proses menggabungkan beberapa suara diskrit, seperti efek suara dan audio latar belakang yang diputar kembali dalam adegan, ke dalam satu aliran. Submixing adalah proses menggabungkan beberapa sinyal diskrit, seperti suara komponen kebisingan mesin, dan membuat suara.
- Format audio. Efek musik dan suara dapat disimpan dalam berbagai format digital untuk permainan Anda. Ada format yang tidak dikompresi, seperti WAV, dan format terkompresi seperti MP3 dan OGG. Semakin banyak sampel dikompresi -- biasanya ditunjuk oleh laju bitnya, di mana semakin rendah laju bit, semakin kehilangan kompresi -- semakin buruk keakuratan yang dimilikinya. Fidelitas dapat bervariasi di seluruh skema kompresi dan laju bit, jadi bereksperimenlah dengan mereka untuk menemukan apa yang paling sesuai untuk game Anda.
- Laju dan kualitas sampel. Suara dapat diambil sampelnya pada tingkat yang berbeda, dan suara yang diambil sampelnya pada tingkat yang lebih rendah memiliki keakuratan yang jauh lebih buruk. Tingkat sampel untuk kualitas CD adalah 44,1 Khz (44100 Hz). Jika Anda tidak memerlukan keakuratan tinggi untuk suara, Anda dapat memilih laju sampel yang lebih rendah. Tarif yang lebih tinggi mungkin sesuai untuk aplikasi audio profesional, tetapi Anda mungkin tidak membutuhkannya kecuali game Anda menuntut suara keakuratan profesional.
- Emiter suara (atau sumber). Di XAudio2, emiter suara adalah lokasi yang memancarkan suara, baik itu hanya kebisingan latar belakang atau trek batu menggeser yang dimainkan oleh jukebox dalam game. Anda menentukan emiter berdasarkan koordinat dunia.
- Pendengar suara. Pendengar suara seringkali merupakan pemutar, atau mungkin entitas AI dalam game yang lebih canggih, yang memproses suara yang diterima dari pendengar. Anda dapat men-submix suara itu ke aliran audio untuk pemutaran ke pemutar, atau Anda dapat menggunakannya untuk mengambil tindakan dalam game tertentu, seperti membangunkan penjaga AI yang ditandai sebagai pendengar.
Pertimbangan Desain
Audio adalah bagian yang sangat penting dari desain dan pengembangan game. Banyak gamer dapat mengingat game biasa-biasa saja yang ditinggikan ke status legendaris hanya karena soundtrack yang berkesan, atau pekerjaan suara dan pencampuran suara yang hebat, atau produksi audio bintang secara keseluruhan. Musik dan suara mendefinisikan kepribadian permainan, dan membangun motif utama yang mendefinisikan permainan dan membuatnya terpisah dari game serupa lainnya. Upaya yang Anda habiskan untuk merancang dan mengembangkan profil audio game Anda akan sangat sepadan.
Audio 3D posisi dapat menambahkan tingkat perendaman di luar yang disediakan oleh grafik 3D. Jika Anda mengembangkan game kompleks yang mensimulasikan dunia, atau yang menuntut gaya sinematik, pertimbangkan untuk menggunakan teknik audio posisi 3D untuk benar-benar menarik pemain.
Peta strategi pengembangan audio DirectX
Sumber daya konseptual XAudio2
XAudio2 adalah pustaka pencampuran audio untuk DirectX, dan terutama ditujukan untuk mengembangkan mesin audio berkinerja tinggi untuk game. Untuk pengembang game yang ingin menambahkan efek suara dan musik latar belakang ke game modern mereka, XAudio2 menawarkan grafik audio dan mesin pencampuran dengan latensi rendah dan dukungan untuk buffer dinamis, pemutaran sampel-akurat sinkron, dan konversi laju sumber implisit.
Topik | Deskripsi |
---|---|
Topik ini menyediakan daftar fitur pemrograman audio yang didukung oleh XAudio2. |
|
Topik ini menyediakan informasi tentang konsep XAudio2 utama, versi XAudio2, dan format audio RIFF. |
|
Topik ini memberikan gambaran umum tentang konsep audio umum yang harus dikenal pengembang audio. |
|
Topik ini berisi gambaran umum suara XAudio2, yang digunakan untuk submix, beroperasi, dan menguasai data audio. |
|
Topik ini mencakup panggilan balik XAudio 2, yang digunakan untuk mencegah jeda dalam pemutaran audio. |
|
Topik ini mencakup grafik pemrosesan audio XAudio2, yang mengambil serangkaian aliran audio dari klien sebagai input, memprosesnya, dan memberikan hasil akhir ke perangkat audio. |
|
Topik ini mencakup efek audio XAudio2, yang mengambil data audio masuk dan melakukan beberapa operasi pada data (seperti efek gaung) sebelum meneruskannya. |
|
Topik ini mencakup streaming audio dengan XAudio2. |
|
topik ini mencakup X3DAudio, API yang digunakan bersama dengan XAudio2 untuk membuat ilusi suara yang berasal dari titik dalam ruang 3D. |
|
Bagian ini berisi referensi lengkap untuk API XAudio2. |
Sumber daya "cara" XAudio2
Topik | Deskripsi |
---|---|
Pelajari cara menginisialisasi XAudio2 untuk pemutaran audio dengan membuat instans mesin XAudio2, dan membuat suara penguasaan. |
|
Pelajari cara mengisi struktur yang diperlukan untuk memutar data audio di XAudio2. |
|
Pelajari cara memutar data audio yang dimuat sebelumnya di XAudio2. |
|
Pelajari cara mengatur grup suara untuk mengirim outputnya ke suara submix yang sama. |
|
Pelajari cara menggunakan panggilan balik suara sumber XAudio2. |
|
Pelajari cara menggunakan panggilan balik mesin XAudio2. |
|
Pelajari cara membuat grafik pemrosesan audio, yang dibangun dari satu suara penguasaan dan satu suara sumber. |
|
Cara: Menambahkan atau Menghapus Suara Secara Dinamis Dari Grafik Audio |
Pelajari cara menambahkan atau menghapus suara submix dari grafik yang telah dibuat mengikuti langkah-langkah dalam Cara: Membangun Grafik Pemrosesan Audio Dasar. |
Pelajari cara menerapkan rantai efek ke suara untuk memungkinkan pemrosesan kustom data audio untuk suara tersebut. |
|
Pelajari cara mengimplementasikan IXAPO untuk membuat objek pemrosesan audio XAudio2 (XAPO). |
|
Pelajari cara menambahkan dukungan parameter run-time ke XAPO dengan mengimplementasikan antarmuka IXAPOParameters . |
|
Pelajari cara menggunakan efek yang diimplementasikan sebagai XAPO dalam rantai efek XAudio2. |
|
Pelajari cara menggunakan salah satu efek yang disertakan dalam XAPOFX dalam rantai efek XAudio2. |
|
Pelajari cara melakukan streaming data audio di XAudio2 dengan membuat utas terpisah untuk membaca buffer audio, dan menggunakan panggilan balik untuk mengontrol utas tersebut. |
|
Pelajari cara menggunakan X3DAudio untuk menyediakan nilai volume dan pitch untuk suara XAudio2 serta parameter untuk efek reverb bawaan XAudio2. |
|
Pelajari cara menggunakan kumpulan operasi XAudio2 untuk membuat sekelompok panggilan metode berlaku secara bersamaan. |
|
Pelajari cara mengatur tingkat pengelogan debug untuk XAudio2. |
Sumber daya Media Foundation
Media Foundation (MF) adalah platform media untuk streaming pemutaran audio dan video. Anda dapat menggunakan API Media Foundation untuk melakukan streaming audio dan video yang dikodekan dan dikompresi dengan berbagai algoritma. Ini tidak dirancang untuk skenario gameplay real-time; sebaliknya, ia menyediakan alat yang kuat dan dukungan codec yang luas untuk pengambilan dan presentasi komponen audio dan video yang lebih linier.
Topik | Deskripsi |
---|---|
Bagian ini berisi informasi umum tentang API Media Foundation, dan alat yang tersedia untuk mendukungnya. |
|
Topik ini memperkenalkan beberapa konsep yang perlu Anda pahami sebelum menulis aplikasi Media Foundation. |
|
Bagian ini menjelaskan desain umum Microsoft Media Foundation, serta primitif media dan alur pemrosesan yang digunakannya. |
|
Topik ini menjelaskan cara menggunakan Microsoft Media Foundation untuk melakukan pengambilan audio dan video. |
|
Topik ini menjelaskan cara menerapkan pemutaran audio/video di aplikasi Anda. |
|
Topik ini mencantumkan format media yang didukung Microsoft Media Foundation secara asli. (Pihak ketiga dapat mendukung format tambahan dengan menulis plug-in kustom.) |
|
Topik ini menjelaskan cara menggunakan Microsoft Media Foundation untuk melakukan pengodean audio dan video, dan menulis file media. |
|
Topik ini menjelaskan cara menggunakan fitur codec Windows Media Audio dan Video untuk menghasilkan dan mengonsumsi aliran data terkompresi. |
|
Bagian ini berisi informasi referensi untuk API Media Foundation. |
|
Bagian ini mencantumkan contoh aplikasi yang menunjukkan cara menggunakan Media Foundation. |
Jenis media Windows Runtime XAML
Jika Anda menggunakan interop DirectX-XAML, Anda dapat menggabungkan API media Windows Runtime XAML ke dalam aplikasi UWP Anda menggunakan DirectX dengan C++ untuk skenario game yang lebih sederhana.
Topik | Deskripsi |
---|---|
Elemen XAML yang mewakili objek yang berisi audio, video, atau keduanya. |
|
Pelajari cara menggabungkan audio dan video dasar di aplikasi Platform Windows Universal (UWP) Anda. |
|
Pelajari cara memutar file media yang disimpan secara lokal di aplikasi UWP Anda. |
|
Pelajari cara melakukan streaming file media dengan latensi rendah di aplikasi UWP Anda. |
|
Pelajari cara menggunakan kontrak Play To untuk mengalirkan media dari aplikasi UWP Anda ke perangkat lain. |