ฉันจะจำลองการเชื่อมต่ออินเทอร์เน็ตที่ไม่ดีเพื่อการทดสอบได้อย่างไร


105

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


69
ส่งมาให้ฉันสำหรับการทดสอบ! การเชื่อมต่อในประเทศของฉันแย่มากตามค่าเริ่มต้น
เตฟาน

7
เป้าหมายที่น่ายกย่อง ฉันหวังว่าสตูดิโอที่ตีพิมพ์จะทำเช่นเดียวกัน เกมมหากาพย์ฉันมองมาที่คุณ
Gusdor

7
ค้นหาเพื่อนใกล้ ๆ ที่ใช้ Comcast ...
WernerCD

12
การจำลองการเชื่อมต่ออินเทอร์เน็ตที่ไม่ดีประกอบด้วยคำตอบปัจจุบันและอีกมากมาย
MichaelHouse

2
ฉันคิดถึงคำถามเกี่ยวกับ SE ล่าสุดอื่น ๆ ทันที: superuser.com/questions/637594/…
Patrick M

คำตอบ:


63

ฉันคิดว่าDummynetเป็นสิ่งที่คุณกำลังมองหา Dummynet เป็นเครื่องมือจำลองเครือข่ายที่สามารถจำลองข้อ จำกัด แบนด์วิดท์ความล่าช้าการสูญหายของแพ็กเก็ตและอีกมากมาย คุณสามารถเลือกทราฟฟิกที่คุณต้องการสกัดกั้นและกำหนดค่าข้อ จำกัด เช่นเพื่อ จำกัด ทราฟฟิก TCP ขาเข้าทั้งหมดไปที่ 2Mbit / s ที่คุณทำ

ipfw add pipe 2 in proto tcp
ipfw pipe 2 config bw 2Mbit/s

คุณเห็นว่าการเลือกทราฟฟิกนั้นทำโดยไฟร์วอลล์ ipfw ที่รู้จักและไพพ์จัดเตรียมคุณสมบัติข้อ จำกัด

มันสามารถใช้ได้สำหรับ FreeBSD, Linux และ Windows


มันใช้งานได้กับอะแดปเตอร์วนรอบ Windows หรือไม่
Andriy Tylychko

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

@AndyT คุณพบบางสิ่งที่ใช้ได้กับ loopback หรือไม่ การค้นหาสิ่งที่ทำให้ packloss และทำงานกับ loopback นั้นยาก
AaronLS

@AaronLS: โปรดดูคำตอบอื่นได้ที่นี่: gamedev.stackexchange.com/a/100779/4731
Andriy Tylychko

33

เครือข่ายปรับอากาศคอนดิชั่นเนอร์

หากคุณใช้ Mac คุณสามารถใช้ Network Link Conditioner

บานหน้าต่างการตั้งค่าเครื่องปรับอากาศของลิงก์เครือข่าย

คุณสามารถจำลองกรณีต่าง ๆ ของการเชื่อมต่ออินเทอร์เน็ตที่ไม่ดีรวมถึง Edge และ 3G

นอกจากนี้คุณสามารถสร้างโปรไฟล์ของคุณเองด้วยการตั้งค่าของคุณเอง:

โปรไฟล์ที่กำหนดเองของ Network Link Conditioner

เป็นการดาวน์โหลดฟรีใน Xcode (ไปที่ Xcode → Open Developer Tool →เครื่องมือสำหรับนักพัฒนาเพิ่มเติม…และดาวน์โหลดHardware IO Tools สำหรับ Xcode )


ฉันชอบเครื่องมือนี้ แต่ฉันต้องการบางสิ่งที่ฉันสามารถใช้สำหรับการทดสอบอัตโนมัติ ไม่มีใครรู้ว่ามีอินเตอร์เฟสบรรทัดคำสั่งสำหรับสิ่งนี้หรือไม่?
Erik B

15

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

มีตัวเลือกสำหรับ windows ที่เรียกว่าNetLimiterแต่ฉันไม่ได้ใช้มันจึงไม่สามารถรับรองได้

พบเพียง Mac App เรียกSlowlyApp


1
-1 เช่นเดียวกับคำตอบอื่น ๆ นี่เป็นเพียงลิงก์ โปรดอัปเดตคำตอบเพื่อรวมคำอธิบายเกี่ยวกับสิ่งที่แอปพลิเคชันทำและวิธีการใช้งาน
MichaelHouse

