Thư viện JS tốt cho nhà phát triển trò chơi là gì? [đóng cửa]


56

Nếu tôi quyết định viết một trò chơi đơn giản cả văn bản và đồ họa (2d) tôi sẽ sử dụng thư viện nào? (Giả sử chúng tôi đang sử dụng trình duyệt tương thích HTML5)

Những điều chính tôi có thể nghĩ đến

  • Hiển thị văn bản trên màn hình
  • Hoạt hình họa tiết (sử dụng hình ảnh / css)
  • Nhập liệu (chụp các phím mũi tên và nhận vị trí chuột tương đối)
  • Có lẽ một số tài nguyên tải trước hoặc tải động tài nguyên và chọn thứ tự
  • Âm thanh (nhưng tôi không chắc lúc đầu điều này sẽ quan trọng với tôi như thế nào). Có lẽ với âm thanh trộn và xâu chuỗi hoặc lặp đi lặp lại mãi cho đến khi dừng lại.
  • Kết nối mạng (mức độ ưu tiên thấp) để kết nối người dùng với người khác hoặc liên tục NHẬN dữ liệu mà không cần nhiều yêu cầu (tôi biết điều này tồn tại nhưng tôi không biết cách dễ dàng để thiết lập hoặc sử dụng. Nhưng điều này không quan trọng đối với tôi. câu hỏi).

3
Danh sách khá đầy đủ của trò chơi html5 libs github.com/bebraw/jswiki/wiki/Game-Engines
oberhamsi

Gì? Bạn có thể làm tất cả điều đó chỉ với JavaScript thuần túy. Socket.io cho mạng, mặc dù.
jcora

Bạn có thể thấy Stage.js thú vị (Tôi là tác giả của nó).
Ali Shakiba

Câu trả lời:


25

jQuery MooTools là các thư viện JavaScript tuyệt vời; Tôi thích jQuery hơn. Một trong hai sẽ hỗ trợ bạn trong việc phát triển trò chơi JS nếu bạn sử dụng DOM. Nếu bạn đi với kết xuất Canvas, tôi vẫn nghĩ bạn nên sử dụng một trong những thư viện đó, nhưng bạn sẽ cần học các hàm Canvas. Đây là một hướng dẫn giới thiệu cho bạn về canvas bằng cách tạo một bản sao Breakout, vì vậy nó có thể chính xác là thứ bạn đang tìm kiếm (và nó sử dụng jQuery).

Các họa tiết hoạt hình là một vấn đề thay đổi một src hình ảnh, hoặc tải trước một số hình ảnh và hoán đổi chúng, hoặc trong một khung vẽ chỉ vẽ các khung hình của một hình ảnh động. Các thư viện trên có thể giúp với bất kỳ trường hợp nào. Các thư viện cũng giúp nhập liệu (xem xét các sự kiện như onkeypress và onmousemove).

Để tải trước tài nguyên, tôi dường như một số trò chơi sử dụng một hình ảnh "tấm sprite" duy nhất ( đây là trò chơi dành cho trò chơi Pacman của Google ). Tôi tin rằng về cơ bản họ tạo ra một DIV có kích thước một ô, với thuộc tính hình ảnh nền CSS được đặt thành trang sprite và thuộc tính vị trí nền được đặt thành phần bù của ô trên trang sprite. Tôi chưa thấy một thư viện sẽ làm điều này cho bạn, nhưng jQuery hoặc MooTools có thể giúp bạn tự động tạo DIV và thao tác CSS của nó. Mặt khác, tải trước hình ảnh là vấn đề tạo <img>thẻ của hình ảnh bạn muốn tải trước và không thêm chúng vào trang (hoặc thêm chúng vô hình). Đây là một bài viết trên blog có một số mã cho một hàm sử dụng jQuery để tải trước hình ảnh cho bạn.

