Skip to content

Playfield Engine

Playfield は、どんな環境でも動く2Dゲーム用のスクリプト実行環境です。 独自開発のスクリプト言語 Playfield Script を使えば、グラフィック描画もサウンド再生も、プラットフォームの違いを意識せずシームレスに扱えます。

GitHub リポジトリ | クイックスタート

ダウンロード v0.8.14

おすすめ Windows のみ Mac のみ Linux のみ
全部入り (おすすめ) Windows 64-bit EXE インストーラ macOS dmg Linux x86_64 AppImage
ソースコード Windows 64-bit EXE ZIP
Windows 32-bit EXE ZIP
Windows Arm64 EXE ZIP

ハイライト

ゼロから新規開発された Playfield の特徴は、次のようなものです:

  • 快適に書けるスクリプト言語
    • C や JavaScript に似た文法の Playfield Script で記述できる
    • 内蔵の JIT コンパイラでネイティブの実行速度
    • 思いついたらすぐ試せる — Jot and Run!
  • どこへでも移植できるグラフィック&サウンド
    • 独自開発の軽量ゲームライブラリ「StratoHAL」がベース
    • Windows, macOS, Linux, Chromebook, WebAssembly, iOS, Android, ゲーム機まで対応
    • 持ってないハードウェア用に開発できちゃう — Go Far, Stay Close!
  • コンパクトな実行環境
    • Windows版のランタイムサイズはたったの 1.4 MB
    • モバイルアプリにもピッタリ — Go Magically Small, Get Massively Loved!

platforms


なぜ Playfield が作られたか?

「もしゲームエンジンがどこでも動いたら、世界はどう変わるだろう?」

Playfield は、この小さな問いから生まれました。

クリエイティブって、本当はパソコンの性能とか、持ってる道具とか、周りの環境に左右されるべきじゃない。 Playfield は「誰でも、どこでも、自分の世界を作れるように」という想いで作られています。

Playfield は古い PC や低いスペックの環境でもちゃんと動くから、コンピュータさえあれば、創作の場が完成。 開発リソースが少ない人にとっても、頼れる相棒になります。 作りたいものがあるなら、Playfield が一緒に歩んでくれる。

たとえば、教室で Chromebook を使うときでも。

たとえば、時の止まったような図書室に残された古い Windows を使うときでも。

あるいは、遠い国の難民キャンプで、国連が配布した安価な端末が、誰かの希望になるときも。

シンプルで、思いやりがあって、自分らしく使えるツールとして、アイデアを形にできます。

目標はただひとつ:
ゲーム開発を、誰にでも手に届く、やさしいものにすること。

必要なのは夢だけ。夢こそが Playfield Engine を動かす燃料です。


Web で試せるデモゲーム

ブラウザ上でそのまま遊べるサンプルゲームを用意しています。

Small Shoot

Heartbeat Clock

Mini Shoot

DON'T RUSH IN COMIKET


ギャラリー

Playfield running on Windows 11:

Playfield running on Windows 11

Playfield running on macOS:

Playfield running on macOS

Playfield running on Linux:

Playfield running on Linux

Playfield running on iOS simulator:

Playfield running on iOS simulator

Playfield running on Android emulator:

Playfield running on Android emulator

Playfield running on Windows XP:

Playfield running on Windows XP

Playfield running on NetBSD:

Playfield running on NetBSD


開発状況

現在は 0.8.x 系列を開発中。 安定版の 1.0.0 リリースを目指して進行中です。

最新ビルドの動作確認状況:

種別 OS ステータス 確認日 確認環境
Desktop Windows ✅ Works 2025年9月22日 Windows 11 x64
macOS ✅ Works 2025年9月22日 macOS 15 Sequoia Arm64
Linux ✅ Works 2025年9月22日 Ubuntu 24.04 LTS x86_64
Mobile iOS ✅ Works 2025年9月22日 iPhone iOS 18
Android ✅ Works 2025年9月22日 Android 16
BSD FreeBSD ✅ Works 2025年9月22日 FreeBSD 14.3 amd64
NetBSD ✅ Works 2025年9月22日 NetBSD 10.1 amd64
OpenBSD ✅ Works 2025年9月22日 OpenBSD 7.7 amd64
Others WebAssembly ✅ Works 2025年9月22日 Chrome
Chromebook ✅ Works 2025年9月22日 Chrome こちら
Unity ✅ Works 2025年9月22日 Unity 6.2 Windows 11 x86_64

