ฉันจะทำซ้ำเอฟเฟกต์วาร์ปจาก Geometry Wars ได้อย่างไร


12

ฉันพยายามที่จะบรรลุผลวิปริตที่คุณเห็นในเกมเช่นเรขาคณิตสงคราม

สกรีนช็อตของ Geometry Wars รวมถึงเอฟเฟกต์วาร์ป

ใครช่วยอธิบายสิ่งที่เกิดขึ้นที่นี่? ฉันรู้สึกเหมือนว่าแกน z ของกริดนั้นถูกควบคุมในทางใดทางหนึ่งโดยโปรแกรมเมอร์ แต่อาจมีสมการทางคณิตศาสตร์ที่รู้จักกันบ้างเพื่อให้ได้ผลการแปรปรวนที่ถูกต้องจริงหรือ

แก้ไข: เพื่อให้เฉพาะเจาะจงมากขึ้นฉันหมายถึงการแปรปรวนของตาราง ลักษณะทุกอย่างถูกดึงเข้าหาแกน z เชิงลบแล้วสะท้อนกลับอย่างไร


1
คุณหมายถึงฉากหลังโค้งงอหรือไม่? ในขณะที่มันเป็นGeometry Warsมีความสับสนวุ่นวายมากมายในสกรีนช็อตซึ่งทำให้ฉันเกาหัวของฉันซักพักแล้วลองเล่าสิ่งที่คุณพูดถึง
เกรซหมายเหตุ

ใช่ฉากหลังโค้งงอ
Joey Green

คำตอบ:


12

การใช้ระบบสปริงแบบง่าย ๆ 10 นาที (หรืออย่างนั้นเขาก็พูดในบล็อกของเขา;)) ระบบสามารถจัดการการแปรปรวนหลายอย่างและสิ่งอื่น ๆ ที่บิดเบือนตาราง

อัปเดตเพื่อเพิ่มรายละเอียดเพิ่มเติมเล็กน้อย:

รายละเอียดอื่น ๆ จากการสัมภาษณ์ที่เคยโฮสต์บนเว็บไซต์ Bizarre Creations (ไซต์นั้นหายไปเนื่องจากการปิด บริษัท ) มีคำถาม:

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


1

ฉันไม่รู้ว่ามีวิธีที่ "ถูกต้อง" หรือไม่ แต่น่าจะเป็นแค่การแปลงเชิงเส้นที่น่าพึงพอใจที่ประยุกต์ใช้กับการตกหล่นที่คำนวณจากระยะทางจนถึงจุดหนึ่ง

ดังนั้นสำหรับองค์ประกอบใด ๆ ที่คุณทำงานด้วยคุณจะ:

  • ค้นหาระยะทางสู่ศูนย์กลางของวิปริต (d)
  • คำนวณ 1 - d / ระยะทางสูงสุดของเอฟเฟกต์ที่คุณต้องการ (i สำหรับความเข้ม)
  • ยึดที่ [0-1]
  • เปลี่ยนองค์ประกอบโดย lerp (identity, transform, i)

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

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

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


เยี่ยมมากฉันจะลองทำดู อัลกอริทึมที่คุณอธิบายนั้นเป็นเอฟเฟกต์สปริงหรือไม่?
Joey Green

ไม่ฉันไม่ได้อธิบายว่ามันจะแตกต่างกันอย่างไรเมื่อเวลาผ่านไปดังนั้นไม่ใช่ฤดูใบไม้ผลิ ฉันแค่อธิบายวิธีทำให้รูปร่างผิดเพี้ยนที่คุณตามมา การสร้างภาพเคลื่อนไหวในสไตล์ GW จะต้องเพิ่มปัจจัยอื่นขึ้นอีกนั่นคือการปรับเปลี่ยน i เมื่อเวลาผ่านไป ลองใช้ทุกสิ่งและควรทำให้ชัดเจนว่าคุณสามารถปรับขนาด i เพื่อผ่อนคลายหรือทำให้เอฟเฟ็กต์ของคุณเข้มข้นขึ้น ส่งคลื่นไซน์ผ่านค่าการมอดูเลตหรือตีกลับเหมือนสปริง 1D และคุณจะเด้งได้อย่างมีประสิทธิภาพ อีกครั้งเมื่อคุณมีสายรัดที่มีตัวแปรมากมายลอยอยู่รอบ ๆ การทดลองจะเป็นเพื่อนของคุณ
Chris Subagio
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.