世界観を設定する

キャラクターとトークが揃ったら、窓の見た目やふるまいを調整して、自分の世界観に仕上げましょう。

複数の世界を持てる

狐の窓は1つのサイトに複数の世界(ワールド)を同居させられます。ワールドごとにキャラクター・トーク・背景を独立して管理できます。

public/worlds/
  ├── example/     ← デフォルトのサンプル
  ├── fantasy/     ← ファンタジー世界
  └── school/      ← 学園もの

ワールドの切り替え

URLのクエリパラメータ ?world=ワールド名 で、表示する世界を指定します。

URL 表示されるワールド
https://あなたのサイト/ example(デフォルト)
https://あなたのサイト/?world=fantasy fantasy
https://あなたのサイト/?world=school school
?world= を省略すると example が読み込まれます。自分のワールドをデフォルトにしたい場合は、フォルダ名を example にするか、index.html を編集してデフォルト値を変更してください。

world.json の全体像

各ワールドの worlds/ワールド名/world.json が、その世界の設定ファイルです。

{
  "type": "png",
  "characters": {
    "alice": {
      "path": "characters/alice/",
      "base": "base.png",
      "expressions": {
        "normal": [],
        "smile": ["smile.png"]
      }
    }
  }
}

背景

デフォルトでは時間帯に連動したグラデーションが自動で適用されます。朝は暖色、昼は青空、夜は暗い紫——と、時間帯に応じて雰囲気が変わります。

world.jsonbackground プロパティを追加すると、背景画像や背景色をカスタマイズできます。

{
  "type": "png",
  "background": {
    "image": "bg.png",
    "color": "#1a1a2e"
  },
  "characters": { ... }
}
プロパティ 説明
background.image 背景画像のファイル名(ワールドフォルダからの相対パス)。
background.color 背景色。画像が読み込まれるまでのフォールバックとしても機能します。
background.mode "outdoor"(デフォルト)または "indoor"。背景画像と時間帯グラデーションの重ね方を切り替えます。
background を省略すると、従来通り時間帯グラデーションのみになります。color だけ指定した場合はグラデーションなしの単色背景になります。

野外モード(デフォルト)

背景画像を設定した場合、画像の上に時間帯に応じた半透明のグラデーションが重なります。深夜や夜は濃いめに、昼間は薄めに——背景画像を活かしつつ、時間の移ろいを表現します。

風景写真やイラストなど、屋外の世界観に向いています。

時間帯 時刻 オーバーレイの濃さ
深夜(deep_night)0:00〜4:59濃い(画像がうっすら見える)
朝(morning)5:00〜9:59やや薄い
昼(noon)10:00〜13:59薄い(画像がよく見える)
午後(afternoon)14:00〜17:59やや薄い
夕方(evening)18:00〜20:59やや濃い
夜(night)21:00〜23:59濃い

屋内モード

"mode": "indoor" を指定すると、背景画像(透過PNG)の透明部分から時間帯グラデーション(空)が透けて見えるようになります。

{
  "background": {
    "image": "room.png",
    "mode": "indoor"
  }
}

窓のある部屋の透過PNGを用意すれば、窓の外の空が時間帯で変わる——という演出ができます。屋内の世界観に向いています。

時間帯の確認方法

URLに ?timeslot= パラメータを付けると、時間帯を強制的に指定できます。背景画像の見え方を各時間帯で確認したいときに便利です。

https://あなたのサイト/?timeslot=morning
https://あなたのサイト/?timeslot=noon
https://あなたのサイト/?timeslot=evening

指定できる値: deep_night / morning / noon / afternoon / evening / night

トーク配置

変換ツールで出力したJSONファイルを scenario/ ディレクトリに配置します。

worlds/myworld/
  ├── world.json
  ├── bg.png
  ├── characters/
  │   ├── alice/
  │   └── bob/
  └── scenario/
      └── talks.json

エンジンは scenario/ 内のJSONを読み込み、各トークの trigger に基づいて再生を判断します。

トークインターバル

窓を開いたとき、最初の1トークはすぐに再生されます。その後は約1分間隔(±15秒のランダム)で次のトークが再生されます。

同じトリガー条件に複数のトークがある場合、一度再生されたトークは優先度が下がり、なるべく別のトークが選ばれます。

PWA設定

狐の窓はPWA(Progressive Web App)に対応しており、スマートフォンのホーム画面に追加してアプリのように使えます。

manifest.webmanifest

PWAの設定は manifest.webmanifest で行います。リポジトリに同梱されていますが、以下の項目を自分の窓に合わせて変更してください。

{
  "name": "わたしの窓",
  "short_name": "わたしの窓",
  "description": "創作世界を覗く窓",
  "start_url": "/",
  "display": "standalone",
  "background_color": "#1a1a2e",
  "theme_color": "#1a1a2e",
  "icons": [
    { "src": "icon-192.png", "sizes": "192x192", "type": "image/png" },
    { "src": "icon-512.png", "sizes": "512x512", "type": "image/png" }
  ]
}
プロパティ 変更すべき内容
name / short_name 窓の名前(ホーム画面に表示される)
background_color / theme_color 世界観に合わせた色
icons 192px と 512px のアイコン画像
アイコン画像は正方形のPNGを用意してください。キャラクターの顔やシンボルマークなど、小さくても分かりやすいものがおすすめです。