サンプル

マウスカーソルを追いかけて画像を表示する、シンプルな例です。

基本のライフサイクルは4つ:

  • setup() ... ウィンドウ設定
  • start() ... アセット読み込み
  • update() ... 毎フレームのロジックとテクスチャのロード
  • render() ... 毎フレームの描画
func setup() {
    var config = {
        title: "My Sample Game",
        width: 640,
        height: 480
    };
    return config;
}

func start() {
    myTexture = Engine.loadTexture({file: "apple.png"});
}

func update() {
    posX = Engine.mousePosX;
    posY = Engine.mousePosY;
}

func frame() {
    Engine.draw({
        texture: myTexture
        x: posX,
        y: posY,
    });
}

クイックスタート

Windows, macOS, Linux, Chromebook向けに、ビルド済みの実行ファイルを配布しています。

1. 最新版をダウンロード

  • このページのトップから「全部入り」の ZIP ファイルをダウンロードします。
  • ZIP ファイルを好きなフォルダに展開します

2. ゲームスクリプトを実行する

  • Windows の場合
    • playfield.exe をダブルクリックします
    • ゲームが開始します
  • macOS の場合
    • misc フォルダを開きます
    • macos フォルダを開きま
    • Playfield.dmg ファイルを開きます
    • dmg ファイルの中に入っている Playfield アプリを main.pf と同じフォルダにコピーします
    • コピーしたアプリをダブルクリックして起動します
    • ゲームが開始します
  • Linux の場合
    • misc フォルダを開きます
    • linux フォルダを開きます
    • Playfield-x86_64.AppImagemain.pf と同じフォルダにコピーします
    • コピーしたアプリをダブルクリックして起動します
    • ゲームが開始します
  • Chromebook の場合
    • このページ をブラウザで開きます
    • Open Folder ボタンをクリックします
    • main.pf のあるフォルダを選択します
    • ゲームが開始します

3. ゲームスクリプトを編集する

  • Playfield Editor を使う場合
    • playfield-editor.exe をダブルクリックして Playfield Engine Editor を起動します
    • main.pf をエディタから開いて、編集します
    • Ctrl+R で実行します (Ctrl キーを押しながら R キーを押す)
  • お好きなエディタを使う場合
    • あらかじめ、エンジンを main.pf のあるフォルダにコピーしておきます
    • お好きなエディタを起動して、main.pf ファイルを開きます
    • ファイルを編集して保存します
    • エンジンを起動します

Playfield Editor は短時間のハンズオン開催時に使っているものです。 実際の開発にはお好きなエディタをおすすめしています。

4. もっと知りたいときは


技術概要

Playfield は、既存のスクリプト言語や SDL ライブラリを使っていません。 独自言語、独自レンダリングバックエンド、独自サウンドバックエンドを備えた、完全体のゲームエンジンです。

コアアーキテクチャ

+----------------------------------------------------------+
|                       User Scripts                       |
+----------------------------------------------------------+
                             ||
+----------------------------------------------------------+
|                 Playfield Script Runtime                 |
+----------------------------------------------------------+
                ||                            ||
+---------------------------------+  +---------------------+
|   StratoHAL (Graphics/Audio)    |  |  NoctLang VM (JIT)  |
+---------------------------------+  +---------------------|
  • スクリプト: NoctLang を組み込みました。 ゲーム用に設計されたわずか 160 KB のコンパクトだけどパワフルな言語です。

  • グラフィック: DirectX 9/11/12, Metal, OpenGL, OpenGL ES, WebGL に対応し、幅広い環境で動作。

  • サウンド: DirectSound (Windows), Audio Unit (macOS/iOS), ALSA (Linux), OSS (BSD), その他、各プラットフォームのAPIに対応。

StratoHAL

StratoHAL は、2001 年から商用2Dゲームエンジンとして育てられたコードベースが元になっています。 長年の安定稼働実績があり、今では macOS, Linux, iOS, Android, WebAssembly, Unity まで対応。 スマートフォンで 10 年以上動いてきた実績もあります。

SDL3 という有名な OSS もありますが、StratoHAL は SDL3 と同じ主要プラットフォームをカバーしつつ、さらに NDA なしで Unity 経由でコンソールまでサポートできるのが特徴です。

対応プラットフォーム

