Skip to content

Simple and Fast Multimedia Library

SFML for Node.js

SFML の Node.js バインディング。JavaScript や TypeScript でネイティブウィンドウを開き、2D グラフィックスを描画し、音声を再生できます。

npm install sfml.js

macOS / Windows / Linux

SFML 3.1 ベース · SFML について

SFML の 5 つのモジュール

ウィンドウの作成、スプライトの描画、音楽の再生、データの送受信。SFML はデスクトップアプリの基盤となる機能を提供します。

モジュールガイド

最初の SFML ウィンドウ。

RenderWindow を作り、CircleShape を描いてフレームを表示します。SFML がウィンドウと描画を、JavaScript がループを担当します。TypeScript の型定義も同梱しています。

クイックスタートへ

デスクトップのグラフィカル環境で実行してください。Esc で終了します。setImmediate によりフレーム間で Node.js の I/O を処理できます。

JS hello.cjsnode hello.cjs
const sf = require('sfml.js');
const win = new sf.RenderWindow(
  new sf.VideoMode(new sf.Vector2u(800, 600)),
  'Hello, sfml.js',
);
const circle = new sf.CircleShape({ radius: 80 });
circle.setPosition(new sf.Vector2f(320, 220));
circle.setFillColor(new sf.Color(108, 190, 82));
win.setFramerateLimit(60);

function frame() {
  win.handleEvents({
    Closed: () => win.close(),
    KeyPressed: e => {
      if (e.code === sf.Keyboard.Key.Escape) win.close();
    },
  });
  if (!win.isOpen()) return;
  win.clear(new sf.Color(24, 28, 32));
  win.draw(circle);
  win.display();
  setImmediate(frame);
}
frame();

SFML の実行例

グラフィックス、文字、シェーダー、録音、ネットワーク通信のサンプルを実行できます。

サンプルを見る
緑とオレンジのブロック、ボール、パドルを描画する sfml.js のブロック崩しゲーム。
breakout.cjsSFML の実行画面

ブロック崩し

SFML の図形で描くブロック崩し。キー入力とゲームループは Node.js で処理します。

ソースを見る
色付きの図形とテクスチャのスナップショットを表示する SFML の実行画面。
render-texture.cjsSFML の実行画面

テクスチャに描く。

SFML の RenderTexture にオフスクリーン描画し、その内容を Sprite で表示します。この実行例で、テクスチャの合成と描画状態のスナップショットを確認できます。

ソースを見る

SFML の概念を JavaScript で。

SFML の C++ ドキュメントと型リファレンスを併せて参照できます。Promise、共有型付き配列、リソースの寿命、Node.js の描画バッチ処理は、このサイトのガイドで解説します。

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