Audio Surf ve Beat Hazard gibi audio tabanlı oyunlar nasıl çalışır?


43

Not: Bunlardan birini nasıl klonlayacağımı sormuyorum. Nasıl çalıştıklarını soruyorum.

Herkesin kendi müzik dosyalarınızı kullandığınız (veya sağlananları) oyunları gördüğüne ve oyunların Audiosurf ve Beat Hazard gibi kendilerine göre seviyeler ürettiğinden eminim .

Burada, ne demek istediğimi göstermek için kullanılan bir Audiosurf videosu var .

Ağır bir metal şarkı söylerseniz, Vivaldi gibi bir şeyden tamamen farklı bir dizi engel, düşman ve oyun deneyimi elde edersiniz.

Beni ilgilendiren şey bu oyunların nasıl çalıştığı. Ses hakkında pek fazla şey bilmiyorum (veri tarafı), ama ne zaman yerleştiği ya da ne zaman hızlandığı anlamak için şarkıyı nasıl işlerler? Bir seviye oluşturmak için sadece pitch değerlerini besleyebilirler (ses dosyalarında bu tür şeyler varsayarsak), ancak bunu tam olarak açıklayamazlardı.

Bir açıklama, bu tür şeylerle ilgili makalelere bazı bağlantılar (bunun için bir terim veya terimler olduğundan eminim), hatta bu tür bir şeyin açık kaynaklı bir uygulaması;

EDIT: Biraz arama ve biraz yardımdan sonra, FFT (Fast Fourier Dönüşümü) öğrendim . Bu belki de doğru yönde atılmış bir adımdır, ama bana mantıklı gelmeyen bir şey ... ya da fizik dalgalarıma dair bilgime uyuyor.


1
Sadece FFT'ler hakkında bilgi eklemek için düzenleme yaptım, yardımcı olacağını umuyorum :)
Ray Dey

Yanıtlar:


30

Aradığınız terim sinyal işleme / analizdir Çok sayıda teknik vardır, ancak bu oyunların kullandığı temel yöntem Beat Detection'dır . Bu, şarkının temposunu ve bir ölçüdeki vuruşların nerede olduğunu hesaplamaya çalışır ve dolayısıyla engelleri her vuruş ile çakışmak için uygun mesafeye yerleştirir.

Oyunların "ne zaman" vurulacağını "bilmesi, çok basit olmasından ve dalga biçiminin genliğini (hacmini) ölçmekten veya belirli frekansların hacmini izole etmek ve hacmini ölçmek gibi daha karmaşık bir şey olabilir.

İlgileniyorsanız, dalga biçimlerini nasıl analiz edebileceğinizi görmek için Dijital Sinyal İşleme'ye bakın; bu, aslında bu oyunların yükleme aşamasında ne yaptıkları.

Bu linkler başlamanıza iyi gelir:

Ses İşleme
Teorisine Giriş ve Elektronik Müziğin Teknikleri
Dijital Filtrelere Giriş

Umarım yardımcı olur :)

-Ray

EDIT: Fourier dönüşümleri hakkındaki düzenlemenizi yeni gördüm ve bu konuda uzman olamasam da, içine biraz fikir ekleyeceğimi düşündüm.

FFT, bir dalga formunun gerçek Fourier dönüşümünü hesaplamanın bir yoludur. Temel olarak, Audacity'ye bir ses dosyası yüklerseniz , dalga formunu üst kısımda zaman çizelgesiyle görürsünüz, bu zaman alanı olarak bilinir . FFT, zaman alanından gelen bir sinyali frekans alanına dönüştürür (temel olarak ses içinde meydana gelen tüm frekanslar).

Bu dönüşüm, spektral analiz için kullanışlıdır. Bir oyun örneğinde, eğer bir Fourier dönüşümü yapacak olsaydınız, sesteki yüksek frekanslı oluşumların miktarını kolayca hesaplayabilir ve bundan on iki kez görsel efekt, yıldız veya tipik olarak yüksek frekanslı seslerle ilişkili bir şey ekleyebilirsiniz. Düşük frekanslar için, zaman içinde bas seslerine vb. İlerleyen büyük, iğrenç canavarlara sahip olabilirsiniz.


1
Harika linkler! Ancak, onları tıkladım ve gözlerim biraz erimiş. : p
Komünist Ördek

5
@ Komünist Ördek: Bu zayıf kısımdı. Şimdi gözlerin daha güçlü.
doppelgreener

3
@ Komünist Ördek Tavşan deliğinden daha yeni çıktın ve aşağı doğru bir looooooong gidiyor;)
Ray Dey

Biraz sinirleniyorum XNA gerçekten MP3 dosyalarıyla (.WAV ile yapabilirim, ama bu çok büyük) can sıkıcı olan bu şeylerden hiçbirini yapmama izin vermiyor. Ama hey, harika kaynaklar ve baş ağrısı için çok teşekkür ederim: D
Komünist Ördek

1
@Kay bağlantıyı güncelledi
Ray Dey


0

Spektral enerji varyasyonunun analizinden elde edilen veriler bu tür haritaları oluşturmak için yeterlidir. Burada sorun, işlenecek çok fazla veri olması durumunda olabilir: ne tür verilerin kullanıldığı değil, nasıl kullanıldığı.

Bazı videoları gördükten sonra, verinin özellik-etki alanında (zaman-etki alanı -> frekans-etki alanı -> özellik-etki alanı) daha da taşındığına inanmaya başladım. Yazılım, spektral enerji değişikliklerini kullanarak veri üretir ve bilinen özellikleri tanımaya çalışır, daha sonra haritayı ayarlamak için özellikler hakkındaki bilgileri kullanır. Tanıma kümeleme, maksimum olasılık, sinir ağları, Genetik algoritma vb. İle yapılabilir.

Tanıma tamamladıktan sonra, benzer infomations vardır: nerede bulundu ise özellik zaman ve frekansa ne tür featuature ait bulunursa, hız özelliği vektörü hareketli ve benzeri edilir; Daha iyi tanıma algoritmaları yapma, daha fazla özellik ailesi tanıma, daha fazla veri çıkarma, bu verileri "işlemek" için yeni yollar bulma gibi geliştirmeler için yer bırakarak bu verileri bir harita oluşturma algoritmasını beslemek için kullanabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.