種別 OS / プラットフォーム 備考
Desktop Windows DirectX 12/11/9, DirectSound
macOS Metal, Audio Unit
ChromeOS OpenGL, ALSA
Linux OpenGL, ALSA
*BSD OpenGL, OSS (/dev/dsp)
Qt Qt OpenGL
Mobile iOS Metal, Audio Unit
Android OpenGL, OpenSL ES, NDK
Web WebAssembly WebGL, OpenAL, via Emscripten
Console Unity Unity Plugin

ゲーム機向け Unity Plugin について

Playfield は、Windows 64bit および各種ゲーム機向けの Unity プラグインを配布しています。 ゲーム機向けバイナリはすべて OSS版 の LLVM/Clang ツールチェーンでビルドされており、プロプライエタリなSDKは使われていません。 実際にゲームを製品として出荷する場合は、各プラットフォーム事業者の利用規約に従ってください。

NoctLang

Playfield Script = NoctLang + Playfield API

NoctLang は Playfield のために作られた軽量スクリプト言語です。 ゲームに向いた文法で、わかりやすさ・即起動・エンジンとの密な連携を重視しています。

内蔵の JIT コンパイラは、Intel / Arm / RISC-V / PowerPC / MIPS の32-bit / 64-bit を幅広くサポート。

JIT が制限されるモバイルやゲーム機では、インタプリタモードや C コード出力を利用した AOT コンパイルに切り替え可能。 このため、制限の強い環境でも完全動作します。

競合に LuaJIT がありますが、NoctLang は下記の点で優位性があります:

  • より幅広い CPU アーキテクチャで動く
  • JIT が動かない環境でもインタプリタや AOT で動く
  • WebAssembly をサポートしている
  • Lua と比べると書きやすい文法を持っている
  • 作者以外にもメンテナンスや移植がしやすいコードになっている
  • よりサイズが小さい
  • ガベージコレクションが優秀 (Java と同様の仕組み)

スクリプト実行モード

デスクトッププラットフォームではスクリプトが JIT 実行され、非常に高速に動作します。 その他のプラットフォームでは、高性能インタプリタで高速に実行されます。 もしインタプリタよりも速い実行速度が必要な場合は、AOT コンパイル(事前コンパイル)も利用可能です。

プラットフォーム モード
Windows x86 JIT
Windows x64 JIT
Windows arm64 JIT
macOS x86_64 JIT
macOS arm64 JIT
Linux x86 JIT
Linux x86_64 JIT
Linux armv7 JIT
Linux arm64 JIT
FreeBSD x86_64 JIT
NetBSD x86_64 JIT
OpenBSD x86_64 Interpreter or AOT
iOS Interpreter or AOT
Android Interpreter or AOT
WebAssembly Interpreter or AOT
Unity Plugin Interpreter or AOT

ランタイムのフットプリント

プラットフォーム バイナリサイズ メモリ使用量 (GC)
全ターゲット 〜 2 MB 起動時に 256 MB を確保 (上限)

補足:ガーベジコレクタは起動時に256MBを確保します。これは現在のヒープサイズの上限値です。

ガベージコレクション

Playfield は、Java の HotSpot VM に似た高性能なガベージコレクタを実装しており、ガベージコレクションによる遅延を意識する必要はそれほどありません。

  • ガベージコレクタは世代 GC を実装しており、オブジェクトを若い世代と古い世代に分けて管理します。
  • 若い世代の GC は、コピー GC により非常に高速に実行されます。(semi-space copy GC)
  • 古い世代の GC は、マークアンドスイープで実行され、必要に応じてデフラグされます。(mark-sweep-compact GC)

テスト環境

Playfield は、開発中に主に以下の環境で動作確認を行っています。

種別 OS バージョン アーキテクチャ
Desktop Windows 11 x64
arm64
macOS 15 arm64
12 x86_64
Ubuntu 24.04 x86_64
arm64
Kubuntu 25.04 x86_64
Browser Chrome 139 WebAssembly
Safari 18.6 WebAssembly
Smartphone iOS 18 Simulator
Android 16 Simulator
Console Unity 6.2 Windows x64

CMake プリセット

Playfield には、さまざまなプラットフォームやビルド構成をカバーする CMake プリセット が用意されています。

