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

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

5
นักแสดงในเกมควรมีความรับผิดชอบในการวาดภาพตนเองหรือไม่?
ฉันยังใหม่ต่อการพัฒนาเกม แต่ไม่ได้เขียนโปรแกรม ฉัน (อีกครั้ง) เล่นกับเกมประเภท Pong โดยใช้canvasองค์ประกอบของ JavaScript ฉันสร้างPaddleวัตถุที่มีคุณสมบัติดังต่อไปนี้ ... width height x y colour ฉันยังมีPongวัตถุที่มีคุณสมบัติเช่น ... width height backgroundColour draw(). draw()วิธีการในปัจจุบันคือการรีเซ็ตcanvasและที่เป็นที่คำถามขึ้นมา ควรPaddleวัตถุมีdraw()วิธีการรับผิดชอบสำหรับการวาดภาพหรือควรdraw()ของPongวัตถุต้องรับผิดชอบสำหรับการวาดภาพของนักแสดง (ฉันคิดว่าเป็นคำที่ถูกต้องโปรดแก้ไขฉันหากฉันไม่ถูกต้อง) ฉันคิดว่ามันจะเป็น advantagous สำหรับPaddleการวาดตัวเองที่ผมยกตัวอย่างวัตถุสองและPlayer Enemyถ้ามันไม่ได้อยู่ในPongของdraw()ฉันจะต้องเขียนรหัสที่คล้ายกันสองครั้ง การปฏิบัติที่ดีที่สุดที่นี่คืออะไร? ขอบคุณ

6
ใครคำนวณ AI ใน MMO ได้บ้าง
ฉันกำลังสร้าง MMO และต้องการเพิ่ม NPC สิ่งที่ฉันไม่รู้การออกแบบขั้นพื้นฐาน การคำนวณลูกค้าหรือเซิร์ฟเวอร์คืออะไร? ฉันจะเข้าใจเซิร์ฟเวอร์ที่คำนวณเหตุการณ์และปฏิกิริยาต่าง ๆ แต่เมื่อมันลงไปที่การบอกตำแหน่งและตำแหน่งและการเคลื่อนไหวของผู้เล่น ใครเป็นผู้คำนวณ AI เซิร์ฟเวอร์หรือลูกค้า ฉันนึกภาพออกไม่ได้ว่าเซิร์ฟเวอร์กำลังคำนวณการหาเส้นทางตำแหน่งการเคลื่อนไหวและอื่น ๆ ได้โปรดฉันต้องการความช่วยเหลือในการทำความเข้าใจนี้ขอบคุณสิ่งที่จะช่วย
30 ai  mmo  server  movement  npc 

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

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

5
C # ทำงานได้กับเซิร์ฟเวอร์เกมแบบเรียลไทม์หรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา คำถามส่วนใหญ่อยู่ในชื่อเรื่อง โดยพื้นฐานแล้วฉันเริ่มพัฒนาเกมแอ็คชั่น 2D แบบผู้เล่นหลายคน ไคลเอนต์ (อาจ) จะอยู่ใน XNA และฉันคิดว่าฉันถามที่นี่ว่าเป็นความคิดที่ดีที่จะใช้ C # สำหรับการพัฒนาฝั่งเซิร์ฟเวอร์เช่นกัน ฉันเดาความจริงที่ว่าภาษานั้นได้รับการจัดการไม่ใช่ปัญหาเนื่องจาก Java ถูกใช้ในเซิร์ฟเวอร์เกม MMO (แก้ไขให้ถูกต้องถ้าฉันผิด) ดังนั้นมีเหตุผลใดที่จะหลีกเลี่ยง C # สำหรับจุดประสงค์นี้ ฉันต้องการให้รวดเร็วและตอบสนองการสื่อสารผ่าน TCP เพื่อแชทกับเซิร์ฟเวอร์ SQL และถ้าไม่มีเหตุผลที่จะหลีกเลี่ยง C # ฉันจะปรับใช้เว็บเซิร์ฟเวอร์เช่นนี้ได้หรือไม่จะเป็น. NET EXE ที่ทำงานบนเครื่องเซิร์ฟเวอร์
22 c#  server 

