게임 개발자를위한 좋은 JS 라이브러리는 무엇입니까? [닫은]


56

간단한 게임을 텍스트와 그래픽 (2d)으로 작성하기로 결정하면 어떤 라이브러리를 사용해야합니까? (HTML5 호환 브라우저를 사용한다고 가정)

내가 생각할 수있는 주요 것들

  • 화면에 텍스트 렌더링
  • 스프라이트 애니메이션 (이미지 / CSS 사용)
  • 입력 (화살표 키 캡처 및 상대적 마우스 위치 가져 오기)
  • 아마도 일부 사전로드 리소스 또는 동적으로 리소스로드 및 순서 선택
  • 소리 (그러나 나는 이것이 처음에 나에게 얼마나 중요한지 확신하지 못한다). 아마도 믹싱 및 체인 사운드 또는 정지까지 영원히 반복됩니다.
  • 다중 요청없이 사용자를 다른 사용자에게 연결하거나 데이터를 지속적으로 GET하기위한 네트워킹 (낮은 우선 순위) 질문).

3
HTML5 게임 libs와의 예쁜 전체 목록 github.com/bebraw/jswiki/wiki/Game-Engines
oberhamsi

뭐? 순수한 JavaScript만으로 모든 것을 할 수 있습니다. 그래도 네트워킹을위한 Socket.io.
jcora

당신은 찾을 수 Stage.js의 (나는 저자 해요) 재미를.
알리 Shakiba

답변:


25

jQuery MooTools 는 멋진 JavaScript 라이브러리입니다. 나는 jQuery를 선호한다. DOM을 사용한다면 JS 게임 개발에 도움이 될 것입니다. Canvas 렌더링을 사용하는 경우 여전히 해당 라이브러리 중 하나를 사용해야한다고 생각하지만 Canvas 함수를 배워야합니다. 다음은 Breakout 복제본을 만들어 캔버스를 소개 하는 자습서 이므로 원하는 종류의 것일 수 있습니다 (jQuery를 사용함).

스프라이트 애니메이션은 이미지 src를 변경하거나 여러 이미지를 미리로드하여 스와핑하거나 캔버스에서 애니메이션의 프레임을 그리는 것입니다. 위의 라이브러리는 이러한 경우에 도움이 될 수 있습니다. 라이브러리는 입력에 도움이됩니다 (onkeypress 및 onmousemove와 같은 이벤트를 살펴보십시오).

자원을 사전로드, 나는 (하나의 "스프라이트 시트"이미지를 사용하는 일부 게임 보일 것 여기 하나 인 구글의에 대한 팩맨 게임). CSS 배경 이미지 속성을 스프라이트 시트로 설정하고 배경 위치 속성을 스프라이트 시트의 타일 오프셋으로 설정하여 기본적으로 하나의 타일 크기의 DIV를 생성한다고 생각 합니다. 나는 당신을 위해 이것을 할 라이브러리를 보지 못했지만 jQuery 또는 MooTools는 동적으로 DIV를 만들고 CSS를 조작하는 데 도움이 될 수 있습니다. 그렇지 않으면 이미지를 미리로드하는 것은 미리로드 할 이미지의 <img>태그 를 작성 하고 페이지에 추가하지 않거나 보이지 않게 추가하는 것입니다. 여기 블로그 게시물 jQuery를 사용하여 이미지를 미리로드하는 함수에 대한 코드가 있습니다.

SoundManager 2 는 사용할 JS 사운드 라이브러리 인 것 같습니다. 나는 Vanthia 가 그것을 사용하고 Google의 Pacman이 비슷한 것을 사용했거나 적어도 페이지에서 숨겨진 플래시 파일을 사용하여 사운드를 재생하는 것과 동일한 기술을 사용했습니다.

네트워킹의 경우 jQuery가 AJAX 를 처리 하거나 훨씬 더 많은 실시간 네트워킹을 원한다면 (그리고 서버가 그렇게하도록) JavaScript 소켓을 살펴보십시오 . 안정적인 라이브러리가 있는지는 모르겠지만 this 또는 this을 살펴보십시오 . 본질적으로 페이지에서 숨겨진 Java 또는 Flash 파일을 사용하므로 JavaScript와의 진정한 소켓 통신 을 수행 할 수 있습니다 . 이는 AJAX 폴링보다 훨씬 빠르고 "AJAX Push" 보다 약간 더 효율적 입니다. 그러나 대부분 AJAX Push가 원하는 것이며 APE (Ajax Push Engine) 가 아마도 라이브러리 일 것입니다.

