ฉันจะดูว่าฉันจะตอบคำถามนี้ให้ดีที่สุดได้ไหม:
รูปแบบการฟังเซิฟเวอร์ใช้บ่อยแค่ไหนในอุตสาหกรรมเกม?
เมื่อพูดถึงเกมออนไลน์ส่วนใหญ่คุณจะพบว่าเกมส่วนใหญ่ใช้สถาปัตยกรรมไคลเอนต์ - เซิร์ฟเวอร์ แต่ไม่ได้คิดอย่างที่คิด ยกตัวอย่างเกม Source ส่วนใหญ่จะใช้ไคลเอนต์เซิร์ฟเวอร์มาตรฐานที่มีสถาปัตยกรรมเซิร์ฟเวอร์หลัก (เพื่อแสดงรายการเกมที่มี) ในบุคคลนั้นจะโฮสต์เซิร์ฟเวอร์เฉพาะและทุกคนที่มีลูกค้าสามารถเข้าร่วมได้
อย่างไรก็ตามคุณมีเกมและบริการบางอย่างเช่น Left 4 Dead, League of Legends และ XBox Live บางเกมที่ใช้วิธีที่แตกต่างกันเล็กน้อย สิ่งเหล่านี้ทั้งหมดใช้สถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์พร้อมเซิร์ฟเวอร์ควบคุม แนวคิดหลักที่นี่คือมีคนสร้างเซิร์ฟเวอร์เฉพาะที่ไม่ได้ "รัน" เกมใด ๆ เซิร์ฟเวอร์ควบคุมจะสร้าง "ล็อบบี้" แปลก ๆ และเมื่อเกมเริ่มต้นขึ้นเซิร์ฟเวอร์ควบคุมจะเพิ่มพวกเขาไปยังคิวและเมื่อถึงคราวของล็อบบี้มันจะเลือกเซิร์ฟเวอร์เฉพาะที่ตรงกัน (ในแง่ของที่ตั้ง / ความเร็วความพร้อมใช้งานปัจจัยหลายอย่าง) และกำหนดผู้เล่นให้กับเซิร์ฟเวอร์นั้น เซิร์ฟเวอร์จะ "เล่น" เกมเท่านั้น มันเป็นแนวคิดเดียวกัน แต่ง่ายขึ้นเล็กน้อยเนื่องจากลูกค้าไม่จำเป็นต้อง "เลือก" เซิร์ฟเวอร์
แน่นอนว่ารูปแบบไคลเอนต์ - เซิร์ฟเวอร์ที่ใหญ่ที่สุดคือรูปแบบ MMO โดยที่เซิร์ฟเวอร์หนึ่งหรือหลายเซิร์ฟเวอร์ทำงานในโลกถาวรที่จัดการกับข้อมูลและตรรกะเกือบทั้งหมด เกมที่มีชื่อเสียงมากที่ใช้โมเดลนี้คือ World of Warcraft, Everquest ทุกอย่างเป็นอย่างนั้น
ดังนั้นเซิร์ฟเวอร์ฟังจะพอดีกับที่นี่ที่ไหน? พูดตามตรงไม่ได้ดีขนาดนั้นคุณยังจะพบกับเกมมากมายที่ใช้มัน ตัวอย่างเช่นเกม Source ส่วนใหญ่อนุญาตให้มีการสร้างเซิร์ฟเวอร์เพื่อฟังและเกม XBox Live จำนวนมากทำ (ไม่นานมานี้ แต่ฉันเชื่อว่า Counter Strike ทำเช่นเดียวกับ Quake 4 และเกมอื่น ๆ อีกมากมาย) โดยทั่วไปแล้วดูเหมือนว่าพวกเขาจะขมวดคิ้วเนื่องจากข้อได้เปรียบของแบบจำลองไคลเอนต์ - เซิร์ฟเวอร์ซึ่งนำเราไปสู่จุดต่อไปของเรา
อะไรคือข้อดีของมัน?
ก่อนอื่น: ประสิทธิภาพ. ในรูปแบบไคลเอนต์ - เซิร์ฟเวอร์ลูกค้าจะจัดการกับการเปลี่ยนแปลงในตัวเครื่อง (เช่นอินพุตกราฟิกเสียง ฯลฯ ) ในแต่ละรอบของเกม ในตอนท้ายของรอบมันจะรวบรวมข้อมูลที่เกี่ยวข้อง (เช่นผู้เล่นย้ายหรือไม่ถ้าเป็นเช่นนั้นจะไปที่ไหนที่ไหน / เขากำลังมองหาที่ไหนความเร็วความเร็วพวกเขายิงถ้าเป็นเช่นนั้นข้อมูลเกี่ยวกับกระสุน ฯลฯ ) และส่งไปยังเซิร์ฟเวอร์เพื่อประมวลผล เซิร์ฟเวอร์จะใช้ข้อมูลนี้และพิจารณาว่าทุกสิ่งใช้ได้หรือไม่เช่นผู้ใช้ย้ายในลักษณะที่บ่งชี้ว่ามีการแฮ็ก (มากกว่านั้นในภายหลัง) การย้ายใช้งานได้ (มีอะไรบ้าง) กระสุนจากผู้เล่นหรือไม่ ผู้เล่น 1 คน 2 คน? และอีกมากมาย จากนั้นเซิร์ฟเวอร์จะบรรจุและส่งไปยังไคลเอนต์ซึ่งจะอัพเดทสิ่งที่จำเป็นเช่นปรับสุขภาพถ้าผู้เล่นถูกยิงเตะผู้เล่นหากพิจารณาแล้วเห็นว่าพวกเขากำลังแฮ็คเป็นต้น
อย่างไรก็ตามเซิร์ฟเวอร์ฟังต้องจัดการกับสิ่งเหล่านี้ทั้งหมดในเวลาเดียวกัน เนื่องจากฉันคิดว่าคุณคุ้นเคยกับการเขียนโปรแกรมคุณอาจตระหนักได้ว่าเกมสามารถปล้นพลังงานจากคอมพิวเตอร์ได้มากเพียงใดโดยเฉพาะเกมที่ออกแบบมาไม่ดี การเพิ่มการประมวลผลเครือข่ายการรักษาความปลอดภัยและอื่น ๆรวมถึงเกมของลูกค้าคุณสามารถดูได้ว่าประสิทธิภาพจะได้รับผลกระทบที่รุนแรงแค่ไหน นอกจากนี้เซิร์ฟเวอร์ส่วนใหญ่ทำงานบนเครือข่ายที่รวดเร็วและเป็นเซิร์ฟเวอร์ที่ออกแบบมาเพื่อรองรับการรับส่งข้อมูลเครือข่าย หากเครือข่ายของเซิร์ฟเวอร์ฟังช้าเกมทั้งหมดจะประสบ
การรักษาความปลอดภัยที่สองตามที่ระบุไว้ก่อนหน้านี้หนึ่งในสิ่งสำคัญที่เซิร์ฟเวอร์จะทำคือตรวจสอบว่าผู้เล่นใช้ประโยชน์จากเกมหรือไม่ คุณอาจเห็นสิ่งเหล่านี้เป็น Punkbuster, VAC เป็นต้นมีกฎที่ซับซ้อนมากที่เรียกใช้โปรแกรมเหล่านี้เช่นการพิจารณาความแตกต่างระหว่างแฮ็กเกอร์และผู้เล่นที่ดีมาก มันจะไม่ดีสำหรับเกมของคุณหากคุณไม่สามารถจับแฮ็กเกอร์ได้ แต่ยิ่งแย่ลงไปกว่านั้นถ้าคุณดำเนินการกับผู้ที่ถูกกล่าวหาเท็จ
โดยทั่วไปเซิร์ฟเวอร์ฟังจะไม่สามารถจัดการกับเกมของลูกค้าการประมวลผลเซิร์ฟเวอร์และการตรวจจับการแฮ็กและในกรณีส่วนใหญ่เครื่องตรวจสอบอย่าง Punkbuster ยากมากหากไม่สามารถทำงานบนเซิร์ฟเวอร์ฟังได้เพราะเป็นไปไม่ได้ ยากสำหรับการทำงานอย่างถูกต้องโดยไม่ต้องใช้กำลังประมวลผลที่จำเป็นเนื่องจากโดยทั่วไปแล้วตรรกะของเกมจะถูกจัดลำดับความสำคัญเหนือความปลอดภัยและหากเครื่องตรวจจับไม่ได้รับอนุญาตให้ประมวลผลสำหรับหนึ่งเฟรมอาจทำให้ข้อมูลสูญหายได้
สุดท้ายเพลย์ สิ่งที่ใหญ่ที่สุดเกี่ยวกับเซิร์ฟเวอร์ก็คือพวกเขาจะยังคงอยู่ซึ่งหมายความว่าแม้ว่าทุกคนจะออกจากเซิร์ฟเวอร์จะยังคงทำงานต่อไป สิ่งนี้มีประโยชน์หากคุณมีเซิร์ฟเวอร์ยอดนิยมที่ไม่มีกิจกรรมมากในเวลากลางคืนผู้คนสามารถเข้าร่วมได้เมื่อพวกเขาพร้อมที่จะเล่นและไม่ต้องรอให้มันถูกนำกลับมาออนไลน์
ในเซิร์ฟเวอร์การฟังข้อเสียเปรียบหลักคือทันทีที่ไคลเอนต์ที่โฮสต์เซิร์ฟเวอร์ Listen ออกเกมจะต้องถูกถ่ายโอนไปยังผู้เล่นอื่น (สร้าง lul ในเกมที่สามารถนาทีสุดท้ายในบางกรณี) หรือต้องจบโดยสมบูรณ์ . สิ่งนี้ไม่เหมาะกับเซิร์ฟเวอร์ขนาดใหญ่เนื่องจากโฮสต์ต้องออนไลน์อยู่ (เสียสล็อตในเซิร์ฟเวอร์และพลังคอมพิวเตอร์ของเขา / เธอซึ่งอาจทำให้เกมช้าลง) หรือจบเกมสำหรับทุกคน
อย่างไรก็ตามแม้จะมีปัญหาเหล่านี้ แต่ฟังเซิร์ฟเวอร์ก็มีข้อดีอยู่บ้าง
ติดตั้งง่าย : เซิร์ฟเวอร์ฟังส่วนใหญ่ไม่มีอะไรมากไปกว่ากดปุ่ม "เกมใหม่" และให้ผู้คนเข้าร่วม นี่เป็นเรื่องง่ายสำหรับผู้ที่ต้องการเล่นกับเพื่อน ๆ และไม่ต้องการลองหาเซิร์ฟเวอร์เฉพาะที่ว่างเปล่าหรือเล่นกับคนอื่น
เหมาะสำหรับการทดสอบ : หากมีเจ้าของเซิร์ฟเวอร์เฉพาะและต้องการเปลี่ยนการกำหนดค่าเป็นความคิดที่ดีกว่าในการทดสอบการกำหนดค่าก่อน ผู้ใช้จะต้องสร้างการสำรองข้อมูลของเซิร์ฟเวอร์เฉพาะและสุ่มสี่สุ่มห้าไปสู่การเปลี่ยนแปลงด้วยตัวเลือกเดียวที่จะย้อนกลับหากมีสิ่งผิดปกติสร้างเซิร์ฟเวอร์เฉพาะใหม่เพื่อทดสอบพวกเขาเพียงแค่สร้างเซิร์ฟเวอร์ฟังอย่างง่ายเพื่อ ทดสอบพวกเขา และด้วยจุดที่ 1 สิ่งเหล่านี้มักจะง่ายต่อการเริ่มต้นและกำหนดค่า นี่เป็นเรื่องจริงโดยเฉพาะอย่างยิ่งเนื่องจากเซิร์ฟเวอร์เฉพาะส่วนใหญ่ไม่ได้อยู่ในการเข้าถึงของผู้ดูแลระบบในทันที (เซิร์ฟเวอร์เฉพาะส่วนใหญ่จะเช่าจากสถานที่ห่างไกล) ใช้เวลานานกว่าในการผลักดันการเปลี่ยนแปลงการกำหนดค่ารวมทั้งคำสั่งสำหรับการรีสตาร์ท ฯลฯ ไปยังตำแหน่งระยะไกลกว่าเครื่องที่ผู้ดูแลระบบเปิดอยู่
ทรัพยากรน้อยลง : ในเซิร์ฟเวอร์เฉพาะส่วนใหญ่ผู้ใช้ที่มี IP เดียวกันไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์เฉพาะ (หมายถึงไคลเอ็นต์ต้องโฮสต์เซิร์ฟเวอร์หรือเล่นพวกเขาไม่สามารถทำทั้งสองอย่างได้) หากลูกค้าต้องการเล่นบนเซิร์ฟเวอร์ของตนเองพวกเขามักจะต้องมีเครื่องที่สองเพื่อโฮสต์เซิร์ฟเวอร์หรือซื้อหรือเช่าเซิร์ฟเวอร์เฉพาะเพื่อให้พวกเขาสามารถเล่นกับมันได้ เซิร์ฟเวอร์ฟังต้องใช้เครื่องเดียวเท่านั้นซึ่งอาจเป็นสิ่งเดียวที่ไคลเอ็นต์สามารถใช้ได้
ไม่ว่าในกรณีใดทั้งสองมีข้อดีและข้อเสียและคุณต้องชั่งน้ำหนักสิ่งที่คุณยินดีออกแบบและใช้งาน จากประสบการณ์ของฉันฉันเชื่อว่าถ้าคุณใช้ฟังเซิร์ฟเวอร์มันจะถูกนำมาใช้หากไม่มีสิ่งอื่นนอกจากผู้ใช้สองสามคนที่ต้องการเล่นกับเพื่อน ๆ หรือตั้งค่าการทดสอบ
สุดท้าย:
ฉันมีตัวเลือกอื่น ๆ อีกบ้าง?
นี่คือหนอนอุตสาหกรรม ในความเป็นจริงสถาปัตยกรรมเครือข่ายทุกประเภทสามารถนำไปใช้กับวิดีโอเกม อย่างไรก็ตามจากสิ่งที่ฉันเห็นเช่นการสื่อสารทางอินเทอร์เน็ตส่วนใหญ่ต้มลงไปในรูปแบบของไคลเอ็นต์ - เซิร์ฟเวอร์บางรูปแบบ
โปรดแจ้งให้เราทราบหากฉันไม่ได้ตอบคำถามของคุณหรือถ้าคุณต้องการบางสิ่งบางอย่างที่ขยายออกไปและฉันจะเห็นว่าฉันสามารถทำอะไรได้บ้าง