7
ภาษาใดบ้างที่ใช้ในการพัฒนา MMORPG เช่น EVE Online และ WOW [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ตามที่ฉันเข้าใจแล้ว MMORPGs เป็นเกมที่ทำงานบนคอมพิวเตอร์ของคุณเหมือนกับเกมวิดีโอ 3d ทั่วไปอื่น ๆ แต่ด้วยการกระทำที่เกิดขึ้นในเกมแต่ละครั้งการเปลี่ยนแปลงจะเกิดขึ้นในจักรวาลผ่านการโทร HTTP ไปยังเซิร์ฟเวอร์ ดังนั้นคอมพิวเตอร์ของผู้เล่นจึงทำการยกตัวอย่างหนักในแง่ของการแสดงผลกราฟิกและภาพเคลื่อนไหว แต่โครงร่างเว็บทำการสื่อสารออนไลน์ ดังนั้นฉันสงสัยว่าเว็บเฟรมเวิร์กเซิร์ฟเวอร์และฐานข้อมูลใดบ้างที่ใช้ในการสร้าง MMORPG เช่น EVE Online และ WOW นอกจากนี้ภาษาการเขียนโปรแกรมและเอ็นจิ้นเกมสามมิติใดบ้างที่ถูกใช้เพื่อทำให้ฝั่งไคลเอนต์ (กราฟิก 3 มิติ / แอนิเมชั่น / เสียง) เป็นส่วนหนึ่งของเกม
22 mmo  server 

5
mmorpg เก็บข้อมูลอย่างไร
ฉันต้องการใช้ฐานข้อมูล sql ใน server.exe ของฉัน สมมติว่ามีผู้ใช้ 1,000 คนออนไลน์ และผู้เล่นจะเปลี่ยนข้อมูลเมื่อเล่น และเซิร์ฟเวอร์จำเป็นต้องบันทึกอัพเดตเหล่านี้ แต่อย่างไร ฉันคิดว่ามีสองวิธี: 1) เซิร์ฟเวอร์จะบันทึก ram ในเวลาใช้งานและบางครั้งหรือเซิร์ฟเวอร์รายชั่วโมงจะเขียนข้อมูล (อัพเดต) ไปยังฐานข้อมูล sql จาก ram แต่ถ้ากระแสไฟฟ้าดับหรือเซิร์ฟเวอร์ปิดตัวลงการอัพเดตจะไม่บันทึก แน่นอนฉันไม่ต้องการสูญเสียการปรับปรุง 2) เซิร์ฟเวอร์จะบันทึกอัปเดตในฐานข้อมูล ณ เวลาทำงาน แต่จะเกิดอะไรขึ้นกับความเร็ว ฉันคิดถึงวิธีการหนึ่ง ฉันจะแสดงให้คุณเห็นด้านล่างด้วยภาพ ฉันจะได้รับความเร็วที่เพียงพอสำหรับผู้เล่นออนไลน์ 1,000 คนด้วยวิธีนี้หรือไม่?

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

