게임과 앱
Breakout은 이 저장소에서 실행합니다. 나머지는 별도 저장소 또는 npm 패키지이며 각 절의 작업 디렉터리를 사용해야 합니다. 모두 그래픽 세션과 네이티브 빌드 요구 사항이 필요합니다. 각 프로젝트의 의존성 버전은 sfml.js 릴리스와 독립적입니다.
Süper Mario Kart
설치 및 실행
Node.js 20.5 이상 · 오디오가 있는 그래픽 데스크톱 · 네이티브 빌드 요구 사항
프로젝트 디렉터리에 저장소를 복제하고 게임 루트에서 실행하세요.
git clone https://github.com/XadillaX/super-mario-kart-sfml.js.git
cd super-mario-kart-sfml.js
npm install
npm startnpm start는 dist/로 컴파일한 뒤 게임을 실행합니다. Python 코스 제작 도구는 선택 사항이며 플레이에는 필요하지 않습니다.
키 안내
- X
- 가속
- Z
- 브레이크
- C
- 점프 / 드리프트
- Left Right
- 조향
- Up Down
- 전방 / 후방 아이템 사용
- Enter
- 확인 / 코스 소개 건너뛰기
- Esc
- 일시 정지
일시 정지 메뉴에서 No를 선택하고 Enter를 누르면 재개합니다. Yes는 경주를 포기합니다.
Controls와 Settings 메뉴에서 키, 음량과 해상도를 설정할 수 있습니다.
코스, 출처와 라이선스
super-mario-kart-sfml.js는 C++과 SFML 2.5.1로 작성된 vmbatlle/super-mario-kart를 TypeScript + sfml.js로 이식한 프로젝트입니다. TypeScript 모듈 54개가 원본 소스 구조를 따르며 Mode 7 렌더링, 게임 로직, AI와 리소스를 유지합니다.
의존성은 sfml.js@1.0.0-rc.2와 typescript@7.0.2로 고정됩니다.
코스는 Donut Plains 1, Mario Circuit 2, Ghost Valley 1, Bowser Castle 1, Rainbow Road입니다. 코드는 GPL v3이며 캐릭터, 그래픽과 음악의 권리는 Nintendo에 있습니다. 비공식 교육용 팬 프로젝트입니다.
play-nes
설치 및 실행
Node.js 22 권장 · Python과 C++20 컴파일러 · 오디오가 있는 그래픽 데스크톱
배포된 플레이어를 설치하고 내장 게임을 실행하세요.
npm install -g play-nes
nes croom사용 권한이 있는 로컬 ROM을 열려면:
nes "/path/to/your game.nes"키 안내
플레이어 1
- 방향
- W A S D
- A / B
- J K
- Select
- 오른쪽 Shift
- Start
- Enter
플레이어 2
- 방향
- Left Right Up Down
- A / B
- 숫자 패드 5 숫자 패드 6
- Select
- 숫자 패드 8
- Start
- 숫자 패드 9
Esc 또는 창 닫기로 종료합니다. 포커스를 잃으면 누른 버튼을 해제합니다.
화면 및 속도 옵션
--scale 3은 창 배율을 바꾸고 --frameRate 60은 정상 속도를 선택합니다. 프레임률은 표시뿐 아니라 에뮬레이션 속도도 바꿉니다. 전체 옵션은 nes --help를 참고하세요.
벽돌 깨기 플레이하기
sfml.js 저장소 루트에서 처음에 npm ci, 이후 node examples/breakout.cjs를 실행합니다. 소스 변경 후에는 npm run build를 실행하세요.

breakout.cjs는 충돌 판정, 세 번의 목숨, 점수, 승패 상태를 갖춘 게임입니다. 왼쪽/오른쪽 방향키 또는 A/D로 이동하고, Space로 발사하거나 다시 시작하며, P로 일시 정지하고, Esc로 종료합니다. 직접 플레이할 때 포커스를 잃으면 일시 정지합니다.
npm run demo:breakout으로 빌드하고 실행할 수 있습니다. macOS/Linux에서 같은 게임 화면을 캡처하려면 다음을 실행하세요.
SFML_DEMO_SNAPSHOT=/tmp/sfml-breakout.png \
node examples/breakout.cjs --autoplay --frames=1500마지막 프레임의 실제 네이티브 화면을 저장합니다. --autoplay는 패들을 자동으로 조작하고 --frames는 실행 프레임 수를 제한합니다. node examples/breakout.cjs --self-test는 창을 열지 않고 게임 로직을 검사합니다.
node-sfml-demos
node-sfml-demos에는 sfml.js로 구현한 Bomberman, Breakout, Tetris, Doodle Jump, Arkanoid가 포함되어 있습니다.
프로젝트를 보관하는 디렉터리에서 이 별도 저장소를 복제한 뒤, 각 게임 디렉터리에서 의존성을 설치하고 실행하세요. Bomberman의 경우:
git clone https://github.com/XadillaX/node-sfml-demos.git
cd node-sfml-demos/bomberman
npm install
node index.js게임 디렉터리, 조작법, 원본 C++ 소스 코드는 저장소 README를 참고하세요. 네이티브 빌드 요구 사항도 적용됩니다.
Node.js 22, Python 3, C++20 도구 모음을 사용합니다. 각 게임 폴더에서 npm install 후 node index.js를 실행하세요. 일부 게임이 폰트와 텍스처를 공유하므로 전체 저장소를 유지해야 합니다. 각 게임은 sfml.js@1.0.0-rc.2로 고정되어 있으며 이 페이지에서 업그레이드하지 않습니다. 모두 창 닫기를 지원하고 Bomberman은 오디오도 사용합니다. Tetris, Doodle Jump, Arkanoid는 원형의 미완성 게임 로직을 유지합니다.


