เกมที่ใช้ระบบเสียงเช่น Audiosurf และ Beat Hazard ทำงานอย่างไร


43

หมายเหตุ: ฉันไม่ได้ถามวิธีการโคลนหนึ่งในนั้น ฉันถามเกี่ยวกับวิธีการทำงาน

ผมมั่นใจว่าทุกคนเห็นเกมที่คุณใช้ไฟล์เพลงของตัวเอง (หรือคนที่ให้) และเกมผลิตระดับขึ้นอยู่กับพวกเขาเช่นAudiosurfและตีอันตราย

นี่คือวิดีโอของ Audiosurf เพื่อแสดงให้เห็นว่าฉันหมายถึงอะไร

หากคุณให้เพลงเฮฟวีเมทัลคุณจะได้รับชุดของอุปสรรคศัตรูและประสบการณ์เกมที่แตกต่างอย่างสิ้นเชิงจาก Vivaldi

สิ่งที่ฉันสนใจคือเกมเหล่านี้ทำงานอย่างไร ฉันไม่รู้เกี่ยวกับเสียง (ดีมากด้านข้อมูล) แต่พวกเขาจะประมวลผลเพลงให้เข้าใจได้อย่างไรเมื่อมีการปรับตัวหรือเมื่อเร่งความเร็วขึ้น ฉันเดาว่าพวกเขาสามารถป้อนค่าระดับเสียง (สมมติว่าสิ่งต่าง ๆ เหล่านั้นมีอยู่ในไฟล์เสียง) เพื่อสร้างระดับ แต่มันจะไม่อธิบายอย่างเต็มที่

ฉันกำลังมองหาคำอธิบายลิงก์บางอย่างไปยังบทความเกี่ยวกับสิ่งนี้ (ฉันแน่ใจว่ามีคำหรือเงื่อนไข) หรือแม้แต่การใช้งานโอเพนซอร์ซของสิ่งนี้ ;-)

แก้ไข: หลังจากการค้นหาและความช่วยเหลือเล็กน้อยฉันพบเกี่ยวกับFFT (การแปลงฟูริเยร์เร็ว) นี่อาจเป็นขั้นตอนในทิศทางที่ถูกต้อง แต่มันเป็นสิ่งที่ไม่สมเหตุสมผลสำหรับฉัน ... หรือเข้ากับความรู้ทางฟิสิกส์ของฉันเกี่ยวกับคลื่น


1
ฉันเพียงแค่แก้ไขเพื่อเพิ่มข้อมูลบางอย่างเกี่ยวกับ FFTs ความหวังที่จะช่วยให้ :)
เรย์ Dey

คำตอบ:


30

คำที่คุณกำลังมองหาคือการประมวลผลสัญญาณ / การวิเคราะห์มีจำนวนมากของเทคนิคที่เกี่ยวข้อง แต่พื้นฐานหนึ่งที่เกมเหล่านั้นทำให้การใช้งานคือมีจังหวะการตรวจสอบ สิ่งนี้พยายามที่จะคำนวณจังหวะของเพลงและจังหวะในการวัดและวางอุปสรรคในระยะห่างที่เหมาะสมเพื่อให้สอดคล้องกับจังหวะการเต้นแต่ละครั้ง

วิธีการที่เกมรู้ว่าเมื่อใดที่ "เตะเข้า" ฯลฯ สามารถอยู่ในช่วงจากการที่ง่ายมากและการวัดแอมพลิจูด (ระดับเสียง) ของรูปคลื่นหรือสิ่งที่ซับซ้อนมากขึ้นเช่นการแยกปริมาณของความถี่ที่แน่นอนและการวัดระดับเสียง

หากคุณสนใจให้ดูที่การประมวลผลสัญญาณดิจิตอลเพื่อดูว่าคุณสามารถวิเคราะห์รูปแบบคลื่นซึ่งเป็นสิ่งที่เกมเหล่านี้กำลังทำอยู่ในขั้นตอนการโหลด

ลิงค์เหล่านี้ดีสำหรับคุณในการเริ่มต้น:


ทฤษฎีการประมวลผลเสียงเบื้องต้นและเทคนิคของดนตรีอิเล็กทรอนิกส์
เบื้องต้นตัวกรองดิจิทัล

หวังว่าจะช่วย :)

-ray

แก้ไข: ฉันเพิ่งเห็นการแก้ไขของคุณเกี่ยวกับการแปลงฟูริเยร์และคิดว่าฉันจะเพิ่มความเข้าใจบางอย่างลงไปแม้ว่าฉันจะไม่เชี่ยวชาญในเรื่องนี้!

