วิธีใช้“ สัญลักษณ์แสดงเวลา” ในเกมที่มีผู้เล่นหลายคนได้อย่างไร?


29

ฉันไม่เคยเห็นคุณลักษณะดังกล่าวมาก่อน แต่ควรให้โอกาสการเล่นเกมที่น่าสนใจ

ใช่ในสภาพแวดล้อมที่มีผู้เล่นหลายคน / เรียลไทม์ (ลองจินตนาการถึง FPS) ฉันจะใช้เอฟเฟกต์การเคลื่อนที่ช้า / กระสุนได้อย่างไร

บางสิ่งบางอย่างเช่นภาพลวงตาสำหรับผู้เล่นที่กำลังดูหมิ่น ดังนั้นทุกคนเห็นเขา "เรียลไทม์" แต่เขาเห็นทุกอย่างช้าลง

ปรับปรุง

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

นอกจากนี้ยังมีความเป็นไปได้ที่ผู้เล่นสองคนสามารถเปิดใช้งานสัญลักษณ์แสดงหัวข้อย่อยในเวลาเดียวกันได้

นอกจากนี้:

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

ในขณะเดียวกันที่นี่กับทีมของเราที่เรากำลังคิดเกี่ยวกับเรื่องนี้เช่นกันเมื่อทฤษฎีของเราจะถูกสร้างขึ้นมาฉันจะแบ่งปันที่นี่

เป็นไปได้ไหม ดังนั้นคำถามที่ว่า "เป็นไปได้ยังไง" ได้รับคำตอบแล้วถึงเวลาที่จะหาทางออกที่ดีที่สุดแล้ว

ฉันกำลังรักษา "คำตอบ" ไว้จนกว่าจะมีสิ่งที่ยอดเยี่ยมเกิดขึ้นเช่นทฤษฎีต้นแบบที่มีบางสิ่งที่ใกล้เคียงกับโค้ดหลอกทำงาน

สิ่งที่นักฟิสิกส์และนักปรัชญาพูด:

ลิงก์มีไว้เพื่อคุณที่สนใจเนื่องจากหัวข้อถูกปิด

https://physics.stackexchange.com/questions/17118/time-traveling-and-time-dilation-within-a-multiplayer-videogame

https://philosophy.stackexchange.com/questions/1704/seeing-everything-in-slow-motion-but-being-real-time

เงื่อนไขที่ฉันคิดเมื่อเขียนคำถามในเว็บไซต์ฟิสิกส์ (คัดลอก):

  1. ผู้เล่นที่อยู่ภายใต้เอฟเฟ็กต์ของสโลว์โมชั่นมีข้อได้เปรียบในการทำการกระทำที่แม่นยำยิ่งขึ้น (การยิงการเคลื่อนไหว ฯลฯ ) เนื่องจากเห็นทุกอย่างในจังหวะที่ช้ากว่ามาก
  2. การกระทำของเขาควรส่งผลกระทบต่อผู้เล่นอื่นแบบเรียลไทม์
  3. ผู้เล่นมองไปที่ผู้เล่นที่ได้รับผลกระทบของเราไม่เห็นความแตกต่างใด ๆ ยกเว้นว่าพวกเขาสามารถสัมผัสกับการกระทำที่เขาได้ทำ (เช่นผู้เล่นได้รับการยิง / ได้รับผลกระทบหลบจรวด)
  4. เมื่อผู้เล่นออกมาจากเอฟเฟกต์นี้เขาก็จะดำเนินต่อไปในจังหวะเดียวกันตามปกติ (ถ้าเป็นไปไม่ได้ฉันคิดว่าเขาจะต้องทนทุกข์จนกว่าจะถึงเวลาซิงค์)

การอ้างอิงเกี่ยวกับเวลาแสดงหัวข้อย่อย (การเคลื่อนไหวช้า):

น่าเสียดายที่การใช้งานส่วนใหญ่เป็นผู้เล่นคนเดียวเท่านั้น

http://www.gamesradar.com/a-videogame-history-of-bullet-time/


