ไลบรารี JS ที่ดีสำหรับเกม dev คืออะไร [ปิด]


56

หากฉันตัดสินใจที่จะเขียนเกมง่ายๆทั้งข้อความและกราฟิก (2d) ฉันจะใช้ไลบรารีใด (สมมติว่าเรากำลังใช้เบราว์เซอร์ที่ใช้งานร่วมกับ HTML5 ได้)

สิ่งสำคัญที่ฉันคิดได้

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

3
รายการที่สมบูรณ์ของเกม html5 libs github.com/bebraw/jswiki/wiki/Game-Engines
oberhamsi

อะไร? คุณสามารถทำสิ่งนั้นได้ด้วย JavaScript ที่บริสุทธิ์ Socket.io สำหรับระบบเครือข่าย
jcora

คุณอาจพบว่าStage.jsน่าสนใจ (ฉันเป็นผู้เขียน)
Ali Shakiba

คำตอบ:


25

jQueryและ MooToolsเป็นไลบรารี JavaScript ที่ยอดเยี่ยม ฉันชอบ jQuery ด้วยตัวเอง ตัวใดตัวหนึ่งจะช่วยคุณในการพัฒนาเกม JS ของคุณหากคุณใช้ DOM หากคุณไปกับการเรนเดอร์ Canvas ฉันยังคงคิดว่าคุณควรใช้ไลบรารี่เหล่านี้ แต่คุณจะต้องเรียนรู้ฟังก์ชั่น Canvas นี่คือบทแนะนำที่แนะนำคุณเกี่ยวกับภาพวาดด้วยการสร้างโคลนการฝ่าวงล้อมดังนั้นมันอาจเป็นสิ่งที่คุณกำลังมองหา (และใช้ jQuery)

ภาพเคลื่อนไหวสไปรต์เป็นเรื่องของการเปลี่ยนภาพ src หรือโหลดภาพหลายภาพแล้วทำการสลับมันหรือในผืนผ้าใบเพียงแค่วาดเฟรมของภาพเคลื่อนไหว ห้องสมุดด้านบนสามารถช่วยเหลือกรณีเหล่านี้ได้ ไลบรารียังช่วยในการป้อนข้อมูลด้วย (ดูเหตุการณ์เช่น onkeypress และ onmousemove)

สำหรับทรัพยากรที่มีการโหลดไว้ล่วงหน้าฉันดูเหมือนว่าจะมีเกมบางเกมที่ใช้อิมเมจ "sprite ชีท" ( นี่คือเกมPacmanของ Google ) ฉันเชื่อว่าพวกเขาสร้าง DIV ที่มีขนาดไทล์เพียงอันเดียวโดยตั้งค่าคุณสมบัติภาพพื้นหลัง CSS เป็นแผ่นสไปรต์และคุณสมบัติตำแหน่งพื้นหลังตั้งเป็นออฟเซ็ตของไทล์บนแผ่นสไปรต์ ฉันไม่ได้เห็นห้องสมุดที่จะทำสิ่งนี้ให้คุณ แต่ jQuery หรือ MooTools สามารถช่วยคุณได้เท่าที่สร้าง DIV แบบไดนามิกและจัดการ CSS ของมัน ไม่เช่นนั้นภาพที่โหลดไว้ล่วงหน้านั้นเป็นเรื่องของการสร้าง<img>แท็กของภาพที่คุณต้องการโหลดไว้ล่วงหน้าและไม่เพิ่มลงในหน้า (หรือเพิ่มพวกเขาไม่สามารถมองเห็นได้) นี่คือโพสต์บล็อก ที่มีรหัสสำหรับฟังก์ชั่นที่ใช้ jQuery เพื่อโหลดภาพให้คุณล่วงหน้า

SoundManager 2น่าจะเป็นไลบรารีเสียง JS ที่จะใช้ ฉันรู้ว่า Vanthiaใช้มันและ Pacmanของ Googleใช้สิ่งที่คล้ายกัน (หรืออย่างน้อยเทคนิคเดียวกันในการใช้ไฟล์ Flash ที่ซ่อนอยู่บนหน้าเพื่อเล่นเสียง)

