ESKEES の仕組み
ESKEES Studio アルファ版(2026 年 9 月時点)の内容です。画面と機能は予告なく変更される場合があります。操作手順は はじめてガイド、スクリプトの書き方は スクリプト言語リファレンス を参照してください。
ESKEES と EMG
ESKEES は製品名、EMG はファイル形式の名前です。
EMG は Apache 2.0 で公開しているオープンなファイル形式です。仕様は pxrllc.github.io/emg/spec/ で公開しています。ESKEES は、EMG 形式の作品を作成・エクスポートするためのツールです。
- ESKEES には、EMG の仕様にない機能もあります。ヌル・切り抜き・シーン・メッシュ・スクリプトなどです。これらはエクスポート時に、EMG の形式に変換するか、画像に焼き込むか、ESKEES 拡張データとして保存します(エクスポート時の扱い)。
- 編集画面でできることが、エクスポート後もすべて有効とは限りません。たとえばアセットの回転は、エクスポート時に画像に焼き込みます。そのため、再生時に回転させることはできません。
ファイル形式
| 拡張子 | 種類 | 内容 |
|---|---|---|
.emg | EMG ファイル | パーツとレイヤーの定義(data.json)、テクスチャ画像、まばたき・口パクの設定(mapping.json) |
.eskx | ESKEES のエクスポートファイル | .emg の内容に加えて、メッシュ・ロジック・UI・シーン・サウンド・ステージなどの ESKEES 拡張データ |
.espj | プロジェクトファイル | 編集状態と、アセットの画像・サウンド。このファイルだけで編集を再開できます |
.estpl.json | テンプレート | パーツの設定を、別のアセットに適用するためのファイル |
- エクスポート形式は内容によって自動で決まります。ロジックなどの拡張データがあれば
.eskx、なければ.emgになります。 - 「.emg としてエクスポート(拡張データなし)」を選ぶと、拡張データを除いてエクスポートします。除かれる項目は画面に表示されます。
.eskxに含まれる EMG の部分は、EMG の仕様に準拠しています。拡張子を.emgに変更すれば、EMG に対応した他のソフトでも画像として表示できます。この場合、拡張データは無視されます。- 旧形式のファイル(
.emgproj・.emgtpl.json、拡張データを含む旧形式の.emg)も開けます。
エクスポート時の扱い
ESKEES で編集した内容は、エクスポート時に次のいずれかの方法で保存されます。
焼き込み 画像に焼き込む(再生時には変更できない)
変換 EMG の形式に変換する
拡張データ .eskx にのみ保存する
プロジェクト .espj にのみ保存する
環境設定 ユーザーの環境設定としてブラウザに保存する
| 編集内容 | 保存方法 | 補足 |
|---|---|---|
| アセットの回転・拡大縮小 | 焼き込み | EMG のレイヤーは矩形と位置しか持てないため |
| 9 スライス | 焼き込み 変換 | レイアウトしたサイズで画像に焼き込み、伸縮しない端の幅も保存します(EMG 0.5.6) |
| オブジェクト(テキスト・画像・図形の組み合わせ) | 焼き込み | 1 つのパーツの画像になります。構成はプロジェクトにのみ保存されます |
| ヌル(入れ子を含む) | 変換 | メンバーのアニメーションに統合します |
| 切り抜き(キャンバス・パーツ) | 変換 | キャンバスのサイズと位置、またはテクスチャの参照範囲に変換します。画像は変更しないため、切り抜き範囲を戻せば元に戻ります |
| ステート | 変換 | 1 つのステートが 1 つのプリセットになります(ID は 軸:ステート) |
| タイムライン・イージング | 変換 | EMG のアニメーション(sprites[])になります。EMG にないイージングは、キーに変換して保存します |
| 背景 | 既定では含まない | 含める設定にすると、最背面のレイヤーとして保存します |
| アトラスの分割 | 変換 | 用途別に分けた場合だけ、テクスチャが複数になります。分けなければ 1 枚です |
| メッシュ・風・揺れの設定 | 拡張データ | |
| クリック領域・マスク・ロジック・UI・シーン | 拡張データ | |
| サウンド・グリッドデータ・ステージ・カメラとワールド・キャラクターの設定 | 拡張データ | |
セーブデータの構造(save 記録 = { … }) | 拡張データ | プレイ中のセーブデータは、プレイヤーのブラウザに保存されます |
| コンポーネント | プロジェクト | 配置したインスタンスは、要素ごとのレイヤーを持つ 1 つのパーツとしてエクスポートします |
| ライブラリのアセット・カテゴリ | プロジェクト | エクスポートされるのは、キャンバスに配置したインスタンスだけです |
| ガイド・グリッド・プレビューの背景・フレームレート | プロジェクト | Undo の対象外です |
| スナップの強さ・位置の原点・ショートカット | 環境設定 | どのプロジェクトを開いても同じ設定で操作できます |
保存と Undo
- エクスポート結果に影響する編集だけが、Undo の対象です。パーツ・アニメーション・ヌル・切り抜き・ライブラリ・シーン・ロジックなどが該当します。
- ガイドやグリッドはプロジェクトに保存されますが、Undo の対象外です。
- Undo は Ctrl+Z、Redo は Ctrl+Shift+Z です。1 回のドラッグ操作は、1 回の Undo で元に戻ります。
- ESKEES Studio はブラウザ上で動作し、作品をサーバーに送信しません。こまめに「ファイル ▾」→「プロジェクトを保存」(Ctrl+S)で保存してください。
画面構成
| 場所 | 内容 |
|---|---|
| 上部バー | ファイル ▾・Undo / Redo・シーンの切り替え・キャンバス / ロジック・テストプレイ・エクスポート ▾ |
| ライブラリ(左上) | インポートしたアセット・コンポーネント・ステージ・データ・サウンド。「配置」するまでキャンバスには表示されません |
| 階層(左下) | 3 種類の表示を切り替えます。パーツ(ヌル → パーツ → フレーム)・重なり順・レイヤー(PSD のレイヤー構造。パーツの構成を変更する場合はこの表示を使います) |
| ツールバー | 選択・トランスフォーム・アンカーポイント・切り抜き(キャンバス / パーツ)・メッシュ・クリック領域。Esc キーで選択ツールに戻ります |
| インスペクター(右) | 選択中の項目(ヌル・インスタンス・パーツ・UI)の設定を表示します。何も選択していない場合は、プロジェクト全体の設定とエクスポートを表示します |
| 下部パネル | タイムライン・ステート(シーン一覧を含む)・ロジック・UI・ログ |
画面写真付きの説明は はじめてガイド を参照してください。
ライブラリとインスタンス
- インポートしたもの(アセット)と、キャンバスに配置したもの(インスタンス)は別に管理します。同じアセットを何度でも配置できます。パーツ名が重複する場合は、自動で名前を変更します。画像データはアセットと共有します。
- 「配置」を押すと、キャンバスの中央に配置します。ライブラリからキャンバスへドラッグすると、ドロップした位置に配置します。シーンを表示中の場合は、そのシーンに追加されます。
- インスタンスを削除しても、アセットは残ります。エクスポートされるのはインスタンスだけです。
- アセットを削除すると、配置済みのインスタンスも削除されます。削除前に確認のメッセージが表示されます。
- アセットはカテゴリで分類できます。
- サウンド(mp3 など)は「サウンド」の一覧に追加されます。試聴・名前・種類(効果音 / BGM / ボイス)・音量・ループを設定できます。
- データ(「+ データ」)は、セルを塗って作成するグリッドデータです。テトリスのブロックの形などに使います。
- アトラスは用途別(キャラクター・背景など)に分割できます。アセットが多い場合に、必要な画像だけを読み込めるようになります。
コンポーネント
コンポーネントは、複数のアセットのレイヤーとテキストを組み合わせて、ライブラリに追加したものです。
| オブジェクト | コンポーネント | |
|---|---|---|
| 配置した場合 | すべての要素を 1 枚の画像に焼き込んだ、1 つのレイヤー | 要素ごとに 1 つのレイヤー(要素ごとに重なり順・合成モード・マスクを設定できます) |
| 編集した場合 | そのインスタンスだけを再描画します | 配置済みのすべてのインスタンスに反映します(アニメーション・マスク・メッシュは維持されます) |
| インスタンスごとの設定 | — | テキストだけを上書きできます |
| ロジック | — | スクリプトに class コンポーネント名 があると、配置したインスタンスは再生開始時にアクターになります |
- ライブラリのコンポーネント、またはキャンバス上のインスタンスをダブルクリックすると、キャンバス上で編集できます。
- コンポーネント名はスクリプトのクラス名として使われます。そのため、空白や記号は使えず、他のコンポーネントと同じ名前も使えません。
シーン
シーンは、画面全体の構成を切り替える単位です(タイトル → ゲーム → リザルト など)。
ステートとは用途が異なります。ステートは複数の軸を同時に適用できます。シーンは同時に 1 つだけが有効で、UI も切り替わります。
- シーンには、パーツと UI パネルを追加します。どのシーンにも追加していないものは「共通」として、常に表示されます。
- 開始シーン(★)は 1 つだけ設定できます。
- 上部バーでシーンを切り替えると、キャンバスには「共通」と、選択したシーンの内容が表示されます。パーツが表示されない場合は、シーンを切り替えて確認してください。
- スクリプトでは
scene 名前(シーンを切り替える)・on scene 名前(シーンに入ったとき)・in scene 名前(現在のシーンか判定する)を使います。
ヌル
- ヌルは、複数のパーツをまとめて動かすための入れ物です。
- ヌルは独自のアニメーションを持ちます。メンバーのパーツのアニメーションは変更されません。
- ヌルは入れ子にできます。外側のヌル → 内側のヌル → パーツ → フレームの順に適用されます。
- アンカーポイントは、最初にキーを追加した時点で固定されます。メンバーのフレームが切り替わっても、回転の中心は移動しません。
- エクスポート時には、メンバーのアニメーションに統合されます。
アニメーションとイージング
- タイムラインで、位置・回転・拡大縮小・不透明度にキーを追加します。キーが多いトラックは「グラフ」表示で、曲線を見ながら編集できます。
- イージングはキーを増やさずに設定します。後から曲線を変更できます。基本の 4 種類と、easings.net の 30 種類(Elastic・Bounce を含む)から選べます。
- EMG にはイージングの設定がないため、エクスポート時にキーに変換します。
- 再生のショートカット:K で再生 / 停止、J / L で 1 フレーム戻る / 進む(Shift を押しながらだと 1 秒)。Space を押している間は手のひらツール(表示の移動)になります。ショートカットは変更できます。
- まばたきのように不定期に動くアニメーションは、待機時間も含めて再現します。ランダムな値は時刻から決まるため、タイムラインを戻しても同じ表示になります。
位置と原点
- 画面にはキャンバス上の位置を表示します。内部では、元の位置からの移動量として保存します(After Effects の「位置」と同じ考え方です)。
- 位置は整数(px)、拡大率と角度は小数で扱います。
- 原点を選択できます(左上 / 中心 / 左下。左下を選ぶと Y 軸は上向きになります)。この設定は表示にだけ影響し、エクスポートされる座標は変わりません。
メッシュ・クリック領域・マスク
- メッシュ:髪や服を揺らします。固定する範囲・風・クリックしたときの揺れを、領域ごとに設定できます。風は時刻だけで決まるため、何度再生しても同じように揺れます。
- クリック領域:クリックしたときに、フレームの切り替え・プリセットの適用・表示の切り替え・アニメーションの再生などを行います。既定では 2 秒後に元の状態に戻ります。メッシュの揺れと同時に動作させることもできます。
- マスク:矩形または楕円で画像を切り取ります。変数や時間に応じて形を変えられます。編集画面でも切り取った状態で表示されます。
- メッシュとクリック領域は別々に設定します(揺れる範囲とクリックできる範囲は、通常は一致しないため)。塗る・消す・ブラシの太さなどの操作方法は共通です。
ロジックとテストプレイ
上部バーの「ロジック」を選ぶと、スクリプトの編集画面に切り替わります。キャンバスの表示位置と拡大率は維持されます。
| 場所 | 内容 |
|---|---|
| 左 | トリガー・シーン・クラス(とメソッド)・関数・変数とセーブデータの一覧。クリックすると該当箇所に移動します |
| 中央:ブロック(既定) | テキストの 1 行が 1 つのブロックになります。値はその場で編集でき、ドラッグで並べ替えられます |
| 中央:テキスト | コードを直接入力します。シンタックスハイライトと補完(パーツ・サウンド・データの名前)に対応しています。構文エラーがある間は、作品に反映されません。コメントも保持されます |
| 中央:図 | スクリプト全体の構造を確認するための表示です |
| 右:問題 | 構文エラーと、実行しなくても分かる名前の誤り(存在しないパーツ・シーン・サウンドなど)を表示します。クリックすると該当行に移動します |
- ブロック・テキスト・図は、同じスクリプトを別の形式で表示したものです。どの形式で編集しても、同じスクリプトが変更されます。
- テストプレイ(Ctrl+Enter)は、Player や showcase と同じ再生エンジンで作品を動かします。クリックした結果や再生したサウンドはログに表示されます。テストプレイ中のセーブデータは保存されません。
スクリプト言語
Lua に似た構文の言語です。ブロックは end で閉じます。詳しくは スクリプト言語リファレンス を参照してください。
| 分類 | 主な機能 |
|---|---|
| 値 | 数値・文字列・テーブル(配列と辞書。添字は 1 から)・nil。演算子 .. # ~=。0 は偽として扱います |
| 変数 | var(数値のみ。画面に表示・保存できます)/ グローバル変数 / local |
| 制御構文 | if・switch・loop・while・repeat・for・break・wait |
| 関数 | function f(a, b) … return … end。組み込み関数は math / table / string / grid / tile など |
| クラスとアクター | class・spawn・destroy・for each in クラス・touching・self:overlapping("クラス") |
| トリガー | on start・on frame・on every・on press / click / tap・on key / keyup・on change・on scene |
| 入力 | キーボード・ゲームパッド(キーと同じ形式の名前)・タッチ画面の仮想パッド |
| 演出 | tween(34 種類のイージング)・play(アニメーションの再生)・camera shake |
| サウンド | sound・music(最初のクリックかキー入力があるまで再生されません) |
| カメラとステージ | camera follow self・stage "名前"・tile.at / solid・self:moveBy(dx, dy) |
| セーブとスコア | save 記録 = { … }(ブラウザに保存)・score 値 as ボード名(ランキングに送信) |
ゲーム制作の機能
| 機能 | 内容 |
|---|---|
| キャラクターの設定 | パーツを選択し、インスペクターの「キャラクター」で設定します。操作方法(8 方向・左右のみ・左右とジャンプ)・当たり判定(画像の矩形・矩形・円)・クラスの変数を設定できます。スクリプトを書かなくてもキャラクターを動かせます |
| ステージ | ライブラリの「+ ステージ」で作成します。タイルを塗ってレイヤーを作り、衝突判定・オブジェクトの配置・カメラの初期位置を設定します |
| カメラとワールド | キャンバスより広いワールドを作成し、カメラの追従や画面の揺れを設定できます。背景などのパーツは画面に固定できます |
| UI | 画面に重ねて表示するパネル(テキスト・ボタン・画像)です。変数に応じて長さが変わるゲージ(HP バーなど)も作れます |
| サウンド | 効果音・BGM・ボイス |
| データ | セルを塗って作成するグリッドデータです。スクリプトからは読み取り専用です |
| セーブ | プレイヤーのブラウザに記録を保存します。Player では、閉じた後も中断したところから再開できます |
showcase の公式サンプル 5 本(ほしをキャッチ・パタパタ・テトリス・ARROW RUN・NIGHT SURVIVOR)は、これらの機能で作成しています。どれも Studio で開いて改造できます(サンプルを改造する)。
エクスポート
| 形式 | 内容 |
|---|---|
.emg / .eskx | 形式は内容によって自動で決まります(ファイル形式)。テクスチャは既定で 1 枚です。8192px に収まらない場合だけ分割し、画面に通知します |
| GIF | 透明度は 2 段階(透明 / 不透明)のみです。半透明の縁はギザギザになります |
APNG(.png) | 半透明を保持できます |
| WebM | 動画形式です |
| スタンプ用のプリセット | Discord スタンプ(320×320・512KiB・5 秒、GIF / APNG)・LINE スタンプ(320×270・1MB・4 秒、APNG のみ) |
GIF / APNG / WebM は「エクスポート ▾」→「GIF / WebM…」から、長さ・フレームレート・背景を指定してエクスポートします。
公開と再生
- showcase:
.eskxを投稿すると、ブラウザで遊んでもらえます。評価とランキングの機能があります。投稿できるのは、利用を許可されたユーザーだけです。 - ランキング:スクリプトの
scoreで値を送ると、showcase でプレイした人の記録がランキングに掲載されます。ランキングは api.eskees.com から誰でも取得できます。 - ESKEES Screen:作品を Windows のデスクトップ壁紙として表示します。
- ESKEES Editor(デスクトップ版):準備中です。
.espj/.eskx/.emgをダブルクリックで開けるようになります。
他のツールで使う場合
.emg は、Unity / Godot / Ren'Py / YMM4 / Web のプレイヤーなどで読み込めます。表示が崩れないよう、エクスポート前に次の点を確認してください。
- パーツの種類(Static / Switch)によって、表示のされ方が変わります。Static はパーツ内のすべてのレイヤーを重ねて表示します。Switch は 1 枚だけを表示します。表情や衣装の差分は Switch、複数のレイヤーで 1 つの絵になるもの(体など)は Static にしてください。設定を誤ってもエラーにはならず、差分がすべて重なったり、1 枚しか表示されなかったりします。
- 非表示のレイヤーもエクスポートされる場合があります。Switch のパーツでは、PSD で非表示にしていた差分も選択肢としてエクスポートします。Static のパーツでは、表示中のレイヤーだけをエクスポートします。
- 重なり順は、ファイル全体で 1 つの順序です。パーツをまたいで重なり順を指定できます。
- 合成モードは、CSS の 16 種類と加算(
plus-lighter)に対応しています。 - ロジック・メッシュ・UI などの拡張データは、ESKEES の再生エンジン(showcase・Player・Screen)でのみ動作します。他のソフトでは静止画として表示されます。