3
สิ่งนี้ประสบความสำเร็จใน MMORPG The Matrix Online คุณมีเวลากระสุนในขณะที่ต่อสู้กับฝ่ายตรงข้ามเมื่อคุณเข้าสู่ "Interlock" การต่อสู้กับพวกเขา สิ่งนี้ทำกับฝ่ายตรงข้ามทั้ง PvE และ PvP คนอื่น ๆ นอก Interlock เห็นว่า "ความเร็วตามเวลาจริง" แสดงความคิดเห็นแทนการตอบเพราะฉันไม่มีความเชี่ยวชาญหรือความรู้ที่จะอธิบายว่าพวกเขาทำอย่างไรฉันแค่รู้ว่าสิ่งที่เกิดขึ้นจากมุมมองของผู้เล่น
FallenAngelEyes

3
สิ่งนี้ยังมีอยู่ใน FEAR Combat ในโหมดผู้เล่นหลายคนมีโหมดเกมชื่อ SloMoDeathmatch เกมนี้เป็นเกมฟรีหากฉันจำได้ถูกต้องดังนั้นหากคุณต้องการลองดาวน์โหลดและดูว่ายังมีเซิร์ฟเวอร์เหลืออยู่อีกหรือไม่
alextsc

3
ฉันไม่คิดว่าคุณกำลังรอ pseudocode กำลังช่วยตอบคำถาม เมื่อการออกแบบที่คุณต้องการได้รับการเสริมความแข็งแกร่งให้เพียงพอรหัสควรชัดเจน
Tetrad

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

4
-1 สำหรับ "ฉันยังคง 'ตอบ' จนกว่าจะมีบางสิ่งที่ดีเกิดขึ้นเช่นต้นแบบที่มีบางสิ่งบางอย่างใกล้เคียงกับรหัสหลอกทำงาน" อย่ากระตุก
เทรเวอร์พาวเวลล์

คำตอบ:


22

มันเคยทำมาก่อน :) ลองดูผู้เชี่ยวชาญครึ่งชีวิต mod ที่มีช่วงเวลาสัญลักษณ์เสริมสองแบบที่แตกต่างกัน

แก้ไขเพื่อรวมข้อมูลของ zzzzbov ด้านล่าง

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

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

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


@ Tom IIRC เป็นโอเพ่นซอร์สดังนั้นคุณควรจะเห็นว่าพวกเขาทำได้อย่างไร
Spencer Rathbun

อืมการค้นหาของ Google ไม่ได้แสดงผลลัพธ์ใด ๆ เกี่ยวกับซอร์สโค้ด (รวมถึงข้อมูลจำนวนมากเกี่ยวกับ The Specialists: Source ก็แสดงเช่นกัน) มีลิงค์หรืออะไร?
joltmode

@Tom ฉันคิดว่ามันเป็นบนเว็บไซต์ของพวกเขาซึ่งควรจะเชื่อมโยงในบทความวิกิพีเดีย ถ้าไม่พวกเขาอาจนำมันลงมาเนื่องจากพวกเขาย้ายไปที่เครื่องยนต์ HL2 เมื่อไม่กี่ปีที่ผ่านมา คุณอาจต้องส่งอีเมล Devs เพื่อเข้าถึง แน่นอนฉันก็สามารถล้างได้เช่นกัน
Spencer Rathbun

เว็บไซต์ของพวกเขาไม่ทำงานเช่นกัน ..
joltmode

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

12

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

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

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

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


1
มันอาจขยายได้มากกว่า 1 ต่อ 1 โดยลดความเร็วของคนที่มองเห็นกันและกันแล้วทันทีที่คนอื่นเห็นพวกเขาก็ทำให้พวกเขาช้าลงเช่นกัน วิธีนั้นทุกคนจะได้ความเร็วปกติจนกว่าพวกเขาจะเข้าสู่การต่อสู้
George Duckett

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

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

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

วิดีโอเกม Max Payne ใช้ "สัญลักษณ์แสดงเวลา" เป็นความสามารถในเกม เกม Star Wars Jedi บางเกม (Jedi Knight II แน่นอน) ยังมี "Force Speed" ซึ่งเพิ่มความเร็วให้คุณด้วยการทำให้ทุกคนลดความเร็วลง (ยกเว้นผู้ใช้ Force Speed ​​คนอื่น)
KeithS

8

ความคิดทั่วไป