สำหรับเครือข่าย jQuery สามารถจัดการAJAXสำหรับคุณหรือถ้าคุณต้องการมากขึ้นในเวลาจริงเครือข่าย (และมีเซิร์ฟเวอร์ที่จะทำเช่นนั้น) มองเข้าไปในซ็อกเก็ต JavaScript ผมไม่ทราบว่ามีห้องสมุดที่มีเสถียรภาพออกมี แต่คุณอาจมองเข้าไปในนี้หรือนี้ โดยพื้นฐานแล้วจะใช้ไฟล์ Java หรือ Flash ที่ซ่อนอยู่ในหน้าเพื่อให้คุณสามารถทำการสื่อสารซ็อกเก็ตที่แท้จริงกับ JavaScript ซึ่งเร็วกว่าการโพล AJAX และมีประสิทธิภาพมากกว่า"AJAX Push"เล็กน้อย อย่างไรก็ตามส่วนใหญ่แล้ว AJAX Push จะเป็นสิ่งที่คุณต้องการและAPE (Ajax Push Engine)น่าจะเป็นไลบรารีที่จะใช้

นอกจากนี้ที่นี่เป็นเทคโนโลยีของ Google พูดคุยเกี่ยวกับ"การสร้างเครื่องยนต์เกม JavaScript-Based สำหรับเว็บ" มันดูเรียบร้อย


2
คำตอบนี้ค่อนข้างอนุรักษ์นิยม ถ้าเขาต้องการใช้เบราว์เซอร์ html5 เท่านั้นจากนั้นเขาสามารถใช้ Canvas และใช้หนึ่งในไลบรารี html5 (ดูความคิดเห็นของฉันเกี่ยวกับคำถาม) การใช้ DOM & CSS สำหรับเกมดูเหมือนแฮ็ค (แม้ว่าจะเป็นแฮ็คที่ใช้การได้ในบางกรณี)
oberhamsi

2
อะไรทำให้ดูเหมือนแฮ็ค Google ไม่มีปัญหาในการใช้ DOM & CSS อย่างแท้จริงกับโลโก้ PacManของพวกเขาและฉันค่อนข้างชอบเกมปิงปองของฉันในหน้าแรกของฉัน อันที่จริงแล้ว Canvas ดูเหมือนว่าแฮ็คแฮ็คการแสดงผลกราฟิกเป็นสี่เหลี่ยมลงในหน้าเว็บที่ DOM นั้นเป็นเจ้าของ แต่อนิจจาด้วยการผลักดันไปสู่สิ่งนั้นและ WebGL มันชัดเจนว่าเบราว์เซอร์จะกลายเป็นแอพทำทุกอย่างที่หนักหน่วงถ้ามันยังไม่มีอยู่ ฉันพูดนอกเรื่อง ...
Ricket

ถ้าเขาต้องการใช้เสียง, การสร้างเครือข่าย, การแสดงข้อความเขาจะต้องใช้เบราว์เซอร์ html5 ที่พร้อม ผ้าใบอนิจจาน่าจะเป็นตัวเลือกที่ดี หากคุณยึดติดกับ DOM & CSS คุณจะถูก จำกัด ด้วยเทคโนโลยีเหล่านี้ประกอบไปด้วยเลเยอร์การนำเสนอโดยมีข้อสันนิษฐานบางอย่าง (โฟลว์ข้อความ, เลเยอร์, ​​ชนิดของกราฟฉากสำหรับเอกสารข้อความ) ในขณะที่ใช้ Canvas คุณสามารถปรับเปลี่ยนพิกเซลได้ตามที่เห็นสมควรซึ่งอยู่ใกล้กับเอ็นจิ้นเกมดิบ 'ปกติ' ที่ด้านบนของ SDL หรือ OpenGL
oberhamsi

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

1
ใช่มันขึ้นอยู่กับเกม แต่เขาถามหา HTML5 และคำตอบของคุณส่วนใหญ่เกี่ยวกับ Flash และ DOM ระดับ 1 :) ถ้าเขาต้องการพัฒนา HTML5 ที่มีเลือดไหลออกมาอย่าล่อลวงเขาเลย
oberhamsi

12

เมื่อฉันประเมินเอนจิ้น JavaScript เมื่อไม่นานมานี้สิ่งที่ฉันชอบคือ Crafty:

http://craftyjs.com/

มีตัวเลือกมากมายที่ฉันต้องพิจารณาและอื่น ๆ ที่ฉันชอบคือ:

http://easeljs.com/

http://www.limejs.com/

http://code.google.com/p/casualjs/

(โดยบังเอิญตัวเลือกอื่นที่ดูเนียนสวยในตอนแรกคือhttp://impactjs.com/แต่เมื่อพิจารณาว่าต้องเสียค่าใช้จ่ายเงินและตัวเลือกอื่น ๆ ที่ฉันดูคือเครื่องมือโอเพนซอร์ซมีการละเว้นบางอย่างเช่นการไม่สามารถแนบองค์ประกอบการแสดงผล ทายาท)


UPDATE:เป็นเวลาเกือบ 2 ปีแล้วที่ฉันโพสต์คำตอบนั้นและสถานการณ์ก็เปลี่ยนไปเล็กน้อย (นี่เป็นส่วนที่ตั้งขึ้นใหม่ของเทคโนโลยี) แม้ว่า Crafty ยังคงเป็นตัวเลือกที่ยอดเยี่ยมในปีที่ผ่านมา EaselJS ได้รับแรงผลักดันมากมาย พิจารณาAdobe กระโดดบนรถไฟ EaselJS ) ฉันจะเปลี่ยนเป็นเครื่องมือสำหรับโครงการในอนาคต (โปรดทราบว่ามันมีเว็บไซต์ใหม่ )


วันนี้คุณแนะนำอะไร หลังจาก 4 ปี
Pooya Estakhri

1
การอัปเดตมาจาก 1.5 ปีที่ผ่านมาและฉันยังแนะนำว่า
jhocking

7

เอ็นจิ้นเกมเอฟเฟกต์ (javascript) นั้นยอดเยี่ยมสำหรับเกม 2d, เกมเรียงต่อกัน / สไปรต์ เว็บไซต์ไม่ได้ทำงานที่ดีมากในการอธิบายสิ่งที่ดีมากเกี่ยวกับมัน แต่ทันทีที่คุณขุดลงในเอกสารที่ยอดเยี่ยมคุณจะเห็นจำนวนที่ครอบคลุมสำหรับคุณ:

  • spriting
  • ตรวจจับการชนกัน
  • การแก้ไขระดับ
  • การจัดการสินทรัพย์
  • เสียง
  • อินพุตและการควบคุม
  • การสร้างและจัดการไทล์เซ็ต
  • ฝังรากลึก
  • ภาพเคลื่อนไหว
  • ประสิทธิภาพ (ล็อคเป็นอัตราเฟรม)
  • การสนับสนุนข้ามเบราว์เซอร์และ abstractions
  • โฮสติ้ง
  • การฝัง
  • สนับสนุน HUD

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


4
น่าเสียดายที่เอนจิ้นเอฟเฟกต์ดูเหมือนจะถูกทิ้งร้างอย่างสมบูรณ์
Letharion

6

ฉันบำรุงรักษาเอ็นจิ้นเกม 2D บนผืนผ้าใบชื่อ JawsJS - http://jawsjs.com/

แหล่งที่มา @ https://github.com/ippa/jaws

cliffnotes:

  • รหัสเอกสารที่อ่านได้
  • ตัวอย่างเอกสารที่แถมมา 12+ ชุด
  • ตัวสร้างที่มีประโยชน์เช่น Sprite (), SpriteSheet () และ Animation ()
  • สถานะของเกม - แยกส่วนต่าง ๆ ของเกมของคุณเพื่อการจัดระเบียบที่ดีขึ้น
  • สินทรัพย์ - กรามจะโหลดสินทรัพย์ทั้งหมดของคุณก่อนเริ่มเกม
  • ไม่ขึ้นกับไลบรารี javascript อื่นใด
  • สร้างบทเรียนที่เรียนรู้จากการพัฒนา Chingu ซึ่งเป็น lib game Ruby มาหลายปี


4

ฉันได้ทำการวิจัยในพื้นที่นี้เมื่อเร็ว ๆ นี้ตัวเองดังนั้นให้ฉันชิปใน $ 0.02 ของฉัน:

PlayNเป็นห้องสมุดข้ามแพลตฟอร์มจาก Google ซึ่งรวบรวมเกมเชิงวัตถุจาก Java ไปยัง javascript / Flash / Android มันจะจัดการ JSON (AJAX) แบบจำลองข้อมูลและมีความหมายที่มีสติสำหรับการปรับปรุงและการแสดงผล สิ่งที่เจ๋งมาก