2
วิธีทำให้นาฬิกาไคลเอนต์เซิร์ฟเวอร์ซิงค์กันสำหรับเกมเครือข่ายที่มีความแม่นยำเช่น Quake 3
ฉันกำลังทำงานกับนักยิงจากบนลงล่าง 2D และพยายามอย่างเต็มที่เพื่อคัดลอกแนวคิดที่ใช้ในเกมบนเครือข่ายเช่น Quake 3 ฉันมีเซิร์ฟเวอร์ที่เชื่อถือได้ เซิร์ฟเวอร์ส่งสแน็ปช็อตไปยังลูกค้า สแน็ปช็อตมีการประทับเวลาและตำแหน่งเอนทิตี เอนทิตีถูกสอดแทรกระหว่างตำแหน่งสแน็ปช็อตเพื่อให้การเคลื่อนไหวดูราบรื่น ตามความจำเป็นการแก้ไขเอนทิตีเกิดขึ้นเล็กน้อย "ในอดีต" เพื่อให้เรามีสแนปชอตหลายรายการที่จะแก้ไขระหว่าง ปัญหาที่ฉันเผชิญคือ "การซิงโครไนซ์นาฬิกา" เพื่อความเรียบง่ายเรามาเสแสร้งสักครู่ว่าไม่มีเวลาแฝงเป็นศูนย์เมื่อทำการโอนย้ายแพ็คเก็ตไปและกลับจากเซิร์ฟเวอร์ หากนาฬิกาเซิร์ฟเวอร์คือ 60 วินาทีข้างหน้าของนาฬิกาไคลเอนต์การประทับเวลาสแน็ปช็อตจะเป็น 60000ms ล่วงหน้าของการประทับเวลาโลคัลไคลเอ็นต์ ดังนั้นสแนปชอตเอนทิตีจะรวบรวมและนั่งประมาณ 60 วินาทีก่อนที่ลูกค้าจะเห็นเอนทิตีที่กำหนดใด ๆ ที่ทำให้การเคลื่อนไหวของเขาเพราะมันใช้เวลานานขนาดนั้นในการติดตามลูกค้า ฉันจัดการเอาชนะมันได้โดยการคำนวณความแตกต่างระหว่างเซิร์ฟเวอร์และนาฬิกาลูกค้าในแต่ละครั้งที่ได้รับสแนปชอต // For simplicity, don't worry about latency for now... client_server_clock_delta = snapshot.server_timestamp - client_timestamp; เมื่อกำหนดระยะเวลาในการแก้ไขเอนทิตีฉันจะเพิ่มความแตกต่างให้กับเวลาปัจจุบันของลูกค้า อย่างไรก็ตามปัญหานี้ก็คือมันจะทำให้เกิดความสะเพร่าเนื่องจากความแตกต่างระหว่างนาฬิกาทั้งสองจะเปลี่ยนแปลงอย่างฉับพลันเนื่องจากสแน็ปช็อตมาถึงเร็วกว่า / ช้ากว่าคนอื่น ฉันจะซิงโครไนซ์นาฬิกาอย่างใกล้ชิดได้อย่างไรว่าการหน่วงเวลาที่รับรู้ได้เพียงอย่างเดียวคือการเข้ารหัสแบบยากสำหรับการแก้ไขและสิ่งที่เกิดจากเวลาแฝงของเครือข่ายปกติ กล่าวอีกนัยหนึ่งฉันจะป้องกันไม่ให้การแก้ไขเริ่มต้นช้าเกินไปหรือเร็วเกินไปเมื่อนาฬิกาถูกซิงโครไนซ์อย่างมีนัยสำคัญโดยไม่มีการกระตุก แก้ไข: ตามวิกิพีเดีย NTP สามารถใช้เพื่อซิงโครไนซ์นาฬิกาผ่านอินเทอร์เน็ตได้ภายในเวลาไม่กี่มิลลิวินาที …

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

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

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

