MMORPG ขนาดใหญ่อัพเดตฟิสิกส์บ่อยแค่ไหน? [ปิด]


12

เท่าที่ฉันเข้าใจเกมใหญ่ส่วนใหญ่ใช้การประทับเวลาคงที่เพื่อให้มีการจำลองที่เสถียร

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

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


คุณไม่ควรใส่ใจกับสิ่งที่คนอื่นทำมากเกินไป สิ่งที่ใช้ได้ผลกับคนอื่นไม่จำเป็นต้องทำงานให้คุณด้วยเช่นกัน
ฟิลิปป์

6
EVE Online อัพเดตเป็นการจำลองแบบหนึ่งครั้งต่อวินาที แต่ระบบของมันนั้นผิดปกติ ดูส่วนแรกของบทความนี้สำหรับรายละเอียดเพิ่มเติม: themittani.com/features/understanding-eve-online-server-tick
Ross Ridge

1
ดังนั้นนี่คือคำถาม "ถามถึงเรื่องไม่สำคัญเกี่ยวกับเกมของคนอื่นที่มีอยู่แล้ว" เมื่อเทียบกับคำถามเกี่ยวกับการพัฒนาเกม
Trevor Powell

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

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

คำตอบ:


7

Second Life ใช้ฟิสิกส์ในฝั่งเซิร์ฟเวอร์โดยใช้ Havok และล็อคการอัปเดตเป็น 45 ต่อวินาที

https://community.secondlife.com/t5/General-Discussions/SIM-FPS-is-maxed-out-at-45/td-p/181120

เวอร์ชันก่อนหน้านี้ระหว่างปี 2005-2006 ปล่อยให้การอัปเดตทางฟิสิกส์ลอยตัวสูงที่สุดเท่าที่เซิร์ฟเวอร์อนุญาต ภูมิภาคที่ไม่ซับซ้อนที่มีวัตถุสคริปต์ไม่กี่ตัวสามารถเรียกใช้ที่ 800 การปรับปรุงต่อวินาที ... เพื่อประสิทธิภาพที่ดีขึ้นและสอดคล้องกันพวกเขาถูกล็อคไว้ที่ 45

(ใน Second Life อัตราเฟรมขึ้นอยู่กับพลัง CPU และกราฟิกของลูกค้าแต่ละรายความแม่นยำของโลกขึ้นอยู่กับประสิทธิภาพของเครือข่าย)


อันที่จริงดูเหมือนว่าสมเหตุสมผล ฉันพบว่าต่ำถึง 30 FPS เพื่อทำงานที่ดีถ้าผู้รวมระบบนั้นดีและการตรวจจับการชนฉลาดพอ คุณรู้จัก MMO อื่น ๆ ที่มีฟิสิกส์ที่เหมาะสมและช่วงเวลาของพวกเขาหรือไม่?
ฟาบิโอ

2
ได้รับการยอมรับว่าเป็นคนเดียวที่ให้ตัวอย่างที่แท้จริงของโลก แต่ทุกอย่างก็เป็นอาหารที่ดีสำหรับความคิด ขอบคุณเพื่อน.
ฟาบิโอ

24

ฉันได้ทำงานกับเซิร์ฟเวอร์เกมสองชุดรวมถึงชุดของพวกเขาสำหรับ MMO

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

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


4
สิ่งนี้จะใช้ได้ถ้าสภาพแวดล้อมไม่ทำการจำลองใด ๆ หากไม่ได้ลงชื่อเข้าใช้ใช่ไหม จริง ๆ แล้วฉันคิดว่ามันทำแต่อาจไม่สำคัญสำหรับ MMO ส่วนใหญ่เพราะไม่ใช่ "ชีวิต" ขอบคุณนี่เป็นคำตอบที่คาดไม่ถึง
Fabio

2
@Fabio MMO ส่วนใหญ่ไม่ได้ทำอะไรเลยเมื่อไม่มีผู้สังเกตการณ์ - แม้แต่ Ultima Online ซึ่งเคยมีเศรษฐกิจการใช้ชีวิตที่แท้จริง (และนิเวศวิทยา) ปล่อยให้มันดำเนินไปก่อนที่จะถูกปล่อยออกมา (แม้ว่าจะไม่ใช่เหตุผลทางเทคนิค) มีเกมที่มีสิ่งต่าง ๆ เกิดขึ้นแม้ว่าคุณจะไม่ได้เล่น (ตัวอย่างเช่น Haven and Hearth) แต่เคล็ดลับก็คือไม่มีอะไรเกิดขึ้นจนกว่าจะมีการสังเกต - ทุกรายการที่ใช้งานจะจดจำครั้งสุดท้ายที่มันถูกสังเกตและคำนวณสิ่งที่เกิดขึ้น ในขณะที่คุณเห็นอีกครั้ง ดังนั้นแทนที่จะเป็นค่าการอัพเดทแต่ละเห็บคุณทำได้perTick * ticksSinceLastUpdatedง่ายและมีประสิทธิภาพ
Luaan

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

11

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

ตัวอย่างเช่นอาจมีเศษซากคุณสามารถเตะไปรอบ ๆ บนพื้นดินหรือพัดไปตามสายลมที่มีปฏิสัมพันธ์กับวัตถุอื่น ๆ หรือบางทีคุณอาจผลักศพไปรอบ ๆ

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

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


ในบางเกมถ้ามันสามารถบินได้เร็วพอมันก็สามารถฆ่าใครบางคน ฉันเคยเห็นวิดีโอของเกม Halo ที่มีคนถูกกรวยจราจรติดขัดเพราะการระเบิด
Random832

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

3

EVE Online เป็น MMO ที่มีเศษชิ้นเดียวและมีผู้เล่นหลายพันคนในการต่อสู้ในอวกาศขนาดใหญ่ที่ใช้ฟิสิกส์ในขีด จำกัด 1 เฮิร์ตซึ่งเรียกว่า "ขีด จำกัด "

http://community.eveonline.com/news/dev-blogs/fixing-lag-drakes-of-destiny-part-1-1/

"Bloodbath of B-R5RB" ที่เรียกว่าเป็นการต่อสู้ที่ยิ่งใหญ่ที่สุดที่เกิดขึ้นในเกมออนไลน์จนถึงปัจจุบัน ("ความขัดแย้งที่ยาวนาน 21 ชั่วโมงที่เกี่ยวข้องกับผู้เล่น 7,548 คนโดยรวมและผู้เล่นสูงสุด 2,670 คนในระบบ B-R5RB ในครั้งเดียว "ตามhttps://en.wikipedia.org/wiki/Bloodbath_of_B-R5RB )

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