다음은 "웹용 자바 스크립트 기반 게임 엔진 구축" 에 대한 Google 기술 강연 입니다. 깔끔하게 보입니다.


2
이 답변은 약간 보수적입니다. 그가 html5 브라우저만을 사용하려면 캔버스로 가서 html5 라이브러리 중 하나를 사용할 수 있습니다 (질문에 대한 내 의견 참조). 게임에 DOM & CSS를 사용하는 것은 해킹처럼 보입니다 (어떤 경우에는 실행 가능한 해킹이지만).
oberhamsi

2
해킹처럼 보이는 이유는 무엇입니까? 구글은 순수 DOM & CSS를 사용하여 아무 문제가 없었다 팩맨 로고 꽤 내 추천하고 I 탁구 게임 내 홈페이지에 있습니다. 사실 정직하게 말하면, 캔버스는 해킹처럼 보이고, 그래픽 렌더링 사각형을 DOM이 지배하는 페이지로 해킹합니다. 그러나 슬프게도 WebGL은 브라우저가 아직 모든 것이 아니라면 무거운 앱이 될 것입니다. 나는 탈선 ...
Ricket

오디오, 네트워킹, 텍스트 렌더링을 사용하려면 html5 지원 브라우저를 사용해야합니다. 아아 캔버스는 좋은 선택입니다. DOM & CSS를 고수한다면 이러한 기술이 이미 특정 가정 (텍스트 흐름, 레이어링, 텍스트 문서에 대한 장면 그래프의 종류)으로 프리젠 테이션 레이어를 구성하는 한 제한됩니다. 캔버스를 사용하면 SDL 또는 opengl 위에있는 '일반'원시 게임 엔진에 더 가까운 방식으로 픽셀을 원하는대로 조작 할 수 있습니다.
oberhamsi

내가 제공 한 오디오 및 네트워킹 라이브러리에는 HTML5가 필요하지 않습니다. 실제로 텍스트 흐름, 레이어링 및 장면 그래프 모양이 이점으로 간주됩니다. 대부분의 게임은 단지 스프라이트 (이미지)가 위치하고 움직이며 픽셀에 직접 액세스 할 필요가 없습니다. 실제로 만들고자하는 게임을 기반으로 평가해야하며, 캔버스 나 DOM에 개인적으로 더 친숙한 경우, 구형 브라우저를 지원하려는 경우, 여분의 파워 캔버스가 필요한 경우 등을 고려해야합니다.
리켓

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 : (이것은 내가 그 대답을 게시하고 상황이 약간 변경 이후 거의 이년이었다 입니다 특히 (교활은 지난 해의 EaselJS에서 좋은 선택이 여전히 있지만 모멘텀을 많이 발견했습니다. 기술의 초기 영역) Adobe가 EaselJS 열차에 뛰어 들었다고 생각합니다 .) 향후 프로젝트를 위해 해당 도구로 전환하겠습니다 (또한 새로운 웹 사이트 가 있음에 유의하십시오 )


오늘 당신은 무엇을 제안합니까? 4 년 후
Pooya Estakhri

1
글쎄, 업데이트는 1.5 년 전의 것이었지만 여전히 제안합니다.
jhocking

7

효과 게임 엔진 (자바 스크립트) 2D, 타일 / 스프라이트 기반의 게임에 대한 환상적이다. 이 웹 사이트는 훌륭한 점을 잘 설명하지 못하지만 훌륭한 문서를 파고들 자마자 얼마만큼의 내용이 다루어 졌는지 알게 될 것입니다.

  • 분출
  • 충돌 감지
  • 레벨 편집
  • 자산 관리
  • 오디오
  • 입력 및 제어
  • 타일셋 생성 및 관리
  • 레이어링
  • 생기
  • 성능 (프레임 속도로 고정)
  • 브라우저 간 지원 및 추상화
  • 호스팅
  • 퍼가기
  • HUD 지원

완전한 기능을 갖춘 완전한 목록을 제공 할 수는 없습니다. 빠진 것은 게임 메뉴와 UI (예 : 장비 관리자 등)를 만들 수있는 기능이지만 할 일 목록에있을 것입니다.