SoundManager 2 dường như là thư viện âm thanh JS để sử dụng; Tôi biết Vanthia sử dụng nó và Pacman của Google đãsử dụng một cái gì đó tương tự (hoặc ít nhất là cùng một kỹ thuật, sử dụng tệp Flash ẩn trên trang để phát âm thanh).

Để kết nối mạng, jQuery có thể xử lý AJAX cho bạn hoặc nếu bạn muốn kết nối mạng thời gian thực hơn nhiều (và có máy chủ để làm như vậy), hãy xem xét các ổ cắm JavaScript . Tôi không biết nếu có một thư viện ổn định ngoài đó cho nó, nhưng bạn có thể xem xét cái này hay cái này . Về cơ bản, nó sử dụng tệp Java hoặc Flash ẩn trên trang để bạn có thể thực hiện giao tiếp ổ cắm thực sự với JavaScript, nhanh hơn nhiều so với bỏ phiếu AJAX và hiệu quả hơn một chút so với "AJAX Push" . Tuy nhiên, rất có thể, AJAX Push sẽ là những gì bạn muốn và APE (Ajax Push Engine) có lẽ là thư viện để sử dụng.

Ngoài ra, đây là một cuộc thảo luận công nghệ của Google về "Xây dựng công cụ trò chơi dựa trên JavaScript cho web" . Nó trông gọn gàng.


2
Câu trả lời này là một chút bảo thủ; nếu anh ta chỉ muốn sử dụng trình duyệt html5 thì anh ta có thể dùng canvas và sử dụng một trong các thư viện html5 (xem nhận xét của tôi về câu hỏi). Sử dụng DOM & CSS cho các trò chơi có vẻ như là một hack (mặc dù một số hack khả thi trong một số trường hợp).
oberhamsi

2
Điều gì làm cho nó có vẻ như một hack? Google không gặp vấn đề gì khi sử dụng DOM & CSS thuần túy với logo PacMan của họ và tôi khá thích trò chơi pong của mình trên trang chủ. Thực ra, thành thật mà nói, canvas có vẻ như là một hack, hack một hình vuông đồ họa kết xuất thành một trang bị thống trị bởi DOM. Nhưng than ôi với sự thúc đẩy đó và WebGL, rõ ràng trình duyệt sẽ trở thành ứng dụng làm mọi thứ nặng nề nếu chưa có. Tôi lạc đề ...
Ricket

Nếu anh ta muốn sử dụng âm thanh, kết nối mạng, kết xuất văn bản, anh ta sẽ phải sử dụng trình duyệt sẵn sàng html5. Than ôi sẽ là một lựa chọn tốt. Nếu bạn gắn bó với DOM & CSS, bạn sẽ bị hạn chế vì các công nghệ này đã tạo thành một lớp trình bày với các giả định nhất định (luồng văn bản, lớp, loại biểu đồ cảnh cho tài liệu văn bản). Trong khi với canvas, bạn có thể thao tác các pixel theo bất kỳ cách nào bạn thấy phù hợp, gần với 'bình thường', các công cụ trò chơi thô trên SDL hoặc opengl.
oberhamsi

Các thư viện mạng và âm thanh tôi cung cấp không yêu cầu HTML5. Và thực sự tôi thấy dòng văn bản, phân lớp và biểu đồ cảnh giống như lợi ích. Hầu hết các trò chơi chỉ là các họa tiết (hình ảnh) được định vị và di chuyển xung quanh và không cần truy cập trực tiếp vào pixel. Nó thực sự cần được đánh giá dựa trên trò chơi mà bạn muốn thực hiện, và nếu bạn cảm thấy thoải mái hơn với canvas hoặc DOM, nếu bạn muốn hỗ trợ các trình duyệt cũ hơn, nếu bạn cần thêm canvas cung cấp năng lượng, v.v.
Ricket

