Skip to content

ゲームとアプリ ​

Breakout はこのリポジトリで実行します。他は独立したリポジトリまたは npm パッケージです。各節で示す作業ディレクトリを使ってください。すべてグラフィカルセッションとネイティブビルド要件を満たす環境が必要です。依存バージョンは sfml.js のリリースと独立しています。

概要 · 機能サンプル · 公式サンプル

Süper Mario Kart ​

インストールと起動

Node.js 20.5 以降 · 音声出力のあるデスクトップ · ネイティブビルド要件

プロジェクト用ディレクトリにクローンし、ゲームのルートで実行します。

sh
git clone https://github.com/XadillaX/super-mario-kart-sfml.js.git
cd super-mario-kart-sfml.js
npm install
npm start

npm 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 コンパイラー · 音声出力のあるデスクトップ

公開済みプレイヤーをインストールし、同梱ゲームを起動します。

sh
npm install -g play-nes
nes croom

利用権限のあるローカル ROM を開く場合:

sh
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 を実行してください。

npm run demo:breakout でビルドして起動できます。macOS/Linux では次のコマンドで同じゲーム画面を撮影できます。

sh
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 の場合:

sh
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 は原型の未完成のゲーム処理を保持しています。

ClojureScript で遊ぶ 16 ゲーム ​

16-sfml.js-games-ported は jsyqrt/games のフォークです。元の 16 ゲームは C++ と SFML で作られています。このフォークでは全作品を ClojureScript と sfml.js に移植し、元のディレクトリ構成、素材、ゲームロジック、操作方法を保持しています。

nbb を使って Node.js 上で実行するため、JVM や個別のコンパイルは不要です。プロジェクトを置くディレクトリにゲームリポジトリをクローンし、そのルートから起動してください。

sh
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 に固定されています。各スクリプトは自身のディレクトリを基準に素材を読み込みます。

Chess には、利用する OS 向けの Stockfish 実行ファイルが別途必要です。表のコマンドに実行ファイルのパスを渡してください。Volleyball が使う box2dweb は npm ci でインストールされます。ウィンドウを閉じるとゲームが終了します。スクリーンショット、ソース、操作方法はゲーム一覧を参照してください。

画像の出典 ​

ゲーム素材は出典を明記した元のプロジェクトに由来します。provenance.json に画像の出典と処理を記録しています。画像は互換性やゲーム動作のテスト報告ではありません。素材の権利は作者に帰属し、画像の掲載でライセンスは変わりません。

元の C++ ゲームとチュートリアルは jsyqrt/games、参照移植は XadillaX/16-sfml.js-games-ported を参照してください。node-sfml-demos と play-nes は独自のライセンスと出典を記載しています。

Icons made by Lorc, Delapouite & Skoll game-icons.net · CC BY 3.0