ゲームとアプリ
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 移植版です。54 個の TypeScript モジュールが元のソース構成に対応し、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 は衝突判定、3 つのライフ、スコア、勝敗判定を備えたゲームです。左右キーまたは 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 は原型の未完成のゲーム処理を保持しています。

タイル状のフィールドで遊ぶ 2 人用 Bomberman。
操作 · プレイヤー 1 は WASD と左 Ctrl で爆弾、プレイヤー 2 は矢印と Space で爆弾。マウスでメニュー操作、Esc で一時停止/再開。
実行ディレクトリ: node-sfml-demos/bomberman/
npm installnode index.js

星空を背景にしたブロック崩し。
操作 · A/D または左右で移動と発射。Space でも発射し、失敗後に Space を離すとリセット。Esc で終了。
実行ディレクトリ: node-sfml-demos/breakout/
npm installnode index.js

金色の枠の中で落下するブロック。
操作 · 左右で移動、上で回転、下で落下を加速。
実行ディレクトリ: node-sfml-demos/tetris/
npm installnode index.js

緑の足場の間をジャンプ。
操作 · 左右で移動。ジャンプは自動。
実行ディレクトリ: node-sfml-demos/doodle_jump/
npm installnode index.js

緑のブロックを崩す小さなゲーム。
操作 · 左右でパドル移動。ボールは自動で動き始めます。
実行ディレクトリ: node-sfml-demos/arkanoid/
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 "11 NetWalk (Pipe Puzzle)/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 には、利用する OS 向けの Stockfish 実行ファイルが別途必要です。表のコマンドに実行ファイルのパスを渡してください。Volleyball が使う box2dweb は npm ci でインストールされます。ウィンドウを閉じるとゲームが終了します。スクリーンショット、ソース、操作方法はゲーム一覧を参照してください。
画像の出典
ゲーム素材は出典を明記した元のプロジェクトに由来します。provenance.json に画像の出典と処理を記録しています。画像は互換性やゲーム動作のテスト報告ではありません。素材の権利は作者に帰属し、画像の掲載でライセンスは変わりません。
元の C++ ゲームとチュートリアルは jsyqrt/games、参照移植は XadillaX/16-sfml.js-games-ported を参照してください。node-sfml-demos と play-nes は独自のライセンスと出典を記載しています。

