ฉันคิดว่ามันค่อนข้างเป็นที่ยอมรับในระดับสากลว่าการแมปแท่งอนาล็อกกับความเร็วในการหมุนของตัวละครนั้นไม่ดีพอที่จะทำให้เกมคอนโซลคนแรกรู้สึกดี
ดังนั้นกระบวนทัศน์การป้อนข้อมูลอะไรที่ทำให้ FPS ที่ทันสมัยบนคอนโซลทำงานได้ดี?
ฉันคิดว่ามันค่อนข้างเป็นที่ยอมรับในระดับสากลว่าการแมปแท่งอนาล็อกกับความเร็วในการหมุนของตัวละครนั้นไม่ดีพอที่จะทำให้เกมคอนโซลคนแรกรู้สึกดี
ดังนั้นกระบวนทัศน์การป้อนข้อมูลอะไรที่ทำให้ FPS ที่ทันสมัยบนคอนโซลทำงานได้ดี?
คำตอบ:
ฉันไปเซสชั่น GDCในปีนี้นำเสนอโดยคนที่ต่อย sucker พูดคุยถึงวิธีที่พวกเขาจัดการจุดมุ่งหมายและการเคลื่อนไหวเพื่อช่วยเหลือในครอบครัว ความเข้าใจของฉันคือ Halo ใช้ระบบที่คล้ายกันมากสำหรับการช่วยเล็งและนี่คือพื้นฐาน:
มีสองสิ่งที่ทำให้การเล็ง "รู้สึกดี" คือคุณต้องรู้สึกว่าคุณสามารถควบคุมได้และคุณต้องรู้สึกว่าเกมไม่ได้โกหกคุณ การปรับการรับรู้ของเกมเกี่ยวกับทิศทางการป้อนข้อมูลและการกำหนดเวลาปุ่มภายในความคลาดเคลื่อนเป็นวิธีที่ยอดเยี่ยมในการทำเช่นนี้เพราะมันจะไม่ส่งผลให้เกิดสถานการณ์ที่เป็นไปไม่ได้ที่การเล็งอัตโนมัตินั้นทำได้ดีกว่า หากคุณพยายามที่จะแก้ปัญหาแบบเฉพาะกิจหลังจากการประมวลผลอินพุตเสร็จสมบูรณ์คุณจะต้องจบลงด้วยสถานการณ์ร่างบางสถานการณ์ที่ผู้เล่นรู้สึกว่าพวกเขาควบคุมไม่ได้
มีคำตอบที่ดีอยู่ที่นี่ ฉันต้องคิดออกเองสำหรับโครงการที่ฉันกำลังทำอยู่ แต่ก็มาถึงข้อสรุปเดียวกับพวก Sucker Punch (และฉันคิดว่าฉันคิดว่าฉันคิดอะไรแปลก ๆ ขึ้นมา Baww :()
ฉันคิดว่ามันมีประโยชน์ที่จะพิจารณาคนแรกของคุณทั้ง 360x180 "ภาพพาโนรามา" เป็น "เขตข้อมูลการเร่งความเร็ว" เป้าหมายที่ถูกต้องทั้งหมดจะสร้างบ่อน้ำแรงโน้มถ่วงซึ่งโค้งงออินพุตของผู้เล่น (เฉพาะซับเล่ย์) เพื่อให้การเคลื่อนไหวของมาโคร (เปลี่ยนเป็นใบหน้าเป้าหมาย) ให้ความรู้สึกราวกับว่าเป็นเส้นทาง "greased" อย่างไรก็ตามนี่ไม่ได้ส่งผลกระทบต่อ crosshair ตลอดเวลา - เฉพาะเมื่อเดลต้าของผู้เล่นถูกชี้ด้วยความลาดชันของบ่อน้ำ (ตามเดิม) นั่นเป็นกุญแจสำคัญจริง ๆ - คุณจะให้ความเร็วรอบพิเศษนี้เฉพาะเมื่อผู้เล่นหันไปหาเป้าหมายอย่างคร่าวๆ นั่นเป็นข้อสรุปเดียวที่คุณสามารถทำได้จากอินพุตของผู้เล่น
มากขึ้นและคุณจะได้รับ "ouija effect" ที่เห็นได้ชัดมากเกินไป คุณต้องการตรงกันข้ามกับ ouija: ในกรณีที่บอร์ด ouija เคลื่อนไหวโดยไม่ได้รับรู้แจ้งเนื่องจากผู้ใช้ไม่มีความรู้อย่างมีสติคุณต้องการให้เล็งของผู้เล่นเคลื่อนที่อย่างชาญฉลาด มันเป็นเคล็ดลับมายากล
ใช้ผลิตภัณฑ์ dot ของ pitch / yaw ของผู้เล่นที่เปลี่ยน delta กับ pitch / yaw delta จาก crosshair ไปยังแต่ละเป้าหมาย ยึดค่าระหว่าง 0 และความเร็วสูงสุด (ดังนั้นคุณจะไม่สนใจอินพุตในขณะที่ผลักออกไปจากเป้าหมาย) จากนั้นใช้ฟังก์ชันระยะทางเป็นตัวปรับเปลี่ยน falloff
ฉันพบว่าการเพิ่มโบนัส "การเคลื่อนไหวของมาโคร" เมื่อ crosshair vs. เดลต้าเชิงมุมมีขนาดใหญ่ (นั่นคือเมื่อศัตรูอยู่ข้างหลังคุณ) ช่วยด้วยปัญหาตัวควบคุมคอนโซลแบบคลาสสิกที่ไม่สามารถหันหน้าเข้าหาได้เร็ว ในแง่ของ "ตัวเลือกการกำหนดเป้าหมาย" หากคุณถูกโจมตีจากด้านหลังและไม่มีเป้าหมายอยู่ข้างหน้าคุณภาพพาโนรามาข้างหน้าของคุณคือ "พื้นที่ว่าง" และคุณอาจให้ผู้เล่นสามารถบินข้ามได้ ด้วยความเร็วสูงด้วยเคอร์เซอร์ และหากมีเป้าหมายข้างหน้าอยู่ดีพวกเขาก็อาจจะอยู่ในใจของผู้เล่นสูงกว่าและเนื่องจากการทำให้หมาด ๆ / การเล็งที่หนืดจะไม่ได้รับผลกระทบจากแรงมาโครที่ไม่รุนแรง
ไม่จำเป็นมากสำหรับคุณที่จะลดความไวเมื่อผู้เล่นพยายามที่จะหันหน้าหนี จากวัตถุ (ซึ่งจะส่งผลให้รู้สึกว่าพยายาม "หลบหนี" วงโคจรของเป้าหมาย) การใช้ Dampening ใช้เพื่อการเล็งที่แม่นยำมากขึ้นและเพื่อหยุดการแก้ปัญหาการเล็งของผู้เล่นเมื่อย้ายจากมาโครไปสู่ความแม่นยำระดับไมโคร - มันเป็นสิ่งที่น่ากลัวที่สุด: ผู้เล่น (โดยเฉพาะสามเณร) มีแนวโน้มที่จะใช้ เพื่อทำสิ่งต่างๆมากมายสำหรับพวกเขา
เป้าหมายที่ชัดเจนคือตัวชดเชยการเคลื่อนไหวแบบสัมพัทธ์ ดูความแตกต่างระหว่างมุมกับเป้าหมายของคุณ (จากกล้องไม่ใช่จากต้นกำเนิดเอนทิตี), เฟรมนี้และเฟรมสุดท้าย ดูว่าคุณกำลังเล็งไปที่เป้าหมายมากแค่ไหน เพื่อหลีกเลี่ยงเอฟเฟกต์ ouija เมื่อไม่มีการป้อนข้อมูลของผู้ใช้ให้ตรวจสอบการโก่งตัวของแท่งไม้: ดูว่าคุณมีการเคลื่อนไหวทางกายภาพ (การกระตุ้นด้วยก้านซ้าย) หรือหากมีการเล็ง "กับ" ทิศทางของเป้าหมาย เพิ่มขั้นตอนการหันเห / ระยะห่างของเดลต้า * การเล็งใกล้ * สูงสุด (การเลื่อนความยาวความยาวความยาว) สำหรับการเล็งที่เป็นพื้นฐาน
ประเด็นที่เกิดความสับสนในเป้าหมาย (เช่นเป้าหมาย strafes ในมุมมองของคุณในขณะที่คุณกำลังเล็งไปที่สิ่งที่อยู่ข้างหลัง "ขโมย" การโฟกัสของคุณ) เพียงแค่ติดตามเป้าหมายของคุณและ "ความร้อน" เพียงครั้งเดียว มุ่งเป้าไปที่. จากนั้นคูณส่วนประกอบการหน่วงและเหนียวด้วยพารามิเตอร์ความร้อนนี้เพื่อให้เป้าหมายที่ไม่ได้รับความร้อนถูกละเว้น หากผู้เล่นต้องการความช่วยเหลือในเป้าหมายอื่นพวกเขาจะมุ่งไปที่มันด้วยตนเองและอย่างรวดเร็วนั่นจะกลายเป็นเป้าหมายที่ร้อนแรงที่สุดในขณะที่ลืมไปก่อนหน้านี้
นอกจากนี้เรายังสร้างเป้าหมายการกำหนดเป้าหมาย "phantom" เพื่อช่วยให้คุณหันหลังให้กับสิ่งที่ไม่น่าสนใจ (เช่นหันหน้าเข้าหากำแพง - ไม่จำเป็นต้องมองไปรอบ ๆ เพื่อมองหาพื้นผิวที่ว่างเปล่าแบบโคลสอัพ เกี่ยวกับ - คุณสามารถใช้สิ่งนี้กับสิ่งที่น่าสนใจสำหรับผู้เล่นที่จะชี้ไปที่ไม่ว่าจะเป็นถังระเบิดวัตถุโต้ตอบ (bioshock ใช้การหน่วงเมื่อเล็งไปที่วัตถุที่สามารถโต้ตอบได้ในระยะใกล้ ... แต่ไม่ได้เล็งอย่างเหนียวแน่น ฉันไม่คิดว่า) เมื่อคุณตระหนักว่านี่เป็นเพียงการเสริมแนวคิดหลักของการเล็งคุณรู้ว่ามันไม่ได้เกี่ยวกับการเล็งเล็งเท่านั้น แต่เป็นการปรับปรุงการใช้งานทั่วไปที่ป้อนเข้าสู่กลไกใด ๆ ที่พึ่งพาการเล็ง และใน FPS จริงๆ
สิ่งที่ไม่สำคัญกับสิ่งนี้คือการปรับจูน ใช้เวลานานในการทำให้ถูกต้องและจัดการกับการรบกวนเป้าหมายและปัญหาที่เกิดขึ้นกับเป้าหมายที่อยู่ในระยะใกล้จน "โซนการกำหนดเป้าหมาย" ของพวกเขาพาโนรามาของผู้เล่น
โอ้มนุษย์ฉันควรเข้านอน ขออภัยหากคณิตศาสตร์บางอย่างไม่ชัดเจน มันช้ามาก แต่ฉันก็ตื่นเต้นที่ได้อ่านบทความนี้
เพื่อให้คุณรู้สึกดีกับคอนโซลคุณจะต้องทำการประมวลผลบางอย่าง
ก่อนอื่นเราแปลงอินพุตเชิงเส้นที่มาจากแท่งอนาล็อกเป็นเส้นโค้งที่ให้ความไวมากขึ้นรอบจุดศูนย์กลางแท่งและความไวที่ขอบน้อยกว่า สิ่งนี้สามารถทำได้ด้วยเครื่องมือขนาดเล็กที่ช่วยให้คุณสร้างและมองเห็นเส้นโค้งเหล่านี้และคายรหัส (http://www.arachnoid.com/polysolve/)
ในขั้นตอนที่สองเราใช้การเสริมแบบบางประเภท มันจะเขี่ยหลังจากผ่านไประยะเวลาสั้น ๆ เมื่ออินพุทแบบแท่งเป็นอย่างน้อย 97% และเพิ่มการหมุนของกล้องเมื่อเวลาผ่านไป เราจัดการแกน X และ Y อย่างอิสระ ที่ช่วยให้คุณสามารถเพิ่มช่วงแท่งอินพุตได้ 97% แรกสามารถใช้สำหรับการปรับที่ค่อนข้างดี แต่เนื่องจากความเร่งคุณจึงสามารถเคลื่อนไหวได้อย่างรวดเร็วเช่นกัน
หากคุณมี FOV ของกล้องที่แตกต่างกัน (เช่นเมื่อเล็ง / ซูม) จำเป็นต้องมีปัจจัยที่ปรับความเร็วการหมุนของกล้องโดย FOV ที่ใช้งานอยู่ในปัจจุบัน
เทคนิคที่ดีอื่น ๆ ที่ทำให้ชีวิตผู้เล่นง่ายขึ้นคือ "การตั้งศูนย์อัตโนมัติ" ระดับนี้จะทำให้ระยะห่างระหว่างกล้องช้าลงไปถึงขอบฟ้าเมื่อไม่มีการป้อนข้อมูล ช่วยให้มุ่งเน้น
สิ่งที่ต้องระวังในคอนโซลก็คือโซนที่ตาย เมื่อคอนโทรลเลอร์มีอายุมากขึ้นแท่งอนาล็อกก็จะเริ่มคลายความแม่นยำและมีแนวโน้มที่จะให้สัญญาณ "เท็จ" เพื่อป้องกันสิ่งนี้คุณจะต้องไม่สนใจข้อมูลอินพุตของแท่งแรก (สูงถึง 20%)
นอกจากนี้เรายังได้ทำการทดลองบางอย่างด้วยการเล็งตามแรงเสียดทานตามที่กล่าวไว้ก่อนหน้านี้ (เร่งเร้าเข้าหาศัตรูบนหน้าจอชะลอความเร็วลงเมื่อเคลื่อนที่ออกไป) แต่เรามีความรู้สึกว่าสิ่งนี้เป็นสิ่งที่ผู้เล่นไม่สามารถสังเกตเห็นได้ ข้อเสียคือคุณไม่มีการเคลื่อนไหวของลูกเบี้ยวที่ราบรื่นอีกต่อไปเมื่อมีศัตรูอยู่เป็นแถว เราเลือกใช้เอฟเฟกต์ "กระสุนแม่เหล็ก" ซึ่งกระสุนมักจะพุ่งเข้าหาศัตรูในระยะหนึ่ง อย่างไรก็ตามคุณต้องระวังที่นี่ด้วย
สำหรับเกมคอนโซลคุณจะต้องทำงานกับแอนะล็อกสติ๊ก ในขณะที่แท่งอนาล็อกให้ความรู้สึกเป็นธรรมชาติสำหรับเกมสามมิติมันน่ากลัวในช่วงเวลาที่ยากลำบากซึ่งคุณต้องเล็ง ทางออกที่ดีที่สุดคือการทำให้ไม้ถูกต้องในช่วงเวลาเหล่านี้
นี่เป็นวิธีง่ายๆ: เมื่อเล็งเล็งไปที่ศัตรูความไวจะลดลง สิ่งนี้จะช่วยให้ผู้เล่นมีความแม่นยำยิ่งขึ้นด้วยช็อตของเขา
นอกจากนี้คุณยังสามารถใช้ "เป้าหมายที่ชัดเจน" เรื่องนี้น่าพอใจมากถ้ามีศัตรูหลายคนและผู้เล่นจะต้องฆ่าศัตรูที่อยู่ข้างหน้าพวกเขาทันที
โดยส่วนตัวฉันชอบกระบวนทัศน์ "ล็อค" สำหรับเกมยิงคอนโซล คือกดปุ่มเพื่อล็อคศัตรูไว้ด้านหน้าคุณ (กดหลาย ๆ ครั้งเพื่อวนรอบศัตรูหลายครั้ง) จากนั้นเป้าหมายของคุณจะตามพวกเขาไปโดยอัตโนมัติ FPS แรกที่ใช้งานได้ซึ่งฉันคิดได้ (ฉันแน่ใจว่ามีคนอื่นมาก่อน) คือ Metroid Prime บน GC ทำให้ความไม่เที่ยงตรงของแท่งอะนาล็อกไม่สม่ำเสมอ ... ไม่แน่ใจว่ามันจะแปลไปยังผู้เล่นหลายคนได้อย่างไร
ในขณะที่เราอยู่ใน Metroid Prime ฉันก็ชอบเทคนิคที่พวกเขาใช้สำหรับ platformy บิตที่มุมมองจะลดลงเล็กน้อยโดยอัตโนมัติเมื่อคุณกระโดด มันบอบบาง แต่มันทำให้การควบคุมรู้สึกเป็นธรรมชาติมากขึ้น