FFT เป็นวิธีการคำนวณการแปลงฟูริเยร์ที่แท้จริงของรูปคลื่น โดยทั่วไปถ้าคุณโหลดขึ้นไฟล์เสียงในความกล้าคุณจะเห็นรูปคลื่นที่มีระยะเวลาตามด้านบนนี้เป็นที่รู้จักกันเป็นโดเมนเวลา FFT จะแปลงสัญญาณจากโดเมนเวลาเป็นโดเมนความถี่ (โดยทั่วไปคือความถี่ทั้งหมดที่เกิดขึ้นภายในเสียง)

การแปลงนี้มีประโยชน์สำหรับการวิเคราะห์สเปกตรัม ในตัวอย่างเกมหากคุณต้องทำการแปลงฟูริเยร์คุณสามารถคำนวณจำนวนความถี่ที่เกิดขึ้นในเสียงได้อย่างง่ายดายและจากนั้นคุณสามารถเพิ่มเอฟเฟกต์ภาพ Twinkly ดาวหรือสิ่งที่เกี่ยวข้องกับเสียงความถี่สูงโดยทั่วไป สำหรับความถี่ต่ำคุณสามารถมีมอนสเตอร์ขนาดใหญ่ตะกละเคลื่อนไหวตามจังหวะเสียงเบส ฯลฯ


1
ลิงค์ที่ยอดเยี่ยม! อย่างไรก็ตามฉันคลิกพวกเขาและดวงตาของฉันละลายเล็กน้อย : p
The Duck Communist

5
@ The Communist Duck: นั่นเป็นส่วนที่อ่อนแอ ตอนนี้ดวงตาของคุณแข็งแกร่งขึ้น
doppelgreener

3
@ The Communist Duck คุณเพิ่งก้าวลงไปอีกหลุมกระต่ายและมันลงทาง looooooong;)
Ray Dey

ฉันรำคาญ XNA ไม่อนุญาตให้ฉันทำสิ่งเหล่านี้ด้วยไฟล์ MP3 (ฉันทำได้ด้วย. WAV ฉันคิดว่า แต่มันใหญ่มาก) ซึ่งน่ารำคาญ แต่เดี๋ยวก่อนขอบคุณมากสำหรับทรัพยากรที่ดีและปวดหัว: D
The Communist Duck

1
@Kay ได้อัปเดตลิงก์
Ray Dey

6

นี่คือชุดการสอนที่ดีเจ็ดตอนในหัวข้อนี้โดย Badlogic Games มันครอบคลุมทุกอย่างตั้งแต่พื้นฐานจนถึงการนำไปใช้

http://www.badlogicgames.com/wordpress/?cat=18

พวกเขาพยายามเลียนแบบอัลกอริทึม Audiosurf ด้วยรหัสและทั้งหมด


0

ข้อมูลที่มาจากการวิเคราะห์ของการเปลี่ยนแปลงพลังงานสเปกตรัมนั้นเพียงพอที่จะสร้างแผนที่ประเภทนี้ ปัญหาอาจเกิดขึ้นได้หากมีข้อมูลมากเกินไปที่จะดำเนินการ: ไม่ใช่ชนิดข้อมูลที่ใช้ แต่เป็นอย่างไร

หลังจากที่ได้เห็นวิดีโอบางอย่างฉันเริ่มเชื่อว่าข้อมูลจะถูกย้ายไปยังเพิ่มเติมในโดเมนคุณสมบัติ (โดเมนเวลา -> ความถี่โดเมน -> โดเมนคุณสมบัติ) ซอฟต์แวร์สร้างข้อมูลโดยใช้การเปลี่ยนแปลงพลังงานสเปกตรัมและพยายามจดจำคุณสมบัติที่รู้จักจากนั้นจะใช้ข้อมูลเกี่ยวกับคุณสมบัติในการตั้งค่าแผนที่ การรับรู้สามารถทำได้โดยการจัดกลุ่ม, โอกาสสูงสุด, เครือข่ายประสาทเทียม, อัลกอริทึมทางพันธุกรรมและอื่น ๆ

หลังจากเสร็จสิ้นการรับรู้ที่คุณมีข้อมูลรูปภาพที่ชอบ: ที่คุณลักษณะหากพบอยู่ในเวลาและความถี่ในสิ่งที่ประเภทของ featuature พบที่ความเร็วเวกเตอร์คุณลักษณะที่มีการเคลื่อนไหวและอื่น ๆ ; คุณสามารถใช้ข้อมูลเหล่านี้เพื่อป้อน algorimth การสร้างแผนที่ออกจากห้องเพื่อการปรับปรุงเช่นการสร้างอัลกอริทึมการรู้จำที่ดีขึ้นรู้จักตระกูลของฟีเจอร์ต่าง ๆ ดึงข้อมูลมากขึ้นค้นหาวิธีใหม่ในการ "เรนเดอร์" ข้อมูลเหล่านี้เป็นต้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.