プリセット名 プラットフォーム コンパイラ ビルドディレクトリ 出力ファイル 種類
windows-msvc-x86-debug Windows MSVC out/build/windows-x86-debug playfield.exe 実行ファイル
windows-msvc-x86-release Windows MSVC out/build/windows-x86-release playfield.exe 実行ファイル
windows-msvc-x64-debug Windows MSVC out/build/windows-x64-debug playfield.exe 実行ファイル
windows-msvc-x64-release Windows MSVC out/build/windows-x64-release playfield.exe 実行ファイル
windows-msvc-arm64-debug Windows MSVC out/build/windows-arm64-debug playfield.exe 実行ファイル
windows-msvc-arm64-release Windows MSVC out/build/windows-arm64/release playfield.exe 実行ファイル
windows-mingw-x86 Windows MinGW build-mingw-x86 playfield.exe 実行ファイル
windows-mingw-x86_64 Windows MinGW build-mingw-x86_64 playfield.exe 実行ファイル
windows-mingw-arm64 Windows MinGW-LLVM build-mingw-arm64 playfield.exe 実行ファイル
macos macOS Clang build-macos Playfield.app アプリバンドル
linux Linux GCC build-linux playfield 実行ファイル
freebsd FreeBSD Clang build-freebsd playfield 実行ファイル
netbsd NetBSD GCC build-freebsd playfield 実行ファイル
openbsd OpenBSD Clang build-freebsd playfield 実行ファイル
wasm WebAssembly Emscripten build-wasm index.html HTML + Wasm
wasm-local Chromebook Emscripten build-wasm-local index.html HTML + Wasm
ios-device iOS Device Clang build-ios-device libplayfield.a 静的ライブラリ
ios-simulator iOS Simulator Clang build-ios-simulator libplayfield.a 静的ライブラリ
android-x86 Android x86 Clang build-android-x86 libplayfield.so 共有ライブラリ
android-x86_64 Android x86_64 Clang build-android-x86_64 libplayfield.so 共有ライブラリ
android-armv7 Android armv7 Clang build-android-armv7 libplayfield.so 共有ライブラリ
android-arm64 Android arm64 Clang build-android-arm64 libplayfield.so 共有ライブラリ
unity-win64 Unity Plugin Clang-CL build-unity-win64 libplayfield.dll DLL プラグイン
unity-switch Unity Plugin Clang build-unity-switch libplayfield.a 静的ライブラリ
unity-ps5 Unity Plugin Clang build-unity-ps5 libplayfield.a 静的ライブラリ
unity-xbox Unity Plugin Clang build-unity-xbox libplayfield.a 静的ライブラリ

サンプルゲーム一覧

サンプルゲームは順次追加されています。

名前 ディレクトリ 説明
bouncer samples/bouncer ブロックが跳ねるデモ
rush samples/rush ジャンプアクション
heartbeatclock samples/hearbeatclock 時計
shoot samples/shoot ミニシューティング

ChatGPT サポート

ChatGPT を使ってゲームのテンプレートを自動生成することができます。 その際は以下のリファレンスを読み込ませてください:

これで ChatGPT が、実際に Playfield で動かせるゲームを直接作れるようになります。

注意: ChatGPT を使うときは、左下の 「+」ボタン をクリックして 「Web検索」 を有効にしてください。そうすれば上記リファレンスを参照できます。


ローカライズ / 国際化

Playfield は、UI メッセージに以下の言語をサポートしています。

言語 ロケールコード 翻訳の種類 翻訳範囲
英語 en-US オリジナル UI / ドキュメント / サンプル
スペイン語 es-ES 機械翻訳 UI
フランス語 fr-FR 機械翻訳 UI
イタリア語 it-IT 機械翻訳 UI
ドイツ語 de-DE 機械翻訳 UI
ギリシャ語 el-GR 機械翻訳 UI
ロシア語 ru-RU 機械翻訳 UI
中国語 (簡体字) zh-CN 機械翻訳 UI
中国語 (繁体字) zh-TW 機械翻訳 UI
日本語 ja-JP プロ翻訳 UI / ドキュメント

言語を切り替える方法: Playfield はシステムのロケールを使います。 言語を切り替える場合は、システムのロケール設定を変更してください。

翻訳への貢献: 翻訳ファイルは 3 つの i18n/ ディレクトリ (main, HAL, NoctLang) にあります。 新しい翻訳を追加したい、または既存の翻訳を修正したい場合は、Issue を立てるか Pull Request を送ってください。


外部ライブラリ

Playfield では以下のライブラリを利用しています。 それぞれのソースコードの tarball は、このリポジトリに同梱されています。

  • zlib
  • libpng
  • libogg
  • libvorbis
  • JPEG9
  • libwebp
  • brotli
  • bzip2
  • FreeType2

