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