คำถามติดแท็ก networking

คอมพิวเตอร์สองเครื่องขึ้นไปเชื่อมต่อกันผ่านการเชื่อมต่อด้วยสายเคเบิลหรือการสื่อสารไร้สายเพื่อการแลกเปลี่ยนข้อมูล

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

3
หลักการออกแบบเกมสำหรับผู้เล่นหลายคนแบบเรียลไทม์สำหรับ Node.js
ฉันได้อ่านวาล์วบทความเกี่ยวกับเครือข่ายผู้เล่นหลายที่ได้รับการดัดแปลงมาจาก Yahn เนียกระดาษ 2001 เรียกว่าแฝงชดเชยวิธีการในไคลเอ็นต์ / เซิร์ฟเวอร์ในเกมการออกแบบโปรโตคอลและการเพิ่มประสิทธิภาพ ฉันกำลังสร้างเกมผู้เล่นหลายคนเรียลไทม์โดยใช้เซิร์ฟเวอร์ node.js ที่เชื่อมต่อกับลูกค้าผ่าน socket.io และฉันมีคำถามสองสามข้อเกี่ยวกับหลักการที่อธิบายไว้ด้านล่าง: การแก้ไขเอนทิตี [การแก้ไข] ป้องกันการเคลื่อนไหวที่กระวนกระวายใจซึ่งสิ่งนี้มักจะนำไปสู่โดยการอัพเดทเซิร์ฟเวอร์บัฟเฟอร์จากนั้นเล่นกลับด้วยช่องว่างที่สอดแทรกอย่างราบรื่นระหว่าง นอกจากนี้ยังสามารถป้องกันข้อบกพร่องที่เกิดจากการสูญเสียต การทำนายฝั่งไคลเอ็นต์ การทำนายคือแนวคิดของลูกค้าที่ทำนายผลกระทบของการกระทำของผู้เล่นท้องถิ่นโดยไม่ต้องรอให้เซิร์ฟเวอร์ยืนยัน สถานะที่คาดการณ์ของเอนทิตีถูกทดสอบกับคำสั่งเซิร์ฟเวอร์เมื่อมาถึงจนกว่าจะตรวจจับคู่หรือจับคู่ผิด การชดเชยความล่าช้า การชดเชยความล่าช้าคือแนวคิดของเซิร์ฟเวอร์โดยใช้เวลาแฝงของผู้เล่นในการย้อนเวลาเมื่อประมวลผล [ผู้ใช้งาน] เพื่อดูว่าผู้เล่นเห็นอะไรเมื่อคำสั่งถูกส่ง เมื่อใช้ร่วมกับการคาดการณ์การชดเชยความล่าช้าจะช่วยต่อสู้กับเวลาแฝงของเครือข่ายจนถึงจุดที่เกือบกำจัดมันออกจากมุมมองของผู้โจมตี หลักการใช้กับ TCP เช่นเดียวกับที่ทำกับ UDP และจะมีความแตกต่างในการนำไปใช้หรือไม่? ฉันเห็นว่าการแก้ไขเอนทิตีไม่จำเป็นต้องป้องกันการสูญหายของแพ็คเก็ต แต่ก็เกี่ยวกับมัน ฉันสามารถสื่อสารระหว่างเซิร์ฟเวอร์กับเว็บเบราว์เซอร์และกลับกันโดยใช้ UDP และ Node.js ได้หรือไม่ เนื่องจากกระดาษมีอายุเกินหนึ่งทศวรรษหลักการเหล่านี้ยังคงใช้งานอยู่หรือมีเทคโนโลยีอื่นปรากฏขึ้นมา? ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมาก

1
จะรักษาโครงสร้างข้อมูลให้ตรงกันบนเครือข่ายได้อย่างไร?
บริบท ในเกมที่ฉันกำลังทำอยู่ (เรียงลำดับจากจุดและคลิกการผจญภัยกราฟิก) ทุกอย่างที่เกิดขึ้นในโลกของเกมจะถูกควบคุมโดยตัวจัดการแอ็คชั่นที่มีโครงสร้างคล้าย: ตัวอย่างเช่นหากผลลัพธ์ของการตรวจสอบวัตถุควรทำให้ตัวละครพูดว่าสวัสดีเดินนิดหน่อยแล้วก็นั่งลงฉันก็วางไข่โค้ดต่อไปนี้: var actionGroup = actionManager.CreateGroup(); actionGroup.Add(new TalkAction("Guybrush", "Hello there!"); actionGroup.Add(new WalkAction("Guybrush", new Vector2(300, 300)); actionGroup.Add(new SetAnimationAction("Guybrush", "Sit")); สิ่งนี้จะสร้างกลุ่มการกระทำใหม่ (ทั้งบรรทัดในภาพด้านบน) และเพิ่มลงในผู้จัดการ กลุ่มทั้งหมดจะถูกดำเนินการแบบขนาน แต่การกระทำภายในแต่ละกลุ่มจะถูกล่ามโซ่ไว้ด้วยกันเพื่อให้กลุ่มที่สองเริ่มต้นหลังจากที่กลุ่มแรกเสร็จสิ้น เมื่อการกระทำสุดท้ายในกลุ่มเสร็จสิ้นกลุ่มจะถูกทำลาย ปัญหา ตอนนี้ฉันต้องทำซ้ำข้อมูลนี้ทั่วทั้งเครือข่ายเพื่อให้ผู้เล่นทุกคนเห็นสิ่งเดียวกันในเซสชั่นผู้เล่นหลายคน การทำให้การกระทำแต่ละอย่างเป็นอันดับไม่ใช่ปัญหา แต่ฉันเป็นผู้เริ่มต้นแน่นอนเมื่อพูดถึงเรื่องเครือข่ายและฉันมีคำถามสองสามข้อ ฉันคิดว่าเพื่อความเรียบง่ายในการสนทนานี้เราสามารถสรุปองค์ประกอบของ action manager ให้ง่ายขึ้น: var actionManager = new List<List<string>>(); ฉันจะเก็บเนื้อหาของโครงสร้างข้อมูลด้านบนให้ตรงกันระหว่างผู้เล่นทุกคนได้อย่างไร นอกจากคำถามหลักแล้วฉันยังมีข้อกังวลอื่นอีกสองสามข้อที่เกี่ยวข้อง (เช่นความหมายที่เป็นไปได้ทั้งหมดของปัญหาเดียวกันข้างต้น): ถ้าฉันใช้สถาปัตยกรรมเซิร์ฟเวอร์ / ไคลเอนต์ (หนึ่งในผู้เล่นที่ทำหน้าที่เป็นทั้งเซิร์ฟเวอร์และไคลเอนต์) และหนึ่งในไคลเอนต์ได้วางกลุ่มของการกระทำเขาควรเพิ่มพวกเขาโดยตรงไปยังผู้จัดการหรือส่งคำขอเท่านั้น ไปยังเซิร์ฟเวอร์ซึ่งจะสั่งให้ลูกค้าทุกคนเพื่อเพิ่มกลุ่มที่ ? …

3
เซิร์ฟเวอร์เกมกระดานแบบอ้างอิงอ้างอิง [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา มีการอ้างอิง / หนังสือที่ดีที่จะแนะนำเกี่ยวกับวิธีการสร้างเซิร์ฟเวอร์เกมเทิร์นเบสหรือไม่? มันเหมือนกับเซิร์ฟเวอร์หมากรุกสำหรับจับคู่ผู้เล่นหมากรุกและรักษาสถานะของเกม ในอดีตตัวอย่างเช่น IGS (for go, weiqi) เป็นการใช้งานซ็อกเก็ต เทคโนโลยีร่วมสมัยที่มีให้เรียนรู้คืออะไร ขอบคุณ!

5
ไลบรารีเลเยอร์เครือข่าย [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันกำลังมองหาเลเยอร์เครือข่ายใด ๆ ที่พร้อมที่จะเพิ่มให้กับเกมของฉันไม่ว่าจะฟรีหรือราคาที่ยุติธรรมสำหรับเกมอินดี้ โดยเลเยอร์เครือข่ายฉันหมายถึงห้องสมุดบางประเภทที่ฉันสามารถเชื่อมต่อกับที่ฉันจะสามารถส่งข้อความไปและรับข้อความจากและมันจะจัดการข้อมูลระดับต่ำทั้งหมดด้วยตัวเอง ฉันกำลังมองหาโดยเฉพาะอย่างยิ่ง: ห้องสมุดคุณภาพสูงที่เข้าใจและจัดการกับสิ่งที่ซับซ้อนเช่นความแออัดของเครือข่าย ห้องสมุดที่ปรับขนาดได้ซึ่งจะทำให้ฉันมีผู้เล่นจำนวนมากเล่นด้วยกัน ควรเป็นโซลูชันเพียร์ทูเพียร์ไม่ใช่เซิร์ฟเวอร์ที่ใช้ ควรเป็นไลบรารีที่มีผลผูกพันกับภาษาระดับสูง (เช่น Java หรือ C #) ตัวอย่างของสิ่งที่ฉันกำลังมองหาคือGrappleแต่ฉันรู้ว่ามีห้องสมุดอื่น ๆ

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

2
จะชดเชยการเคลื่อนย้ายวัตถุด้วยการทำนายฝั่งไคลเอ็นต์ได้อย่างไร
ผมดำเนินการเซิร์ฟเวอร์เกมที่สนับสนุนดาวควบคุมเหมือนกันพัลวัน ดังนั้นคุณต้องมีเรือที่บินและยิงด้วยฟิสิกส์ความเร็ว / การเร่งความเร็ว / ลดแรงกระแทกที่ง่ายที่สุดในการขับเคลื่อนการเคลื่อนไหว ฉันได้อ่าน Valve, Gafferon และ Gambetta และใช้อัลกอริทึมของ Gambettaเพื่อการคาดการณ์ลูกค้า: การทำนายลูกค้าทำงานบนเรือของผู้เล่นโดยอัพเดทตำแหน่งจากเซิร์ฟเวอร์ตามที่มาและจากนั้นนำอินพุตที่ยังไม่ได้ประมวลผลโดยเซิร์ฟเวอร์ไปยังผู้เล่น น่าเสียดายที่เกมของฉันใช้งานไม่ได้ ฉันเชื่อว่ามันเกี่ยวข้องกับความจริงที่ว่าตัวอย่างของ Gambetta ไม่ได้คำนึงถึงวัตถุที่เคลื่อนไหวอยู่แล้วหรือคำสั่งที่ได้รับการปรับปรุงทีละขั้นตอน (โดย "ขั้นตอน" ฉันหมายถึงเฟรม) ดังนั้นในเกมของฉันผู้เล่นกดขึ้นเพื่อเร่งการส่ง (ที่กำลังเคลื่อนไหว) ซึ่งยังคงเคลื่อนที่บนไคลเอนต์ส่งคำสั่งไปยังเซิร์ฟเวอร์และมักจะได้รับสแนปช็อตโลกจากเซิร์ฟเวอร์ในขั้นตอนถัดไป ฉันได้รับสิ่งที่ชอบมากขึ้น: คำสั่ง player รันที่ไคลเอ็นต์ขั้นตอน 3แต่บนเซิร์ฟเวอร์จะรันที่เซิร์ฟเวอร์ขั้นตอนที่ 5เท่านั้น เมื่อถึงเวลาที่ลูกค้าได้รับสแนปชอตของโลกในขั้นตอนที่ 6ลูกค้าการคาดการณ์จะถูกปิดโดยเฉพาะอย่างยิ่งในความเร็วที่เร็วขึ้น ปมของปัญหาคือว่าลูกค้ารันคำสั่งในขั้นตอนที่ 5แต่เซิร์ฟเวอร์ทำงานมันในขั้นตอนที่ 6 ฉันคิดถึงการส่งขั้นตอนไคลเอนต์ด้วยคำสั่งและให้เซิร์ฟเวอร์ย้อนกลับและเรียกใช้คำสั่งอีกครั้งด้วยขั้นตอนเวลาของไคลเอ็นต์ สิ่งนี้อาจนำไปสู่ปัญหาอื่น ๆ ที่เกิดขึ้นเช่น - สิ่งที่เกิดขึ้นกับคำสั่งที่ได้รับตั้งแต่การย้อนกลับหรือการโกงลูกค้าสามารถใช้ประโยชน์จากการเปลี่ยนขั้นตอนการส่ง การอ่านและการดูวิดีโอเช่นนี้จาก Google กล่าวถึงวิธีการที่แตกต่างกันซึ่งคุณจะค่อยๆเปลี่ยนตำแหน่งผู้เล่นเพื่อให้ตรงกับภาพรวมในไม่กี่ขั้นตอน คำถามของฉัน: คุณสามารถทำให้อัลกอริทึมของ Gambetta ทำงานกับการเคลื่อนที่แบบสเต็ปคงที่ได้หรือไม่? หรือมันขัดกับแนวคิดของเกมของฉัน? การแก้ไขแบบค่อยเป็นค่อยไปเหนือขั้นตอนเป็นวิธีที่ถูกต้องหรือไม่? …

2
วิธีซิงโครไนซ์การกระทำเช่นการกระโดดในผู้เล่นหลายคนได้อย่างไร
ฉันเป็นนักพัฒนาเกมมือใหม่และฉันค้นคว้าเกี่ยวกับเกมที่มีผู้เล่นหลายคน ฉันสังเกตว่ามันมีเวลาแฝงอยู่เสมอผู้เล่นจะได้รับการอัพเดตจากการกระทำในอดีตเสมอ แต่มีเทคนิคต่าง ๆ เช่นการคำนวณคนตายเพื่อจัดการเวลาแฝง ฉันสามารถทำนายการเคลื่อนไหวและทำให้การเคลื่อนไหวราบรื่น แต่ฉันจะทำให้การประสานเหมือนกระโดดหยุดเดินได้อย่างไร สมมติว่าลูกค้า A กำลังเคลื่อนไหวเขาอยู่ที่ 100m ในเวลา 10.2 ด้วยความเร็ว 100m / วินาทีและส่งข้อมูลนี้ ลูกค้า B จะได้รับข้อมูลนี้ในภายหลังให้เป็น 10.4 ดังนั้นที่ลูกค้า B ฉันสามารถใช้การคาดการณ์และวางลูกค้า A ที่ 120m แต่ถ้าลูกค้าทำกระโดดได้ที่ 110m ที่ 10.3 ฉันไม่สามารถคาดการณ์ได้และเนื่องจากฉันใช้การคาดการณ์ฉันจึงไม่สามารถแสดงให้ลูกค้า A กระโดดข้ามไปในอดีต ฉันอาจจัดการกับปัญหานี้โดยไม่ส่งการกระทำข้ามเลย แต่ถ้าเกมของฉันมีช่องว่างบางอย่างที่ผู้เล่นสามารถล้มและตาย ดังนั้นถ้าฉันไม่ซิงค์แอคชั่นกระโดดผู้เล่นคนอื่นจะสังเกตเห็นว่าผู้เล่นคนหนึ่งกำลังทำงานอยู่เขาจะตกเป็นโมฆะและปรากฏบนหน้าจออีกครั้งเพื่อทำลายการมีส่วนร่วมทางสายตา Jump เป็นเพียงตัวอย่างอาจมีหลายสถานการณ์ที่การทำนายไม่สามารถทำได้ ดังนั้นจะจัดการกับพวกเขาอย่างไร ตัวอย่างหนึ่งดังกล่าวสามารถเป็นได้หลายเกมออนไลน์เวทีการต่อสู้เช่น Awesomenauts

3
ฉันรู้ว่าการตั้งค่าผู้เล่นหลายคนที่เรียบง่ายของฉันอาจไม่ใช่ความคิดที่ดี แต่ทำไม?
ฉันกำลังสร้าง MOBA ตัวเล็ก ๆ ง่ายๆเพื่อความสนุกสนาน ฉันทำทุกอย่างที่ผู้เล่นคนเดียวแล้วฉันก็รู้ว่า "โอ้ฉันน่าจะเพิ่มหลายคนเหรอ" ฉันไม่เคยทำอะไรกับระบบเครือข่ายมาก่อนดังนั้นการเรียนรู้วิธีรวมLidgrenเข้ากับเกมของฉันนั้นสนุกและยอดเยี่ยม สิ่งคือฉันค่อนข้างรู้ว่าฉันทำสิ่งต่าง ๆ ผิดเพราะมันไม่แข็งแรงพอสำหรับเกมกระแสหลักที่จะใช้เท่าที่ฉันรู้ แต่มีอะไรผิดปกติกับมัน? สิ่งที่ฉันทำคือโดยทั่วไปเมื่อใดก็ตามที่ผู้เล่นทำการกระทำมันจะส่งข้อความไปยังเซิร์ฟเวอร์ว่า "เฮ้ฉันเพิ่งทำสิ่งนี้" เซิร์ฟเวอร์และไคลเอนต์ต่างก็ใช้การจำลองสถานการณ์เดียวกัน จากนั้นเซิร์ฟเวอร์จะส่งข้อความไปยังลูกค้ารายอื่นทั้งหมดบอกพวกเขาว่าผู้ชายคนนั้นทำสิ่งนั้น ส่วนใหญ่ยกเว้นในบางกรณีเมื่อผู้เล่นทำสิ่งใดลูกค้าถือว่ามันเจ๋งและก้าวไปข้างหน้าด้วยตัวมันเอง ดังนั้นเมื่อคุณคลิกขวาที่ใดที่หนึ่งเพื่อย้ายไปที่นั่นไคลเอนต์ของผู้เล่นนั้นเพิ่งเริ่มเคลื่อนย้ายคนที่แต่งตัวประหลาดของเขาที่นั่นแล้วส่งข้อความไปยังเซิร์ฟเวอร์ที่บอกเรื่องนี้ ดังนั้นโดยทั่วไป: ผู้เล่นคนที่ 1 ร่ายคาถาเพื่อให้เขาเคลื่อนที่เร็วขึ้น 100% เป็นเวลาหกวินาที ลูกค้าในพื้นที่ของผู้เล่น 1 เพิ่มบัฟนั้นไปยังวัตถุหน่วยของเขา ลูกค้าของผู้เล่น 1 ส่งข้อความไปยังเซิร์ฟเวอร์ว่า "เฮ้ฉันเพิ่งเสกคาถานี้" เซิร์ฟเวอร์ทำให้แน่ใจว่าเขามีมานามากพอที่จะใช้คาถานั้นและถ้าเป็นเช่นนั้นจะเพิ่ม buff นั้นลงในสำเนาของเซิร์ฟเวอร์ของวัตถุหน่วย เซิร์ฟเวอร์ส่งข้อความถึงลูกค้ารายอื่นว่า "เฮ้คนนี้เพิ่งเสกคาถานี้" ลูกค้าอื่น ๆ ทุกคนจะได้รับข้อความและไปที่ "อ่าโอเคเจ๋ง" และเพิ่มบัฟนั้นไปยังออบเจคยูนิตในพื้นที่ของตนสำหรับผู้เล่นนั้น ฉันได้อ่านข้อมูลต่าง ๆ เพื่อดูว่าเกมใหญ่ ๆ เล่นหลายคนได้อย่างไรและมันค่อนข้างสับสนสำหรับใครบางคนที่เพิ่งเริ่มตะลุยสิ่งนี้ แต่ดูเหมือนว่า Source engineจะส่งแพ็คเก็ตที่มีการเปลี่ยนแปลงทุกอย่างใน โลกทุกเห็บ? …

3
ฟิสิกส์ไม่ซิงโครไนซ์อย่างถูกต้องผ่านเครือข่ายเมื่อใช้ Bullet
ฉันกำลังพยายามใช้ระบบฟิสิกส์ของลูกค้า / เซิร์ฟเวอร์โดยใช้ Bullet แต่ฉันมีปัญหาในการทำให้สิ่งต่าง ๆ ตรงกัน ฉันใช้สถานะภาพเคลื่อนไหวที่กำหนดเองซึ่งอ่านและเขียนการแปลงจากวัตถุเกมของฉันและทำงานได้ในเครื่อง แต่ฉันได้ลองวิธีที่แตกต่างกันสองวิธีสำหรับเกมเครือข่าย: วัตถุแบบไดนามิกบนไคลเอนต์ที่อยู่บนเซิร์ฟเวอร์ (เช่นไม่ใช่เศษเล็กเศษน้อยและสิ่งที่ไม่สำคัญอื่น ๆ ) ทำด้วยจลนศาสตร์ ทำงานได้อย่างถูกต้อง แต่วัตถุไม่เคลื่อนไหวอย่างราบรื่นมาก วัตถุเป็นแบบไดนามิกทั้งบน แต่หลังจากแต่ละข้อความจากเซิร์ฟเวอร์ที่วัตถุได้ย้ายฉันตั้งค่าความเร็วเชิงเส้นและเชิงมุมเป็นค่าจากเซิร์ฟเวอร์และเรียก btRigidBody :: ดำเนินการต่อไปเปลี่ยนด้วยการแปลงบนเซิร์ฟเวอร์ ฉันยังเรียก btCollisionObject :: เปิดใช้งาน (จริง); เพื่อบังคับวัตถุให้อัปเดต ความตั้งใจของฉันกับวิธีที่ 2 คือโดยทั่วไปแล้วให้ทำตามวิธีที่ 1 แต่การจี้กระสุนเพื่อทำคำทำนายของคนยากจนแทนที่จะทำเองเพื่อทำให้วิธีที่ 1 ราบรื่น แต่ดูเหมือนจะไม่ทำงาน (เพราะเหตุผลที่ไม่ชัดเจน 100% ถึง ฉันยังก้าวผ่านกระสุน) และบางครั้งวัตถุก็จบลงในที่ต่าง ๆ ฉันกำลังมุ่งหน้าไปในทิศทางที่ถูกต้องหรือไม่? กระสุนดูเหมือนว่าจะมีรหัสการแก้ไขของตัวเอง นั่นช่วยให้ฉันทำวิธีที่ 1 ได้ดีขึ้นหรือไม่ หรือรหัสวิธีที่ 2 ของฉันใช้งานไม่ได้เพราะฉันตั้งใจที่จะทำเช่นนั้น? แก้ไข: …

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

3
ทางออกที่ดีที่สุดสำหรับเกม Android เรียลไทม์หลายคน [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันวางแผนที่จะสร้างเกมเรียลไทม์สำหรับผู้เล่นหลายคนสำหรับ Android (ผู้เล่น 2-8 คน) และฉันคิดว่าโซลูชันสำหรับองค์กรที่มีผู้เล่นหลายคนนั้นดีที่สุด: ทำให้เซิร์ฟเวอร์บนพีซีและไคลเอนต์บนมือถือการติดต่อทั้งหมดผ่านเซิร์ฟเวอร์ (ClientA -> PC SERVER -> ไคลเอนต์ทั้งหมด) ใช้บลูทู ธ ฉันยังไม่ได้ใช้และฉันไม่รู้ว่ามันยากที่จะสร้างผู้เล่นหลายคนผ่านบลูทู ธ ทำให้เซิร์ฟเวอร์บนหนึ่งในอุปกรณ์และอุปกรณ์อื่น ๆ เชื่อมต่อ (ผ่านเครือข่าย แต่ฉันไม่รู้ว่าการแก้ไขปัญหาอุปกรณ์ผ่าน NAT เป็นเรื่องยากไหม) ทางออกอื่น ๆ ?

2
อะไรคือวิธีที่ดีที่สุดในการทำให้เป็นอันดับและยกเลิกการบอกกล่าวข้อความเครือข่ายสำหรับเกมที่มีผู้เล่นหลายคนใน C / C ++
เรากำลังใช้ JSON ในขณะนี้และต้องการย้ายไปยังรูปแบบไบนารีสำหรับข้อความบางประเภทระหว่างไคลเอนต์และเซิร์ฟเวอร์ ฉันควรจะอ่าน structs ลงในซ็อกเก็ตหรือไม่? ใช้บัฟเฟอร์โปรติคอล / เจริญเติบโตอย่างรวดเร็ว? ฉันควรแสดงอาร์เรย์ของข้อมูลอย่างไร อินเตอร์เฟสควรมีลักษณะอย่างไรสำหรับการบรรจุ / เปิดออกข้อมูล

2
ความเป็นไปได้ในการเชื่อมต่อเครือข่ายของ XNA และ Xbox 360 คืออะไร?
ฉันรู้ว่า XNA สำหรับ Xbox 360 มีการ จำกัด การเข้าถึงเครือข่ายมีข่าวลือว่าอนุญาตเฉพาะการสื่อสารผ่านโพรโทคอล Microsoft propitiatory ไปยังหน่วย Xbox 360 อื่น ๆ XNA มีความเป็นไปได้ในการเชื่อมต่อเครือข่ายอะไรบ้าง? สามารถเชื่อมต่อยูนิต Xbox 360 จำนวนเท่าใดกับเครือข่ายย่อยเดียวกัน สูงสุด 16 Xbox ใดสามารถส่งข้อมูลไปยัง Xbox อื่น ๆ บนเครือข่ายย่อยเช่นการสื่อสารแบบ Peer-to-peer ได้หรือไม่ Xbox สามารถสื่อสารกับ XNA บน Windows PC ได้หรือไม่ มีอุปกรณ์อื่นที่คุณสามารถสื่อสารด้วยได้หรือไม่? แล้วเซิร์ฟเวอร์เกมล่ะ? คุณสามารถตั้งค่าเซิร์ฟเวอร์เกมแบบผู้เล่นหลายคนของคุณเองและให้ Xbox เชื่อมต่อกับมันและสื่อสารได้อย่างอิสระหรือไม่? แพลตฟอร์มใดที่คุณจะเขียนรหัสเซิร์ฟเวอร์เกม C ++ บน Unix? หน่วย Xbox …

4
มันสมเหตุสมผลไหมที่จะใช้ทั้ง TCP และ UDP ในครั้งเดียว?
หลังจากอ่านUDP ยังดีกว่า TCP สำหรับเกมเรียลไทม์ที่มีข้อมูลมากหรือไม่? ฉันสงสัยว่ามันสมเหตุสมผลที่จะใช้ทั้ง TCP และ UDP ในเวลาเดียวกัน แต่สำหรับสิ่งต่าง ๆ : TCP สำหรับการส่งข้อมูลที่ส่งไม่บ่อยนัก แต่ควรรับประกันว่าจะมาถึงอย่างน่าเชื่อถือ เช่นการอัพเดทคะแนนชื่อของผู้เล่นหรือแม้แต่สถานะเปิด / ปิดของแสงในโลกของเกม UDP สำหรับการส่งข้อมูลที่อัปเดตอยู่ตลอดเวลาและอาจสูญหายได้ในบางครั้งเนื่องจากข้อมูลที่ใหม่กว่าอยู่ระหว่างทาง เช่นตำแหน่งการหมุน ฯลฯ นี่เป็นความคิดที่สมเหตุสมผลหรือไม่ ข้อเสียที่เป็นไปได้คืออะไร? มีวิธีที่ดีกว่าในการจัดการกับสิ่งนี้หรือไม่?

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