นี่เป็นปัญหาที่อธิบายได้ดีที่สุดโดยใช้ทฤษฎีสัมพัทธภาพทั่วไป - ยกตัวอย่างความจริงที่ว่าคุณสามารถเห็นผลกระทบของเวลากระสุนโดยเพียงแค่มองผ่านกล้องโทรทรรศน์ของคุณที่ดาวเทียม (สาเหตุของนิวตริโนที่น่าอับอายเดินทางเร็วกว่าปัญหาแสง) - สมการ ที่สามารถแก้ไขได้อยู่ภายใต้เงื่อนไขเหล่านี้; ความหมายมันเป็นไปได้อย่างสมบูรณ์

เกมของคุณจะต้องสามารถจัดการเฟรมอ้างอิงแยกต่างหาก - เท่าที่ฉันรู้ว่าผลกระทบสุทธิของสิ่งนี้จะเป็น ('ผู้เล่น' เป็นคนที่มีเวลาใช้กระสุน):

  • ผู้คนที่เห็นผู้เล่นจะเห็นพวกเขาเคลื่อนไหวอย่างรวดเร็วมาก
  • ผู้เล่นจะเห็นผู้คนเคลื่อนไหวช้ามาก
  • ผู้เล่นจะเคลื่อนเข้าสู่อดีต / อนาคตโดยอ้างอิงกับคนอื่น

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

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

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

อีกแนวคิดหนึ่งคือการใช้สมการทางฟิสิกส์ขั้นพื้นฐาน ( s = d/t) เมื่อผู้เล่นเข้าสู่สัญลักษณ์แสดงหัวข้อย่อยทุกอย่างเล็กลง - ถ้าคุณลดขนาดของทุกอย่างจากมุมมองของเขา แต่ทำให้ความเร็วของเขาเท่าเดิมตามกรอบอ้างอิงเดิมของเขา สองเท่า) สมการจะยังคงสมดุล ลำดับการขับเคลื่อน Warp ในภาพยนตร์อวกาศใช้การขยายพื้นที่นี้เพื่อแสดงเอฟเฟกต์ดังนั้นผู้คนจึงคุ้นเคยกับการดู

ทางออกที่แท้จริง

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

สมมติว่าเซิร์ฟเวอร์นั้นอยู่ก่อนผู้เล่นทุกคนที่ 20ms เมื่อผู้เล่นเข้าสู่ bullet time เปลี่ยนช่วงเวลาการอัพเดทของเขาเป็น 40ms (การจำลองของเขาจะทำงานที่ 40ms time-steps และเซิร์ฟเวอร์จะเข้าคิวการกระทำของเขา 40ms ในอนาคต) - ซึ่งโดยทั่วไปแล้วจะผลักดันในอนาคตโดยอ้างอิงกับผู้เล่นคนอื่น: เพื่อทำให้เขาเคลื่อนไหวได้เร็วขึ้นจากการอ้างอิงของพวกเขาและทำให้พวกเขาเคลื่อนไหวช้าลงจากเขา เมื่อเขาออกจากเวลาแสดงหัวข้อย่อยให้คนอื่นได้รับประโยชน์ 5ms มากกว่าเขาเพื่อให้พวกเขาสามารถเล่น 'ทัน' (นี่คือของคุณtime reboundผู้เล่นสมาร์ทโดยบังเอิญจะกระสุนเวลาในช่วงระยะเวลาการติดตามเหล่านี้) มันอาจดูดีขึ้นเล็กน้อยถ้าคุณจับคู่พาราโบลากับเวลาของเขา - สิ่งนี้จะทำให้สิ่งต่าง ๆ ช้าลงหยุดแล้วค่อย ๆ เร่งความเร็วอีกครั้ง

ข้อจำกัดความรับผิดชอบ: ฉันไม่ใช่นักฟิสิกส์ แต่ฉันมีความรู้เกี่ยวกับสัมพัทธภาพ


4

ผมอยากจะเพิ่มฉัน $ 0.02 ที่ผมนำมาใช้โหมดกระสุนเวลาต้นแบบที่ทำงานในหลายเกมสำหรับวีรบุรุษกว่ายุโรป

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

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

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

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

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

