ทำไม MMORPG ยังคงใช้เซิร์ฟเวอร์หลายเครื่อง


18

MMORPGs, MOBA บางอย่างเช่น League of Legends หรือ StarCraft 2 มักจะบังคับให้คุณเลือกเซิร์ฟเวอร์ โดยปกติแล้วพวกเขาคือ US, EU และ SEA ใน MMORPG หลายแห่งต่อสถานที่ ฉันเห็นได้ว่ามีความจำเป็นเมื่อสองสามปีที่แล้ว แต่ตอนนี้ด้วย AWS และข้อเสนอที่คล้ายกันซึ่งทำให้คุณสามารถปรับขนาด "พลังงานของเซิร์ฟเวอร์" ได้อย่างราบรื่นทำไมจึงยังมีเซิร์ฟเวอร์แยกกัน

รถไฟแห่งความคิดของฉันเป็นเช่นนี้ (ใช้ Star Wars: The Old Republic เป็นตัวอย่าง): - คุณมักจะอยู่บนดาวเคราะห์ดวงหนึ่งเสมอ "อินสแตนซ์" ที่แยกได้จากดาวเคราะห์ดวงอื่น - หากมีคนจำนวนมากเกินไปบนดาวเคราะห์ดวงเดียว SW: TOR สร้างตัวอย่างใหม่ของโลกและทำให้ผู้เล่นอยู่ในนั้น - หากคุณออกจากโลก / สลับอินสแตนซ์คุณมีหน้าจอโหลด

เหตุใดเกมจึงไม่สามารถสร้างอินสแตนซ์สำหรับโลกนี้ได้ ตัวอย่างนี้ (และมีเพียงอันนี้เท่านั้น) ที่มีข้อมูลปัจจุบันของคุณในฐานข้อมูลและจัดการผู้เล่น x ทันทีที่มีผู้เล่น x-50 อยู่บนอินสแตนซ์นี้เซิร์ฟเวอร์ใหม่จะเริ่มทำงานและผู้คนใหม่จะวางไข่บนอินสแตนซ์นั้น 50 สปอตถูกสงวนไว้สำหรับการสลับไปยังกลุ่มของคุณ ฯลฯ

อาจมีอินสแตนซ์สำหรับทั้งสามภูมิภาคที่สำคัญเพื่อให้เวลาในการตอบสนองต่ำ แต่จะช่วยให้คุณยังคงเล่นกับผู้เล่นอื่นจาก SEA หากคุณสามารถใช้ชีวิตด้วยความล่าช้า 140ms (ซึ่งยังคงไม่มีอะไรเลย)

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

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

มีเหตุผลใดที่ทำให้ใช้งานไม่ได้? มีปัญหาอื่นอีกไหมที่ฉันหายไป?


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

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

คำตอบ:


12

MMORPGs, MOBA บางอย่างเช่น League of Legends หรือ StarCraft 2 มักจะบังคับให้คุณเลือกเซิร์ฟเวอร์ โดยปกติแล้วพวกเขาคือ US, EU และ SEA ใน MMORPG หลายแห่งต่อสถานที่ ฉันเห็นได้ว่ามีความจำเป็นเมื่อสองสามปีที่แล้ว แต่ตอนนี้ด้วย AWS และข้อเสนอที่คล้ายกันซึ่งทำให้คุณสามารถปรับขนาด "พลังงานของเซิร์ฟเวอร์" ได้อย่างราบรื่นทำไมจึงยังมีเซิร์ฟเวอร์แยกกัน

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

รถไฟแห่งความคิดของฉันเป็นเช่นนี้ (ใช้ Star Wars: The Old Republic เป็นตัวอย่าง): - คุณมักจะอยู่บนดาวเคราะห์ดวงหนึ่งเสมอ "อินสแตนซ์" ที่แยกได้จากดาวเคราะห์ดวงอื่น - หากมีคนจำนวนมากเกินไปบนดาวเคราะห์ดวงเดียว SW: TOR สร้างตัวอย่างใหม่ของโลกและทำให้ผู้เล่นอยู่ในนั้น - หากคุณออกจากโลก / สลับอินสแตนซ์คุณมีหน้าจอโหลด

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

Guild Wars 2 มีศูนย์ข้อมูลหลักสองแห่งแห่งหนึ่งในสหรัฐอเมริกาและอีกแห่งหนึ่งในยุโรปมีศูนย์รวมข้อมูล (ส่วนใหญ่สำหรับระบบการค้าและการค้า) แต่โดยทั่วไปแล้วพวกเขาอยู่ในการกำหนดค่าเพื่อให้ผู้เล่นใน เยอรมันฝรั่งเศสและอื่น ๆ ไม่จำเป็นต้องทนกับเวลาแฝงที่สูงขึ้นไปยังเซิร์ฟเวอร์เกมของสหรัฐฯ ภายในศูนย์ข้อมูลผู้เล่นจะถูกจัดเรียงเป็น "โฮมภพ" (หรือ "เศษ" ในเงื่อนไขพื้นถิ่น); แต่หนึ่งในเหตุผลนี้ทำคือการลดจำนวนผู้เล่นที่ลูกค้าสามารถดูและต้องการรายงานให้พวกเขา ปัญหาฝั่งไคลเอ็นต์ของปัญหานั้นจะไม่ได้รับการแก้ไขโดยการขยายไปยังฮาร์ดแวร์เซิร์ฟเวอร์เพิ่มเติม การระเบิดแบบ Combinatorial ฝั่งเซิร์ฟเวอร์ของเส้นทางการรายงานเพิ่มเติมอาจเป็น

มีเหตุผลใดที่ทำให้ใช้งานไม่ได้? มีปัญหาอื่นอีกไหมที่ฉันหายไป?

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


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

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

7

ส่วนใหญ่เกี่ยวกับความล่าช้า

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

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

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

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


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

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

และดังที่ได้กล่าวไว้ในความคิดเห็นของฉันถึงฟิลิปป์ฉันไม่คิดว่าคุณจะสามารถพิมพ์เมืองหลวงและเมืองหลักได้โดยไม่มีกรณี
mmlac

3

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

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

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


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

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

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

2

เกิดอะไรขึ้นกับการตั้งค่าอัตโนมัติ เมื่อสถานที่มีประชากรมากเกินไปคุณเพียงแค่ใส่ผู้เล่น 1,000 คนใน 10 กรณีที่แตกต่างกัน

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

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

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


1
อย่าสับสนกับคำว่าอินสแตนซ์และเซิร์ฟเวอร์ อินสแตนซ์อนุญาตให้คุณสลับระหว่างกัน เซิร์ฟเวอร์มักเป็นอะตอม ไม่เข้าและออก ในการพบปะผู้คน: ทำให้ทุกคนอยู่ในอินสแตนซ์เดียวและเมืองหลวงของคุณจะมีคน 20,000 คน ในเวลาเดียวกัน. นั่นจะไม่ทำงานหรือไม่เป็นที่ต้องการนั่นคือเหตุผลที่คุณต้องสร้างอินสแตนซ์ ความคิดของฉันทำให้กรณีเหล่านี้เป็นสากลแทนที่จะ จำกัด อยู่ที่เซิร์ฟเวอร์
mmlac

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