8
@ Byte56: สิ่งที่แอพเหล่านี้ทำคือการจำลองการเชื่อมต่อเครือข่ายที่ช้าและ / หรือไม่น่าเชื่อถือเช่นเดียวกับคำถามที่ถาม ฉันค่อนข้างแน่ใจว่าพวกเขาทำได้อย่างไรนอกขอบเขตของเว็บไซต์นี้ ฉันจะบอกว่านี่เป็นคำตอบที่ดีอย่างสมบูรณ์แบบสำหรับคำถามที่ถาม; หากมีปัญหามันอยู่ในคำถามไม่ใช่คำตอบ
Ilmari Karonen

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

9

เงอะงะสำหรับ Windows Vista & 7

ซุ่มซ่าม


ทำงานได้ดีสำหรับ Windows 8.1 บนลูปแบ็ค
Andriy Tylychko

อย่าลืมเรียกใช้ในฐานะผู้ดูแลระบบ หรือเงียบ ๆ ไม่ทำอะไรเลย เครื่องมือที่ยอดเยี่ยมเป็นอย่างอื่น
Neolisk

7

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

หากคุณใช้ Windows คุณสามารถลองใช้SoftPerfect Connection Emulatorได้ โดยพื้นฐานแล้วมันเป็นไดรเวอร์ที่แทรกตัวเองระหว่างแอปพลิเคชันของคุณและเลเยอร์เครือข่าย (คล้ายกับ Wireshark / WinPCAP) สำหรับ NIC ที่เลือกและสามารถจำลองแบนด์วิดท์ จำกัด เวลาแฝงการสูญหายของแพ็กเก็ตและสิ่งอื่น ๆ UI นั้นเรียบง่ายและตรงไปตรงมา

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

ตัวเลือกข้ามแพลตฟอร์มอื่นคือDummyNetซึ่งทำงานในลักษณะที่คล้ายกัน (ผ่าน ipfw) แต่ใช้งานง่ายกว่าเล็กน้อย

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

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


5

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


1
จากภาพรวมครั้งแรกดูเหมือนว่า Charles เป็นพร็อกซี HTTP ชนิดหนึ่งดังนั้นจึงไม่สามารถกำหนดทราฟฟิก TCP หรือ UDP แบบธรรมดาได้ ฉันพลาดอะไรไปรึเปล่า?
vbo

และมันก็มี +5, wft ด้วย?
Marian Paździoch

ฉันไม่แน่ใจว่า "รูปร่างธรรมดา TCP หรือ UDP การจราจร" หมายถึง แต่ฉันใช้เครื่องมือนี้สำหรับสิ่งที่ OP ถามเกี่ยวกับการจำลองการเชื่อมต่ออินเทอร์เน็ตที่ไม่ดี
jhocking

1
@jhocking เขาหมายถึงใช้ได้กับการรับส่งข้อมูล HTTP เท่านั้น เกมเรียลไทม์จำนวนมากใช้ TCP หรือ UDP
AaronLS

0

หากคุณเข้าใจกับพู้ทำเล่นและคุณสนใจเพียง HTTP / 1 คุณก็สามารถเขียนสคริปต์นี้ได้

พู้ทำเล่นไม่รองรับ HTTP / 2 การสกัดกั้นจะทำให้ปริมาณการรับส่งข้อมูล HTTP ทั้งหมดลดระดับเป็น HTTP / 1


น่าสนใจ คุณสามารถให้รายละเอียดเพิ่มเติมได้หรือไม่? อาจเป็นสคริปต์ตัวอย่าง
Philipp

@Philipp คำตอบนี้ ( stackoverflow.com/a/47401557/442351 ) ให้ตัวอย่าง
BanksySan

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

@Philipp มันรองรับ WebSockets เพียงแค่ HTTP / 2 ที่ร้อนแรง ถึงแม้ว่าคุณควรดูที่ HTTP / 2 แต่ก็ไม่เหมือน HTTP / 1 ไม่มีการบล็อกส่วนหัวบรรทัดอีกต่อไปไม่มีการจับมือหลายครั้งไม่มีส่วนหัวและ / หรือคุกกี้ที่ซ้ำกันอีกต่อไป
BanksySan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.