ผลที่ได้ออกมาค่อนข้างดี: ผู้เล่นที่ถูกเล็งโดยกระสุน - เวลาจะชะลอตัวลงอย่างเห็นได้ชัดและมีโอกาส (เล็ก) ที่จะหลบหลีกจากการขนไขว้ของผู้รุกรานและห่างจากกระสุนกระสุนช้า ผู้เล่นที่อยู่ใกล้เคียงสามารถเห็นเครื่องบินและกระสุนหลบกันในแบบสโลว์โมชั่น แต่ไม่ได้รับผลกระทบ

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

น่าเสียดายที่ในขณะที่ใช้งานได้เราไม่เคยมีเวลาทำให้เสร็จสมบูรณ์และขัดคุณลักษณะสำหรับผู้เล่นหลายคนดังนั้นมันจึงถูกทิ้ง (ผู้เล่นเดี่ยวยังคงรักษาคุณลักษณะเช่น "Ace Kill")


2

ไม่ใช่สัญลักษณ์แสดงหัวข้อเวลา แต่อาจสนุก:

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

... ตัวอย่างเช่นหากผู้เล่น A ใช้เวลากระสุนมันทำให้เกิด "ระยะเวลาช้า" รอบตัวเขาดังนั้นเขาจึงสามารถเล็งได้อย่างถูกต้อง แต่ไม่จำเป็นต้องเคลื่อนที่ไปรอบ ๆ เร็วขึ้น - จากนั้นผู้เล่น B ยิงกระสุนที่เขาจะต้อง คาดเดามากว่ากระสุนจะเข้าที่ใดเพราะมันจะช้าลงเมื่อกระสุนเข้าใกล้เขา

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


1
น่าสนใจจริง ๆ แต่ถ้ากระสุนช้าลงยิ่งเข้าใกล้ผู้เล่นเขาควรจะสามารถหลบพวกมันได้
joltmode

ใช่ แต่ใน Braid ผู้เล่นเองก็ช้าลง - เช่นผู้เล่นที่มีความเร็วในการหมุนยังคงเร็วดังนั้นการบล็อคหรือ shields จะง่ายกว่าที่จะติดตั้งเพื่อหลีกเลี่ยงกระสุน แต่การเคลื่อนไหวจริงของการบินผ่านอากาศเพื่อออกไป ทางของกระสุนจะช้าลง ...
Seb

2

ฉันรู้ว่านี่เป็นคำถามเก่า แต่ฉันมีเวลายากที่จะไม่พูดถึงปัญหากับคำตอบส่วนใหญ่ที่เกี่ยวข้องกับสัมพัทธภาพ

ดำเนินการโดยใช้เอฟเฟกต์ตามที่อธิบายไว้ในคำถามไม่สามารถใช้เวลาแสดงหัวข้อย่อยในโหมดผู้เล่นหลายคนได้

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

หลายคนใช้ "การอ้างอิงของผู้เล่น A กับผู้เล่น B" ในคำตอบของคุณ แต่น่าเสียดายที่ไม่มีสิ่งเหล่านี้อยู่จริง ใช่คุณมีผู้เล่นแม้กระทั่งพวกเขาหลายคนและใช่พวกเขาสามารถควบคุมและโต้ตอบกับโลกของพวกเขาและมีมุมมองของตัวเองของเกม แต่มุมมองไม่ใช่จุดอ้างอิงในเวลา: มันเป็นแค่พื้นที่ XYZ ที่คาดการณ์ไว้ใน XY เครื่องบิน.

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

หากต้องการให้ผู้เล่นหนึ่งคนดูการจำลองที่ทำงานด้วยความเร็วหนึ่งและอีกคนหนึ่งดูการจำลองเดียวกันที่ความเร็วอื่นและไม่มี desync ที่เป็นไปไม่ได้ บางสิ่งที่มีให้

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

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


1

มันจะน่าอึดอัดใจมาก ลองจินตนาการว่าคุณเป็นผู้เล่นที่ใช้เวลา 4 วินาทีในการแสดงหัวข้อย่อยในขณะที่คนอื่น ๆ ในเกมใช้เวลา 2 วินาทีในเวลาจริง ตั้งแต่เวลาเดียวกันผ่านไปสำหรับทุกคนในความเป็นจริงคุณจะต้อง "ได้รับกลับ" สองวินาทีนั้นในเกม ดังนั้นในบางครั้งคุณต้อง "ข้าม" เวลาเล่นเกม 2 วินาทีหรือใช้เวลาทำงานเร็วกว่าปกติเล็กน้อยหรืออย่างอื่นที่อาจทำให้เวลากระสุนเป็นของเสีย