互換性リスト

Windows:

OS Version Patch CPU Runtimes 32-bit Binary 64-bit Binary Direct3D
Windows XP SP3 x86 DirectX End-User Runtimes (June 2010) - 9.0
Windows XP SP3 x64 DirectX End-User Runtimes (June 2010) 9.0
Windows Vista x86 DirectX End-User Runtimes (June 2010) - 9.0
Windows Vista x64 DirectX End-User Runtimes (June 2010) 9.0
Windows Vista SP1 x86 DirectX End-User Runtimes (June 2010) - 9.0
Windows Vista SP1 x64 DirectX End-User Runtimes (June 2010), Microsoft Visual C++ Redistributable 2015 9.0
Windows Vista SP2 x86 DirectX 11 Platform Update - 11.0
Windows Vista SP2 x64 DirectX 11 Platform Update, Microsoft Visual C++ Redistributable 2015 11.0
Windows 7 x86 - 11.0
Windows 7 x64 Microsoft Visual C++ Redistributable 2015 11.0
Windows 7 SP1 x86 - 11.0
Windows 7 SP1 x64 Microsoft Visual C++ Redistributable 2015 11.0
Windows 8 x86 - 11.0
Windows 8 x64 Microsoft Visual C++ Redistributable 2015 11.0
Windows 8.1 x86 - 11.0
Windows 8.1 x64 11.0
Windows 10 x86 - 12.0
Windows 10 x64 12.0
Windows 10 arm64 12.0
Windows 11 x64 12.0
Windows 11 arm64 12.0

注意: playfield.exe は 64 ビットバイナリで、playfield32.exe は 32 ビットバイナリです。

macOS:

OS Version CPU Status
OS X El Capitan 10.11 x86_64
macOS Sierra 10.12 x86_64
macOS High Sierra 10.13 x86_64
macOS Mojave 10.14 x86_64
macOS Catalina 10.15 x86_64
macOS Big Sur 11.0 arm64
macOS Big Sur 11.0 x86_64
macOS Monterey 12.0 arm64
macOS Monterey 12.0 x86_64
macOS Ventura 13.0 arm64
macOS Ventura 13.0 x86_64
macOS Sonoma 14.0 arm64
macOS Sonoma 14.0 x86_64
macOS Sequoia 15.0 arm64
macOS Sequoia 15.0 x86_64
macOS Tahoe 26.0 arm64
macOS Tahoe 26.0 x86_64

Linux:

  • 下記のいずれか:
    • X11 (X11 + GLX + OpenGL 3) [デフォルト]
    • Wayland (Wayland + EGL + OpenGL ES 2) [オプション]
    • Framebuffer (GBM + DRM + EGL + OpenGL ES 2) [オプション]

iOS:

OS Status
iOS 11
iOS 12
iOS 13
iOS 14
iOS 15
iOS 16
iOS 17
iOS 18
iOS 26

Android:

OS Status
Android 6
Android 7
Android 8
Android 9
Android 10
Android 11
Android 12
Android 13
Android 14
Android 15
Android 16

NoctVM エコシステム

Playfield は、NoctVM エコシステムの一部です。

  • NoctLang — ポータブルなスクリプト言語 (このプロジェクトで使用)
  • Playfield — どこでも動く 2D ゲームエンジン (このプロジェクト)
  • NoctUI — 宣言的 UI ライブラリ (このプロジェクトでは未使用)

これらが揃って、Noct エコシステムの基盤を形作っています。 NoctLang 自体は複雑なランタイムを持たない、シンプルな言語エンジンです。 Playfield は、その NoctLang コアを組み込み、さらに拡張したランタイムのひとつです。


ライセンス

Playfield
© 2025 Awe Morris

Playfield は zlib ライセンス のもとで公開されているオープンソースソフトウェアです。 商用プロジェクトを含め、自由に利用できます。


一緒に作ろう!

Playfield はまだ発展の途中にあります。 でも、そのぶん丁寧に育てていて、世界中のクリエイターを勇気づけられる存在になりたいと願っています。

コードでも、ドキュメントでも、テストでも、アイデアでも。 もし関わってみたいと思ったら、ぜひ参加してみてください。

小さな一歩が、Playfield の未来を形づくります。 この旅に加わっていただけたら嬉しいです。

Discord に参加する