การเพิ่มผู้เล่นหลายคนในเกม HTML5 [ปิด]


15

ฉันสนใจที่จะสร้างเกมที่ฉันมีประสบการณ์แบบร่วมมือในขณะนี้ แต่ฉันอยากรู้ว่าวิธีที่ดีที่สุดในการนำ HTML5 มาใช้

ฉันทำเกมก่อนที่จะใช้ซ็อกเก็ต C ตรงและยังมีห้องสมุดสุทธิสำหรับ SDL

ตัวเลือกที่ดีที่สุดของฉันในการทำสิ่งนี้ในสภาพแวดล้อมแบบ Canvas คืออะไร

ในปัจจุบันทั้งหมดที่ฉันสามารถทำได้คือโซลูชัน AJAX / ฐานข้อมูล (ด้วยอัตราการรีเฟรชที่สูง) หรือการนำเซิร์ฟเวอร์ PHP มาใช้เพื่อให้ช่องทางข้อมูลผ่านซ็อกเก็ต


รูปแบบการเล่นโดยรวมจะเป็นเกมประเภท platformer-ish 2.5D ดังนั้นลูกค้าทั้งสองรายจะต้องได้รับการปรับปรุงอย่างต่อเนื่องกับตำแหน่งผู้เล่นตำแหน่งศัตรูตำแหน่งขีปนาวุธข้อมูลสิ่งแวดล้อม ฯลฯ


1
เมื่อ websockets ( en.wikipedia.org/wiki/WebSockets ) ได้รับการสรุป (และนำไปใช้ ฯลฯ ) ซึ่งอาจเป็นวิธีที่ดีจนกระทั่งฉันคิดว่า AJAX (ที่ไม่มี X ไม่จำเป็นต้องใช้ XML สำหรับสิ่งนี้) อาจเป็นวิธีที่ดีที่สุด (ยังไม่เป็นวิธีที่ดีมากที่ฉันคิดว่า)
Elva

ดูเหมือนว่าการสนับสนุนสำหรับซ็อกเก็ตเว็บลดลงอย่างรวดเร็ว ...
the_e

คุณต้องการที่จะยืนหรือเกมหรือไม่? หากคุณต้องการสร้างเกม อย่าไปสนใจ html5

@stefan: ทำไมไม่ทั้งสอง เพียงเพราะมันยังไม่ได้ข้อสรุป แต่ก็ไม่ได้หมายความว่าฉันไม่สามารถทำงานกับมันได้!
the_e

คำตอบ:


12

Socket.IOนำเสนอระบบที่สร้างขึ้นบนเลเยอร์อื่น ๆ (รวมถึง websockets, แฟลช, เทคนิคของดาวหาง) ด้วยการเลือกที่สวยงาม

Node.jsเป็นหนึ่งในตัวเลือกสำหรับการเรียกใช้ฝั่งเซิร์ฟเวอร์


5

ดูคำตอบนี้ :

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


3

ดาวหาง ” อาจเป็นคำศัพท์ที่คุณสามารถใช้ประโยชน์ได้จากที่นี่ WebSockets จะเป็นตัวเลือกที่ต้องการมากกว่า (เมื่อพวกเขามีความสุขที่ปลอดภัย)


3

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

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

เกมดังกล่าวได้รับการขึ้นประมาณ 2 เดือนโดยไม่ต้องเริ่มต้นใหม่และมีการแข่งขันนับพัน

Socket.io เป็นการรวมเอาซ็อกเก็ตเข้าด้วยกันและใช้ node.js แต่มันก็ป่องมากเกินไปสำหรับเกมนี้ มีการใช้งาน websocket อื่น ๆ บน github สำหรับ node.js และตัวอย่างของเกมที่ใช้มัน


2

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



2

ขณะนี้ฉันกำลังใช้สิ่งนี้: http://code.google.com/p/phpwebsocket/เป็นเซิร์ฟเวอร์ซ็อกเก็ตของฉันเพื่อทดสอบ มันทำให้การโทรไปยังซ็อกเก็ต C ที่คุณใช้ อาจเป็นบริการบางอย่าง


2

เราทำงานบนแพลตฟอร์มที่มีผู้เล่นหลายคนซึ่งคุณอาจพบว่าน่าสนใจ คุณสามารถดูโครงการของเราได้ที่www.16cubes.com - เราให้บริการจาวาสคริปต์แบบเลเยอร์ที่ง่ายต่อการสื่อสารแบบเพียร์ทูเพียร์ มันค่อนข้างเป็นไปตามหลักการของดาวหางและเรามีแผนที่จะย้ายไปใช้เว็บกระเป๋าเนื่องจากมันจะกลายเป็นมาตรฐานมากขึ้น ในทางกลับกันเราจะให้คุณสมบัติบางอย่างออกจากชั้นวาง .. เช่นการจับคู่ของฝ่ายตรงข้ามโดยอัตโนมัติ, เกมแชท, เพื่อน Facebook เชิญคลิกเดียว ฯลฯ

เรามีการสาธิตโอเอกซ์คุณสามารถรับความคิดที่ดีกว่าถ้าคุณเห็นมัน และใช่คุณสามารถเล่นโดยไม่ระบุชื่อด้วย ไม่ต้องลงทะเบียนหากคุณไม่ต้องการ มี javascript API น้อยกว่า 10 รายการที่คุณต้องใช้และมีให้ที่www.16cubes.com/documentation

เรากำลังมองหาความคิดเห็นเพื่อแจ้งให้เราทราบทั้งดีและไม่ดี


1

ดูที่เฟรมเวิร์กนี้ที่ฉันสร้างขึ้นโดยเฉพาะสำหรับการสร้างเกม html5 ที่มีผู้เล่นหลายคนแบบเรียลไทม์โดยใช้ node.js ในวิธีไคลเอนต์ / เซิร์ฟเวอร์ ที่ซึ่งเซิร์ฟเวอร์ทำการจำลองสถานการณ์ของเกมและผู้เล่นส่งเฉพาะอินพุต

ตัวอย่าง: http://vimeo.com/24149718

repo: https://github.com/onedayitwillmake/RealtimeMultiplayerNodeJs

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