> ## Documentation Index
> Fetch the complete documentation index at: https://docs.makkii.jp/llms.txt
> Use this file to discover all available pages before exploring further.

# モニターと Sim I/O

> 描画結果の確認、入出力チャンネルの定義、プロパティ、TPS/FPS

## モニター

`onDraw` の描画結果がモニターパネルに表示されます。複数のモニターを扱うスクリプトにも対応しています。

* タブは自動では消えません。スクリプトが使う台数より多く残っている場合、
  使われていないモニターには\*\*「未使用」バッジ\*\*が出ます。
  黒い画面のままだと、壊れているのか使われていないのか区別できないためです。
* モニターにカーソルを合わせるとカメラのボタンが出ます。押すと、
  ワークスペースの `screenshots/` へ実解像度の PNG を保存し、
  同時にクリップボードへ整数倍に拡大したものをコピーします
  (拡大時にドットがぼやけないようにするためです)。

## Sim I/O

Sim I/O パネルは、`input.getNumber()` / `input.getBool()` が読む値を手で与えるためのものです。
`output.*` に書いた値もここで確認できます。

### 生成されるブロック

Sim I/O パネルで設定した内容は、**編集中の Lua ファイル自身のソースへ、
マーカーで区切られた1つのブロックとして書き込まれます**。

```lua theme={null}
-- >>> storm-lua-runner:simio (auto-generated -- edit via Sim I/O panel; do not edit by hand)
sim.group("Flight")
sim.labelNumberInput(1, "Flight", "altitude", { mode = "slider", max = 1000 })
sim.labelBoolInput(1, "Flight", "gear down")
sim.setProperty("speed", 2.5)
-- <<< storm-lua-runner:simio
```

* **ブロックの外側にあるコードには一切触れません。**
* 既定値と同じ設定は省略されます。上の例で `min` が無いのは、既定値の `0` のままだからです。
* 中身は宣言的な `sim.*` の呼び出しだけです。手で書き換えず、パネルから操作してください。
* このブロックは minify の前に取り除かれます。`sim.*` はシミュレータ専用で、
  ゲーム内には存在しないためです。詳細は [`sim.*` 標準ライブラリ](/storm-code/reference/sim-library)を参照してください。

### チャンネルの設定

チャンネルはグループにまとめて管理します。グループは折りたたみできます。

| 設定           | 選べるもの              |
| ------------ | ------------------ |
| 種類           | number / bool      |
| 向き           | 入力 / 出力            |
| チャンネル番号      | 1〜32               |
| bool の操作方法   | トグル / 押している間だけ     |
| number の操作方法 | 数値入力 / スライダー / シート |

number をスライダーにすると、チャンネルごとに最小値・最大値を設定できます。

**シート** は、Stormworks の座席の軸をそのまま模したモードです。
軸として `W/S`、`A/D`、上下、左右、任意のキーを選べ、
キーを離したときに 0 へ戻す (reset) か値を保つ (sticky) かを指定できます。

### プロパティ

`property.getNumber()` などが読むプロパティも、同じパネルから設定できます。
型は number / boolean / string です。生成されるブロックには `sim.setProperty(...)` として入ります。

## 実行速度

`Sim Controls` パネルで TPS (ティックレート) と FPS (描画レート) を変えられます。
本来より遅くすれば1ティックずつ挙動を追いやすくなり、速くすれば長時間の挙動を早送りで確認できます。

## Design を開いているとき

[Design](/storm-code/guides/design) のタブがアクティブなときは、
Sim I/O が Design 側の入力パラメータと連動します。
Design 内で定義した引数が、そのまま Sim I/O の入力ラベルとして出ます。
