Anda mungkin akrab dengan permainan ryhtm seperti Dancing Line , Geometry Dash , atau bahkan Guitar Hero . Mereka memiliki kesamaan: setiap aksi dalam game disinkronkan dengan musik. Tujuan saya adalah membuat permainan seperti Geometry Dash di mana pemain harus melakukan beberapa aksi dalam ritme sementara karakter bergulir secara otomatis di tingkat. Saya punya beberapa pertanyaan tentang jenis permainan ini:
- Apakah saya harus menjaga FPS saya konstan karena harus selalu disinkronkan dengan musik?
- Bagaimana saya bisa membangun level saya dengan musik dalam pikiran untuk memastikan bahwa itu akan disinkronkan?
Saya mengerjakan Unity menggunakan C #.
sumber
Sebagai alternatif jika Anda baik-baik saja dengan tidak bekerja dari awal.
Sudah ada aset siap pakai (di bawah Ekstensi Editor / Audio seperti https://www.assetstore.unity3d.com/en/#!/content/54639 (berbayar) atau https://www.assetstore.unity3d.com/en / #! / content / 39835 (gratis)) tempat Anda dapat menyinkronkan trek musik ke acara. Dalam contoh itu senjata menembak dengan irama musik.
Jika Anda ingin mempelajari cara kerjanya, cobalah 1-2 yang gratis dan lihat sumbernya.
sumber
Unity sudah memisahkan gameplay dari framerate. Jika Anda ingat untuk selalu menggunakan
Time.deltaTime
dalam fungsi Perbarui Anda, framerate grafik yang sebenarnya tidak akan mempengaruhi kecepatan gameplay. Jadi ketika Anda memulai gim dan trek audio pada saat yang sama, mereka harus tetap disinkronkan.Mengenai tingkat perancangan di sekitar musik, ada dua pendekatan:
Pendekatan prosedural. Gunakan algoritma analisis audio untuk menghasilkan level di sekitar trek audio secara otomatis. Yang paling sederhana adalah dengan hanya mencari lonjakan volume. Itu seharusnya sudah memungkinkan Anda untuk mengidentifikasi ketukan drum di banyak lagu dan menimbulkan hambatan yang sesuai. Langkah selanjutnya adalah mendeteksi perpindahan volume secara terpisah dalam spektrum frekuensi yang berbeda. Ini membuat deteksi ketukan menjadi lebih andal dan memungkinkan Anda untuk menelurkan berbagai rintangan untuk pitch yang berbeda. Tapi itu masih menggores permukaan saja. Analisis audio adalah bidang yang sangat luas dan menarik. Orang-orang menulis banyak literatur ilmiah tentangnya.
Seberapa dalam Anda perlu terjun ke bidang ini tergantung pada seberapa ambisi Anda. Beberapa game puas dengan hanya mendeteksi ketukan dan secara acak-menghasilkan semua sisa desain tingkat ( Crypt of the Necrodancer ). Lainnya mencoba menempatkan sebanyak mungkin aspek desain level di bawah kendali audio yang mereka bisa ( Audiosurf ).
Banyak permainan ritme menggunakan pendekatan hybrid. Anda menghasilkan draf pertama tingkat menggunakan generator dan kemudian men-tweak dengan tangan untuk membuatnya lebih bisa dimainkan.
sumber
Time.time
saja.Sangat umum adalah pendekatan untuk memiliki "beat map". Setiap jenis data yang mewakili ketukan dalam lagu. Itu bisa berupa tekstur, datafile atau apa pun yang menyimpan informasi itu. Sebagian besar waktu itu dibuat secara manual untuk membuat berbagai ketukan dan kombinasi, versi kecepatan untuk peta audio.
Itu dapat dihasilkan secara prosedural dari data file audio.
Bagaimana cara mendapatkan kecepatan agar sesuai dengan "beat point"? Kapan harus menelurkan objek?
Speed = Distance / Time
.Distance =
Jarak antara titik-titik penciptaan GameObject dan dari "beat point".Time =
Panjang audio dan beat beat yang dibangun harus cukup. Dengan informasi ini, Anda dapat menganalisis data audio / peta untuk memprediksi kapan suatu objek harus dihasilkan untuk mencapai titik yang tepat. Sekarang semuanya tergantung pada kapan Anda ingin menelurkan objek itu, jika Anda ingin sangat cepat setelah bertelur, maka Anda menelurkannya nanti dengan kecepatan tinggi. Jika Anda ingin berada pada kecepatan normal - maka perlu waktu untuk mencapai pemain dan audio membutuhkan waktu untuk bermain di saat yang tepat.Anda bahkan dapat membuat peta baru dengan prangko waktu untuk memunculkan objek beat untuk peta audio tertentu. Anda harus membuat beberapa prediksi pada suatu titik untuk dapat menyamai ketukan, untuk gaya paling populer, saya katakan, untuk memprediksi
when
untuk menelurkan objek untuk bergerak dengan pastispeed
. Itu dapat dibuat dalam runtime, atau dibaca dari beberapa file yang dihitung sebelumnya, atau disimpan dalam RAM ...Saya berasumsi game seperti
Osu
tidak punya iniDistance
, mereka hanya punya waktu menyusut lingkaran, bpm ... Peta umumnya dibuat khusus. Jadi pendekatan untuk menghitung visual tergantung pada gaya permainan yang Anda buat juga.Jadi untuk meringkas semuanya, nilainya saling tergantung. Tergantung pada berapa banyak ketukan yang Anda miliki, pada jarak antara titik spawn dan pemain, dan kadang-kadang tergantung pada data yang disediakan [beberapa game memiliki kecepatan setiap ketukan dan tampilannya dikodekan dalam beberapa file data yang dibuat secara manual]. Jika Anda melakukannya dengan cara prosedural, maka Anda dapat menghitung semuanya pada dasarnya dengan menggunakan data audio.
sumber