นอกจากนี้ยังมีอีกนิดเกี่ยวกับการส่งสิ่งที่คุณทำในเวลา 2 วินาทีในการย้อนเวลากลับไป 1 วินาทีให้กับคนอื่น


1

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

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


0

เพียงแค่ทำให้ทุกคนช้าลง คุณสามารถทำได้โดยการลดความไวของเมาส์


และวิธีนี้แปลเป็น "การเล่นเกมที่สมดุล" ได้อย่างไร : D
joltmode

มันมีความสมดุลแทนที่จะเป็นผู้เล่นที่เร่งความเร็วโลกรอบข้างจะช้าลง ผู้เล่นจะได้เปรียบเหมือนกันถ้าเขาเร่งความเร็ว แต่วิธีนี้น่าเชื่อถือมากขึ้น
Derek

0

สมมติว่าเรามีผู้เล่น A ในเวลาแสดงหัวข้อย่อยและผู้เล่น B แบบเรียลไทม์ และพวกเขาทำสิ่งต่อไปนี้จากมุมมองของผู้เล่น B:

  • เวลา 0s - ผู้เล่นเวลากระสุนเปิดใช้งาน
  • Time 2s - ผู้เล่น A ยิงผู้เล่น B
  • เวลา 3 วินาที - ผู้เล่น B ยิงผู้เล่น A

ตอนนี้จากมุมมองของผู้เล่น A สิ่งนี้จะใช้เวลานานเป็นสองเท่า - เนื่องจากโลกกำลังเคลื่อนไหวช้าลงสำหรับเขา:

  • เวลา 0s - ผู้เล่นเวลากระสุนเปิดใช้งาน
  • เวลา 4s - ผู้เล่น A ยิงผู้เล่น B
  • เวลา 6s - ผู้เล่น B ยิงผู้เล่น A

ในที่สุดเซิร์ฟเวอร์ก็มีเหตุการณ์ต่อไปนี้เข้ามา:

  • เวลา 0s - ผู้เล่น A เปิดใช้งานเวลาแสดงหัวข้อย่อย
  • เวลา 3 วินาที - ผู้เล่น B ยิงผู้เล่น A (B เริ่มการกระทำนี้เพื่อให้เป็นไปตามไทม์ไลน์ของเขา)
  • เวลา 4s - ผู้เล่น A ยิงผู้เล่น B (A เริ่มต้นการกระทำนี้)

ดังนั้นเรามีปัญหาเบื้องต้นสองประการ อย่างแรกคือตอนนี้ A นั้นมีเวลาเล่นเกม 3 วินาทีตามหลังคนอื่น นี่อาจเป็นช่างเกมที่น่าสนใจถ้าคุณมีแนวคิดที่หมายความว่าเขาต้องจ่ายหนี้คืนนี้ ลองนึกภาพนักกีฬาที่มีฝาครอบซึ่งคุณสามารถเปิดใช้งานเวลาแสดงหัวข้อย่อยเพื่อบุกข้ามพื้นที่เปิดโล่ง แต่เมื่อคุณอยู่ภายใต้ฝาปิดอย่างปลอดภัยคุณจะต้องหยุดนิ่งจนกว่าโลกที่เหลือจะจับคุณไว้ (สามวินาทีที่คุณพลาด )

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

เราสามารถลบล้างมัน - โดยทั่วไปบอกว่า "ฉันรู้ว่าผู้เล่น B คิดว่าเขายิงผู้ชายคนนั้น แต่มันกลับกลายเป็นว่าเขาตายแล้วดังนั้นลองทำเป็นว่าไม่เคยเกิดขึ้น" นี่เป็นประสบการณ์เส็งเคร็งคล้ายกับความล่าช้า แต่จะแก้ปัญหา .