별이 있는 배경의 벽돌 깨기.
조작 · A/D 또는 좌/우로 이동과 발사, Space로도 발사합니다. 패배 후 Space를 놓으면 초기화됩니다. Esc로 종료합니다.
실행 디렉터리: node-sfml-demos/breakout/
npm installnode index.js


초록 플랫폼 사이를 점프합니다.
조작 · 좌/우 이동, 점프는 자동입니다.
실행 디렉터리: node-sfml-demos/doodle_jump/
npm installnode index.js

ClojureScript 게임 16개
16-sfml.js-games-ported는 jsyqrt/games의 포크입니다. 원본 게임 16개는 C++과 SFML로 작성되었습니다. 이 포크는 모든 게임을 ClojureScript와 sfml.js로 이식하며 원래 디렉터리 구조, 리소스, 게임 로직과 조작법을 유지합니다.
nbb를 통해 Node.js에서 실행하므로 JVM이나 별도의 컴파일 단계가 필요하지 않습니다. 프로젝트를 보관하는 디렉터리에 게임 저장소를 복제한 뒤, 저장소 루트에서 실행하세요.
git clone https://github.com/XadillaX/16-sfml.js-games-ported.git
cd 16-sfml.js-games-ported
npm ci
npx nbb "01 Tetris/main.cljs"Node.js 20.5 이상, 네이티브 빌드 요구 사항을 충족하는 환경, OpenGL 창을 지원하는 그래픽 세션이 필요합니다. 의존성은 sfml.js@1.0.0-rc.2와 nbb@1.6.214로 고정되어 있습니다. 각 스크립트는 자신의 디렉터리를 기준으로 리소스를 찾습니다.







컴퓨터 차량과 함께 경주
조작 · 위 가속, 아래 제동/후진, 좌/우 조향
npx nbb "07 Racing (Top Down)/main.cljs"

원근감 있는 도로, 커브와 도로변 풍경
조작 · 좌/우 조향, 위/아래 전진/후진, Tab 가속, W/S 카메라 높이 변경
npx nbb "08 Outrun/main.cljs"




선택 가능한 같은 패의 쌍 제거
조작 · 왼쪽 클릭으로 쌍 선택, 오른쪽 클릭으로 되돌리기
npx nbb "12 Mahjong Solitaire/main.cljs"


말을 드래그하는 체스판과 외부 Stockfish 엔진
조작 · 말 드래그, Space로 엔진 수 요청, Backspace로 되돌리기
npx nbb "14 Chess/main.cljs" /path/to/stockfish
OS에 맞는 Stockfish 실행 파일을 별도로 설치하고 압축을 푼 실행 파일 경로를 전달하세요. 엔진은 포함되지 않습니다. Windows에서는 main.cljs 옆에 stockfish.exe를 두면 인수 없이 실행할 수도 있습니다.

Box2D 물리 기반 2인용 배구
조작 · 빨강은 좌/우 이동과 위 점프, 초록은 A/D 이동과 W 점프
npx nbb "15 Volleyball/main.cljs"
게임 저장소 루트의 npm ci가 box2dweb@2.1.0-b를 설치합니다.

Chess에는 현재 운영체제용 Stockfish 실행 파일이 별도로 필요하며, 표의 명령에 실행 파일 경로를 전달합니다. Volleyball이 사용하는 box2dweb은 npm ci로 설치됩니다. 게임 창을 닫으면 종료됩니다. 스크린샷, 소스 코드와 조작법은 게임 목록을 참고하세요.
스크린샷 출처
게임 리소스는 출처를 명시한 원본 프로젝트에서 가져왔습니다. provenance.json에 이미지 출처와 처리를 기록합니다. 이미지는 호환성이나 게임 동작 테스트 보고서가 아닙니다. 리소스의 권리는 각 저자에게 있으며 이미지 게시로 라이선스를 변경하지 않습니다.
원본 C++ 게임과 튜토리얼 출처는 jsyqrt/games, 참조 이식은 XadillaX/16-sfml.js-games-ported를 참고하세요. node-sfml-demos와 play-nes는 각 라이선스와 출처를 기록합니다.

