สิ่งที่เกี่ยวข้องกับเกม UDP ง่ายๆ?


17

ฉันเคยลองเขียนเกมง่ายๆกับ UDP ในหนึ่งสัปดาห์เพื่อทดสอบการโยนทิ้ง มันไปอย่างน่ากลัว

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

บางทีวิธีนี้ไม่ใช่วิธีที่ง่ายที่สุด? ฉันสงสัยว่ามันเป็น แต่ฉันออกแบบมันผิดตั้งแต่ต้นและตระหนักในตอนท้ายของวันที่ 2 (ดังนั้นฉันไม่ได้เรียนรู้มากเกินไปหรือเสียเวลามาก)

สำหรับตัวเองและคนอื่น ๆ สิ่งที่เกี่ยวข้องกับเกม UDP อย่างง่ายและฉันจะเขียนได้อย่างไร? หรือฉันจะแก้ปัญหาการทำนายการคืนค่าสถานะอย่างถูกต้องได้อย่างไร

ฉันจะทำเครื่องหมายนี้เป็น CW bc ฉันรู้ว่าจะมีคำตอบที่เป็นประโยชน์มากมาย

คำตอบ:


9

Glenn Fiedler ได้เขียนบทความที่ยอดเยี่ยมเกี่ยวกับเรื่องนี้ซึ่งครอบคลุมแนวคิดพื้นฐานเกือบทั้งหมด


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

ไม่มีบทความใดในเชิงลึกเกี่ยวกับการประสานสถานะซึ่งเป็นสิ่งที่เขาถาม
BlueRaja - Danny Pflughoeft

3

การหมุนของคุณเองอาจเป็นเรื่องการศึกษา แต่บ่อยครั้งที่คุณจะทำสิ่งต่าง ๆ ได้มากขึ้นถ้าคุณสามารถใช้ประโยชน์จากการใช้งานที่มีอยู่ (หรืออย่างน้อยก็เริ่มจากตรงนั้น)

ผมเคยใช้ทั้งENETและRaknet ฉันใช้ Enet ในเกมง่ายๆ แต่ทำในสิ่งที่ฉันต้องการ Enet ใช้ API ระดับต่ำกว่า Raknet Raknet ถูกใช้ในโครงการขนาดใหญ่ Raknet นั้นทรงพลังอย่างยิ่ง แต่ต้องการให้คุณจัดโครงสร้างเกมของคุณรอบกรอบของ Raknet

Enet:

  • การจัดการการเชื่อมต่อ
  • ลำดับ
  • ช่อง
  • ความเชื่อถือได้
  • การกระจายตัวและการประกอบซ้ำ
  • การรวมตัว
  • การปรับตัว
  • ความเบา
  • เสรีภาพ

Raknet:

  • การจำลองวัตถุ
  • AutoPatcher
  • การเชื่อมต่อที่ปลอดภัย
  • เลเยอร์การสื่อสารที่แข็งแกร่ง (โดยทั่วไปคุณสมบัติทั้งหมดของ Enets จะรวมอยู่ในรายการเดียว)
  • การเรียกขั้นตอนระยะไกล
  • การสื่อสารด้วยเสียง
  • การรุกล้ำ NAT

+1 สำหรับ ENet ฉันใช้ไประยะหนึ่งแล้วสำหรับลูกค้าและพวกเขาชอบ
Len Holgate

เขากำลังถามเกี่ยวกับการประสานสถานะ - คำตอบนี้ไม่เกี่ยวข้องกับสิ่งนั้น
BlueRaja - Danny Pflughoeft

-1, เช่นเดียวกับ BlueRaja
Jonathan Dickinson

2

หากคุณมีเวลาและพลังงานคุณสามารถดาวน์โหลด Quake 3 source และศึกษาได้ มันค่อนข้างง่ายที่จะเข้าใจถ้าคุณพอใจกับ C และง่ายที่จะคนจรจัดด้วย

เกมที่มีผู้เล่นหลายคนคนอื่น ๆ ที่มีแหล่งที่มาและใช้ UDP?


1
มีบทความที่อธิบายรหัสด้วย trac.bookofhook.com/bookofhook/trac.cgi/wiki/Quake3Networking
zooropa

0

ถ้าคุณไปโฮมบรูว์ (อย่างที่เคยทำ) คุณจะต้องเรียนรู้เรื่องตัน - เกี่ยวกับสิ่งที่คุณไม่อยากรู้ เช่นเดียวกับการแวะผ่าน NAT ตาม caspin, Enet หายไป แต่คุณสามารถหารหัส STUN โอเพนซอร์สบางตัวที่ใช้งานได้ในสถานการณ์ส่วนใหญ่

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