4
불행히도 효과 엔진은 완전히 포기 된 것으로 보입니다.
Letharion

6

나는 캔버스 2D 게임 엔진이라고 JawsJS을 유지 - http://jawsjs.com/

출처 @ https://github.com/ippa/jaws

낭떠러지 :

  • 읽을 수 있고 문서화 된 코드
  • 12 개 이상의 번들로 제공되는 문서화 된 예
  • Sprite (), SpriteSheet () 및 Animation ()과 같은 유용한 생성자
  • 게임 상태-더 체계적인 코드를 위해 게임의 개별 섹션
  • 자산-게임 시작 전에 Jaws가 모든 자산을 미리로드합니다
  • 다른 자바 스크립트 라이브러리에 의존하지 않습니다
  • Ruby 게임 라이브러리 인 Chingu를 개발하면서 수년간 얻은 교훈을 바탕으로합니다.


4

나는이 분야에서 최근에 나 자신에 대한 조사를 해 왔으므로 0.02 달러를 들여다 보자.

PlayN 은 Google의 크로스 플랫폼 라이브러리로, 객체 지향 게임을 Java에서 javascript / Flash / Android로 컴파일합니다. JSON (AJAX), 데이터 모델을 처리하고 업데이트 및 렌더링을위한 올바른 의미를 갖습니다. 아주 멋진 것들.

프로세싱 디자이너와 아티스트를 겨냥한 사용하기 쉬운 라이브러리입니다. 사용이 매우 간단하고 훌륭한 결과를 얻을 수 있습니다. 과학적 모델링을 위해 Java 버전을 사용했으며 사용하게되어 기쁩니다. 3D 장면에는 WebGL이 필요하지만 2D 장면은 작동하지 않습니다.

Three.js 멋진 데모가 있습니다. WebGL이 필요하지만 그만한 가치가 있습니다. 온라인으로나가는 예제 도 있습니다.

WebGL과 관련된 개인 링크 덤프의 다른 항목은 다음과 같습니다.





1

픽시 플러그인

Contrasaurus 의 제작자 들은 많은 개별 구성 요소를 출시했습니다 !!!

행렬 변환 , 캔버스 추상화 및 더 많은 흥미로운 것들을 수행하는 코드가 있습니다.

그들의 코드는 위대 하고 자신의 라이브러리는 정말 유용합니다.



1

Google 폐쇄 라이브러리 가 언급되지 않은 것이 이상합니다 . 그것은 거대한 API를 가지고 있으며, 더 객체 지향 코딩 스타일을 허용하며 컴파일러를 가지고 있습니다.

나는 지금까지 컴파일러 만 사용했지만 최대한 빨리 휴식을 취할 계획입니다.


1

나는 보통 jawsjs를 사용 하는데 몇 분 안에 설정하고 게임 개발을 시작하기가 쉽기 때문이다. 게임 개발에 실제로 도움이되는 매우 유용한 기본 클래스 (Tilemap, Viewport, Sprite 등)가 많이 있습니다.


1

실제로 많은 것을 가지고 있지만, 그것은 주로 어떤 종류의 게임 엔진을 찾고 있는지에 달려 있습니다. 가장 주목할만한 몇 가지 참고 자료를 드릴 수 있습니다.

2D 게임 엔진

  • Cocos2D 는 현재 조금 더 유행하는 경향이 있습니다. 최근에 Cocos2D 질문이 여기저기서 나오는 것을 보았습니다.
  • 영향을 받으면 공식 웹 사이트에서 벤치 마크가 실행되는 것을 볼 수 있습니다.

3D 게임 엔진

Mozilla 재단은 Paladin 이라는 3D 게임 엔진을 개발하고 있습니다. 그것이 정말로 상처를 줄 수없는 것은 Mozilla입니다.





0

Scirra의 Tom 은 HTML5 게임 메이커 Construct 2를 만든 2 인 팀입니다 . (무료 버전 가능).

많은 레거시 작업을 수행하므로 엔진과 같은 엔진을 고려할 수 있습니다. 예를 들어 코드에서 충돌을하는 것은 실제로 까다로울 수 있습니다 (다각형 충돌을 생각하십시오). Construct 2를 사용하면 목록에있는 모든 것을 쉽게 얻을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.