การประมวลผลเป็นห้องสมุดที่ใช้งานง่ายซึ่งมุ่งเน้นที่นักออกแบบและศิลปิน มันใช้งานง่ายเป็นพิเศษและสามารถให้ผลลัพธ์ที่ยอดเยี่ยมแก่คุณ ฉันใช้รุ่น Java สำหรับการสร้างแบบจำลองทางวิทยาศาสตร์และมันเป็นความสุขที่ได้ใช้ ฉาก 3 มิติจะต้องใช้ WebGL แต่ฉาก 2 มิติทำงานได้โดยไม่ต้อง

Three.jsมีการสาธิตที่ดูดี มันต้องใช้ WebGL แต่ผลลัพธ์ดูเหมือนจะคุ้มค่า มีบางตัวอย่างที่ออนไลน์อยู่เช่นกัน

นี่คือรายการอื่น ๆ ใน linkdumps ส่วนตัวของฉันที่เกี่ยวข้องกับ WebGL:




2

หนึ่งที่ผมเพิ่งได้รับการมองด้วยความสนใจก็คือCreateJs มันเป็นคอลเลกชันของห้องสมุดโอเพ่นซอร์สที่จะรวม ...

เพิ่มเติม EaslJs เล่นได้ดีกับBox2D JS


1

ปลั๊กอิน Pixie

ผู้สร้างContrasaurusได้เปิดตัวองค์ประกอบของตัวเองมากมาย !!!

พวกเขามีรหัสที่จะทำการแปลงเมทริกซ์ , abstractions ผ้าใบและสิ่งที่น่าสนใจอื่น ๆ อีกมากมาย

รหัสของพวกเขาดีมากและห้องสมุดของพวกเขามีประโยชน์จริงๆ



1

แปลกที่ไม่ได้มีการพูดถึงห้องสมุดของ Google มันมี API ขนาดใหญ่ให้สไตล์การเขียนโปรแกรมเชิงวัตถุมากขึ้นและมีคอมไพเลอร์

ฉันใช้คอมไพเลอร์จนถึงตอนนี้เท่านั้น แต่ฉันวางแผนที่จะศึกษาส่วนที่เหลือโดยเร็ว


1

ฉันมักจะใช้jawsjsเพราะมันง่ายในการติดตั้งและเริ่มพัฒนาเกมในไม่กี่นาที มันมีคลาสเริ่มต้นที่เป็นประโยชน์มากมาย (Tilemap, Viewport, Sprite และอื่น ๆ ) ที่ช่วยในการพัฒนาเกม


1

คุณมีจำนวนมากจริง ๆ แต่ส่วนใหญ่ขึ้นอยู่กับประเภทของเกมเอ็นจิ้นที่คุณต้องการ ฉันสามารถให้คุณอ้างอิงบางส่วนของสิ่งที่สำคัญที่สุด

เอ็นจิ้นเกม 2D

  • Cocos2Dมีแนวโน้มที่จะเป็นแฟชั่นมากขึ้นในขณะนี้ ฉันเห็นคำถาม Cocos2D โผล่ขึ้นมาที่นี่และเมื่อเร็ว ๆ นี้ใน Stackoverflow
  • ผลกระทบคุณสามารถดูเกณฑ์มาตรฐานที่ทำงานบนเว็บไซต์ทางการ

เอ็นจิ้นเกม 3D

Mozilla มูลนิธิได้รับการทำงานในเครื่องยนต์เกม 3D ที่ชื่อPaladin มันเป็น Mozilla ที่มันไม่สามารถทำร้ายฉันเดาได้


0

นอกจากนี้ยังมี gameQuery, เอ็นจิ้นเกม jQuery มีเอกสารที่ดีเกี่ยวกับ API ของพวกเขารวมถึง API ตัวหุ้มเสียงบางตัวที่ลิงก์ไปยังไซต์ของพวกเขา

http://gamequery.onaluf.org/




0

Tom มาจาก Scirra เราเป็นทีม 2 คนที่สร้างConstruct 2 ผู้สร้างเกม HTML5ขึ้นมา (มีเวอร์ชันฟรี)

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

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