เราสามารถทำให้พระกิตติคุณทั้งสองไทม์ไลน์ - ใช้เซิร์ฟเวอร์มองว่าเป็นความจริงทั้งหมดและกังวลเกี่ยวกับไทม์ไลน์ของแต่ละคนอย่างอิสระ ใน 3 วินาที B นัดที่ A และสังหารเขา ในเวลา 4 วินาที A ยิงที่ B และสังหารเขา ผู้เล่นทั้งสองเสียชีวิตจากช็อตที่พวกเขาไม่เห็น ไม่ได้ฟังดูดี แต่อาจมีวิธีที่ดีในการทำเช่นนี้หลังจากให้หลักสูตรสั้น ๆ แก่ผู้เล่นทุกคนในโลกสัมพัทธภาพบ้า

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

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


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

-1

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

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


1
มันเคยทำมาก่อนเพื่อที่จะบอกว่ามันเป็นไปไม่ได้ที่จะเข้าใจผิด
zzzzBov

@zzzBov เป็นไปไม่ได้ที่จะใช้สัญลักษณ์แสดงเวลาในเกมที่มีผู้เล่นหลายคนในรูปแบบที่แท้จริง คุณจะต้องทำให้เกมช้าลงก่อนจากนั้นค่อย ๆ ลดเวลาจริงของผู้เล่นคนอื่น ๆ ในโลกแห่งความเป็นจริง แค่คิดเกี่ยวกับมัน ในฐานะที่เป็นสิ่งรอบตัวคุณจะต้องใช้การหยุดชั่วคราว / ติดตามสิ่งต่าง ๆ แต่ในรูปแบบที่เป็นจริงมันเป็นไปไม่ได้
SirYakalot

คุณถูกต้องรูปแบบเวลากระสุนที่แท้จริงที่ผู้ใช้รายหนึ่งทำงานที่ความเร็วปกติและไม่สามารถทำได้อีกครั้งในเวลาแสดงหัวข้อย่อยอย่างไรก็ตาม OP เกิดขึ้นหลังจาก "... [ใช้งาน] เอฟเฟ็กต์การเคลื่อนไหวช้า / กระสุนแสดงเวลาช้า" ซึ่งได้รับ ทำมาก่อน
zzzzBov

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

ความจริงที่ว่าสิ่งนี้ได้ถูกนำไปใช้ในเกม MP (ผู้เชี่ยวชาญ Max payne 3 ในกลุ่มอื่น ๆ ) เมื่อหลายปีก่อนทำให้คำตอบนี้ไม่ถูกต้อง
Katu

-1

FEAR มีเวลาแสดงหัวข้อย่อยเป็นผู้เล่นหลายคน แต่มันใช้กับทั้งทีมและทำให้ทุกคนในทีมช้าลง

เวลาแสดงหัวข้อย่อยในแบบเรียลไทม์มัลติเพลเยอร์โดยไม่ทำให้ผู้อื่นช้าลงจริง ๆ จะทำการซิงโครไนซ์ไคลเอนต์ผู้เล่นแบบสโลว์โมชั่นจะตอบสนองต่อกิจกรรมที่ผู้เล่นคนอื่นทำเมื่อนานมาแล้ว


1
ในขณะที่มันเป็นทางออก; ฉันไม่ชอบ - คนเดียวที่ควรได้รับผลกระทบคือผู้เล่นในเวลาแสดงหัวข้อย่อย - เพียงเพราะดาวเทียมสังเกตว่าการเคลื่อนที่ช้าลงไม่ได้หมายความว่าคุณเคลื่อนไหวช้าลงในกรอบอ้างอิงของคุณเอง
Jonathan Dickinson

ขออภัยการแก้ไขก่อนหน้าของฉันฟังดูอ่อนเยาว์เล็กน้อย แม้ว่า 'สัญลักษณ์แสดงหัวข้อย่อยตามเวลาจริง' ฟังดูเหมือนจะขัดแย้งกัน
หนูแฮมสเตอร์

-2

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

วิธีนี้จะช่วยแก้ปัญหาทั้งหมดของคุณ แต่อาจทำให้ ping / latency สูงขึ้น


-3

มันจะไม่เป็นปัญหาถ้าพวกมันเคลื่อนที่ช้ากว่าปกติ แต่ก็ไม่ช้าเกินไปและคนที่เปิดใช้งานมันก็จะเคลื่อนที่ได้เร็วขึ้นเช่นจมลงใต้น้ำทั้งเกมใต้น้ำหรือพามันไปสู่ ​​outerspace


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