3
มีรูปแบบการเขียนเซิร์ฟเวอร์แบบเทิร์นเบสที่สื่อสารกับไคลเอนต์ n ผ่านซ็อกเก็ตหรือไม่?
ฉันกำลังทำงานกับเซิร์ฟเวอร์เกมทั่วไปที่จัดการเกมให้กับไคลเอนต์เครือข่ายซ็อกเก็ต TCP จำนวนหนึ่งที่เล่นเกม ฉันมี 'การออกแบบ' ที่แฮ็คพร้อมกับเทปพันสายไฟที่ใช้งานได้ แต่ดูเหมือนว่าทั้งบอบบางและไม่ยืดหยุ่น มีรูปแบบที่ดีขึ้นสำหรับวิธีการเขียนการสื่อสารลูกค้า / เซิร์ฟเวอร์ที่แข็งแกร่งและยืดหยุ่นหรือไม่? (ถ้าไม่คุณจะปรับปรุงสิ่งที่ฉันมีด้านล่างได้อย่างไร) ประมาณฉันมีสิ่งนี้: ในขณะที่ตั้งค่าเกมเซิร์ฟเวอร์จะมีหนึ่งเธรดสำหรับแต่ละซ็อกเก็ตผู้เล่นที่จัดการคำขอที่ซิงโครนัสจากไคลเอนต์และการตอบสนองจากเซิร์ฟเวอร์ อย่างไรก็ตามเมื่อเกมดำเนินไปเธรดทั้งหมดยกเว้นหนึ่งสลีปและเธรดจะวนไปตามผู้เล่นทุกคนทีละครั้งเพื่อสื่อสารเกี่ยวกับการเคลื่อนไหวของพวกเขา (ในการตอบกลับคำร้องขอ) นี่คือแผนภาพของสิ่งที่ฉันมีอยู่ในปัจจุบัน; คลิกเพื่อดู / รุ่นที่สามารถอ่านได้ที่มีขนาดใหญ่หรือ66kB รูปแบบไฟล์ PDF ปัญหา: มันต้องการให้ผู้เล่นตอบกลับอย่างแม่นยำด้วยข้อความที่ถูกต้อง (ฉันคิดว่าฉันสามารถให้ผู้เล่นแต่ละคนตอบสนองด้วยอึแบบสุ่มและย้ายต่อเมื่อพวกเขาให้การเคลื่อนไหวที่ถูกต้องแก่ฉัน) ไม่อนุญาตให้ผู้เล่นคุยกับเซิร์ฟเวอร์เว้นแต่จะเป็นตาของพวกเขา (ฉันอาจให้เซิร์ฟเวอร์ส่งการอัปเดตเกี่ยวกับผู้เล่นอื่น แต่ไม่สามารถดำเนินการตามคำขอแบบอะซิงโครนัสได้) ข้อกำหนดขั้นสุดท้าย: ประสิทธิภาพไม่สำคัญยิ่ง ส่วนใหญ่จะใช้สำหรับเกมที่ไม่ใช่เรียลไทม์และส่วนใหญ่สำหรับการเจาะ AIs ต่อกันไม่ใช่มนุษย์ที่กระตุก การเล่นเกมจะเป็นแบบเทิร์นเบสเสมอ (แม้ว่าจะมีความละเอียดสูงมาก) ผู้เล่นแต่ละคนจะได้รับการดำเนินการหนึ่งครั้งก่อนที่ผู้เล่นอื่นจะได้รับการเปิด การนำเซิร์ฟเวอร์ไปใช้จะเกิดขึ้นใน Ruby หากสร้างความแตกต่าง

1
มีบริการเกมเทิร์นเบส (เช่น GKTurnBasedMatch บน iOS) สำหรับเดสก์ท็อปหรือไม่?
GKTurnBasedMatch ของ Game Center ดูเหมือนจะให้บริการที่มีประสิทธิภาพในการจัดการเกมเทิร์นเบสและ OpenFeint ดูเหมือนจะมีบางสิ่งที่คล้ายคลึงกัน ปัญหาคือฉันต้องการบางอย่างเช่นนี้สำหรับเดสก์ทอป ฉันกำลังคิดที่จะกลิ้งบริการที่ใช้ REST ของฉันเองบน Rails แต่หลังจากดูที่เอกสารของ GameKit ฉันรู้ว่ามันใช้เวลานานกว่าที่ฉันต้องการจะทำให้มันมั่นคง ฉันไม่คิดว่ามีสิ่งนี้มีอยู่แล้วที่ฉันพลาดในการค้นหา

2
จะตรวจสอบว่าเซิร์ฟเวอร์เกมสามารถจัดการกับลูกค้าก่อนที่เกมจะวางจำหน่ายได้อย่างไร?
เรากำลังพัฒนาเกมบน iOS ด้วยการสนับสนุนผู้เล่นหลายคน จนถึงตอนนี้ดูเหมือนว่าทุกอย่างจะดี แต่ตอนนี้เราต้องการแน่ใจว่าเซิร์ฟเวอร์สามารถรองรับลูกค้าได้ 10,000 คนหรือไม่ มีความคิดใดที่ฉันจะแน่ใจได้ว่าเซิร์ฟเวอร์จะอยู่รอดได้ในปริมาณมาก
13 server  testing 

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