1
Vâng, nó phụ thuộc vào trò chơi. Nhưng anh ta yêu cầu HTML5 và câu trả lời của bạn chủ yếu là về Flash và DOM cấp 1 :) Nếu anh ta muốn thực hiện phát triển HTML5, đừng lôi kéo anh ta trở lại.
oberhamsi

12

Khi tôi đánh giá các công cụ JavaScript cách đây ít lâu, yêu thích của tôi là Crafty:

http://craftyjs.com/

Có rất nhiều lựa chọn mà tôi phải xem xét, và một số lựa chọn khác tôi thích là:

http://easeljs.com/

http://www.limejs.com/

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

(Ngẫu nhiên, một tùy chọn khác ban đầu trông khá hấp dẫn là http://impactjs.com/ nhưng xem xét nó có tốn tiền và các tùy chọn khác mà tôi đã xem là các công cụ nguồn mở có một số thiếu sót rõ ràng, như không thể đính kèm các yếu tố hiển thị trong một người thừa kế.)


CẬP NHẬT: Đã gần 2 năm kể từ khi tôi đăng câu trả lời đó và tình hình đã thay đổi một chút (đây một lĩnh vực công nghệ còn non trẻ.) Mặc dù Crafty vẫn là một lựa chọn tuyệt vời, trong năm qua EaselJS đã đón đầu rất nhiều động lực (đặc biệt là xem xét Adobe đã nhảy vào tàu EaselJS .) Tôi sẽ chuyển sang công cụ đó cho các dự án trong tương lai (cũng lưu ý rằng nó có một trang web mới )


bạn đề nghị gì hôm nay? sau 4 năm
Pooya Estakhri

1
Vâng, bản cập nhật đã có từ 1,5 năm trước và tôi vẫn đề xuất điều đó.
jhocking

7

Công cụ hiệu ứng trò chơi (javascript) là tuyệt vời cho các trò chơi 2d, gạch / sprite. Trang web này không làm tốt lắm việc mô tả những gì tuyệt vời về nó, nhưng ngay khi bạn tìm hiểu các tài liệu tuyệt vời, bạn sẽ thấy bao nhiêu đã được bảo hiểm cho bạn:

  • mọc
  • phát hiện va chạm
  • chỉnh sửa cấp độ
  • quản lý tài sản
  • âm thanh
  • đầu vào và kiểm soát
  • quản lý và tạo gạch
  • lớp
  • hoạt hình
  • hiệu suất (khóa với tốc độ khung hình)
  • hỗ trợ và trừu tượng trên nhiều trình duyệt
  • lưu trữ
  • nhúng
  • Hỗ trợ của HUD

Tôi thực sự không thể cung cấp một danh sách đầy đủ vì nó rất đầy đủ tính năng. Một điều còn thiếu là khả năng tạo menu và giao diện người dùng trong trò chơi (ví dụ: người quản lý thiết bị, v.v.), nhưng nó được cho là nằm trong danh sách việc cần làm.


4
Thật không may, công cụ hiệu ứng dường như bị bỏ rơi hoàn toàn.
Letharion

6

Tôi duy trì một công cụ trò chơi 2D canvas có tên là JawsJS - http://jawsjs.com/

Nguồn @ https://github.com/ippa/jaws

vách đá:

  • Mã tài liệu có thể đọc được
  • Hơn 12 ví dụ tài liệu đi kèm
  • Các hàm tạo hữu ích như Sprite (), SpriteSheet () và Animation ()
  • Trạng thái trò chơi - Các phần riêng biệt trong trò chơi của bạn để có mã được tổ chức tốt hơn
  • Tài sản - Hàm sẽ tải trước tất cả tài sản của bạn trước khi trò chơi bắt đầu
  • Không phụ thuộc vào bất kỳ thư viện javascript nào khác
  • Xây dựng dựa trên những bài học rút ra từ nhiều năm phát triển Chingu, một trò chơi Ruby lib


4

Gần đây tôi đã thực hiện một số nghiên cứu trong lĩnh vực này, vì vậy hãy để tôi chip trong 0,02 đô la của tôi:

PlayN là một thư viện đa nền tảng từ Google, nơi biên dịch một trò chơi hướng đối tượng từ Java sang javascript / Flash / Android. Nó sẽ xử lý JSON (AJAX), các mô hình dữ liệu và có ngữ nghĩa lành mạnh để cập nhật và kết xuất. Công cụ rất mát mẻ.

Xử lý Là một thư viện dễ sử dụng nhằm vào các nhà thiết kế và nghệ sĩ. Nó cực kỳ đơn giản để sử dụng và có thể cho bạn kết quả tuyệt vời. Tôi đã sử dụng phiên bản Java để mô hình hóa khoa học và rất vui khi sử dụng. Các cảnh 3D sẽ cần WebGL, nhưng các cảnh 2D hoạt động mà không có.

Three.js Có một số bản demo tuyệt vời. Nó đòi hỏi WebGL, nhưng kết quả có vẻ xứng đáng. Có một số ví dụ thoáttrực tuyến quá.

Dưới đây là một số mục khác trong các liên kết cá nhân của tôi liên quan đến WebGL:





1

Plugin Pixie

Những người tạo ra contrasaurus đã phát hành rất nhiều thành phần riêng lẻ của họ !!!

Họ có mã để thực hiện các phép biến đổi ma trận , trừu tượng canvas và nhiều điều thú vị hơn nữa.

của họ là tuyệt vờithư viện của họ thực sự hữu ích.



1

Điều kỳ lạ là Thư viện đóng cửa của Google chưa được đề cập. Nó có một API khổng lồ, cho phép nhiều kiểu mã hóa hướng đối tượng hơn và có trình biên dịch.

Tôi đã sử dụng cho đến nay chỉ có trình biên dịch nhưng tôi đang có kế hoạch nghiên cứu phần còn lại càng sớm càng tốt.


1

Tôi thường sử dụng jawsjs vì thực sự dễ dàng để thiết lập và bắt đầu phát triển một trò chơi trong vài phút. Nó có rất nhiều lớp mặc định thực sự hữu ích (Tilemap, Viewport, Sprite và các lớp khác) thực sự giúp phát triển trò chơi.


1

Bạn thực sự có rất nhiều trong số họ, nhưng điều đầu tiên chủ yếu phụ thuộc vào loại công cụ trò chơi mà bạn đang tìm kiếm. Tôi có thể cung cấp cho bạn một số tài liệu tham khảo đáng chú ý nhất.

Công cụ trò chơi 2D

  • Cocos2D có xu hướng thời trang hơn một chút vào lúc này. Tôi thấy các câu hỏi Cocos2D xuất hiện ở đây và ở đó trên Stackoverflow gần đây.
  • Tác động , bạn có thể thấy một điểm chuẩn chạy trên trang web chính thức.

Công cụ trò chơi 3D

Nền tảng Mozilla đã làm việc trên một công cụ trò chơi 3D có tên Paladin . Đó là Mozilla mà tôi thực sự không thể làm tổn thương tôi đoán.


0

Ngoài ra còn có gameQuery, một công cụ trò chơi dựa trên jQuery. Có tài liệu tốt về API của họ, cũng như, một vài API trình bao bọc âm thanh mà họ liên kết đến trên trang web của họ.

http://gamequery.onaluf.org/




0

Tom ở đây từ Scirra, chúng tôi là một nhóm 2 người đã tạo ra Construct 2, nhà sản xuất trò chơi HTML5 . (Phiên bản miễn phí có sẵn).

Bạn có thể muốn xem xét một động cơ như của chúng tôi vì nó làm rất nhiều công việc cho bạn. Ví dụ, để tự thực hiện các va chạm trong mã có thể rất khó khăn (nghĩ rằng các va chạm đa giác). Mọi thứ trong danh sách của bạn đều có thể dễ dàng đạt được với Construct 2.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.