行動 JSON の書き方
JSON 行動定義リファレンス
トップレベル(行動全体)
| フィールド |
型 |
必須 |
デフォルト |
説明 |
name |
string |
Yes |
"" |
行動名(一意推奨)。設定画面の表示にも使用 |
weight |
int |
No |
1 |
選出重み。大きいほど高頻度で選ばれる |
description |
string |
No |
— |
行動の説明文。設定画面に表示される |
category |
string |
No |
"special" |
"basic" = 基本行動、"special" = 特殊行動 |
reactive |
string |
No |
null |
イベント反応行動の場合、トリガーとなるイベント名を指定 |
pro |
bool |
No |
false |
true で PRO 専用行動 |
tier |
int |
No |
1 |
レア度(1〜10)。高いほど選出倍率が上がる |
unlock |
string |
No |
null |
実績解放キー。指定された実績チャレンジが達成されるまでエンジンに登録されない |
phases |
array |
Yes |
— |
行動フェーズの配列(1つ以上必須) |
フェーズ(phases 配列の各要素)
| フィールド |
型 |
必須 |
デフォルト |
説明 |
duration |
number or [min, max] |
Yes |
— |
フェーズの持続時間(秒)。配列で指定するとランダム範囲 |
pose |
string |
No |
"stand" |
棒人間のポーズ |
speed |
number or [min, max] |
No |
0 |
移動速度(px/秒)。配列でランダム範囲 |
movement |
string |
No |
null |
"forward" で現在の向きに移動。null で静止 |
reverseAtEdge |
bool |
No |
false |
true でステータスバー端に到達したら折り返す |
limbAnimation |
bool |
No |
false |
手足アニメーション ON/OFF |
limbSpeed |
number |
No |
8 |
手足アニメーション速度 |
jump |
object |
No |
null |
ジャンプ設定(後述) |
flipInterval |
number |
No |
null |
指定秒ごとに向きを反転する |
dogBehavior |
string |
No |
null |
犬への動作指示(後述)。null で通常追従 |
moveTo |
string |
No |
null |
"edge" で最寄りの端へ向かう |
yOffset |
number |
No |
0 |
ベース高さオフセット(px)。負値で上方向に浮遊。フェーズ中の基準高度を設定し、jump と併用可能 |
followers |
int |
No |
0 |
眷属(従者)の人数。指定した人数の小さな棒人間がリーダーの周囲にランダム配置で追従する |
aura |
bool |
No |
false |
true で頭の周りに回転・脈動する放射線(後光)を表示。高 Tier 演出向け |
scale |
number |
No |
1.0 |
描画スケール(1.0 = 標準、2.0 = 2倍)。巨大化演出に使用 |
projectileType |
string |
No |
null(骨) |
throw ポーズ時の投擲物の見た目。"bone"(×印2本線)/"frisbee"(扁平な楕円)/"ball"(正円) |
ジャンプ設定(jump オブジェクト)
| フィールド |
型 |
デフォルト |
説明 |
height |
number |
5 |
ジャンプの高さ(px) |
period |
number |
0.4 |
ジャンプ1周期の時間(秒)。小さいほど速い |
サンプル JSON
基本: シンプルな歩行
{
"name": "MyWalk",
"weight": 2,
"description": "ゆっくり散歩する",
"category": "basic",
"phases": [
{
"duration": [3, 6],
"pose": "walk",
"speed": [20, 40],
"limbAnimation": true,
"limbSpeed": 6,
"movement": "forward",
"reverseAtEdge": true
}
]
}
中級: 犬と一緒に走る
{
"name": "RunWithDog",
"weight": 1,
"description": "犬が先に走り、棒人間が追いかける",
"phases": [
{
"duration": 0.5,
"pose": "stand",
"dogBehavior": "run_ahead"
},
{
"duration": 3.0,
"pose": "run",
"speed": [80, 120],
"limbAnimation": true,
"limbSpeed": 14,
"movement": "forward",
"reverseAtEdge": true,
"dogBehavior": "run_ahead"
},
{
"duration": 0.5,
"pose": "stand"
}
]
}
上級: 壁登りチャレンジ(複数フェーズ + 犬連携)
{
"name": "WallClimbChallenge",
"weight": 1,
"description": "壁を登ろうとしてずるずる落ちる。犬が見守る",
"phases": [
{
"duration": 1.5,
"pose": "run",
"speed": 60,
"limbAnimation": true,
"limbSpeed": 12,
"movement": "forward",
"moveTo": "edge",
"dogBehavior": "watch"
},
{
"duration": 2.0,
"pose": "wall_climb",
"limbAnimation": true,
"limbSpeed": 8,
"jump": { "height": 10, "period": 4.0 },
"dogBehavior": "watch"
},
{
"duration": 0.3,
"pose": "crouch",
"dogBehavior": "watch"
},
{
"duration": 1.0,
"pose": "stand",
"flipInterval": 0.5
}
]
}
リアクティブ: 検索開始に反応
{
"name": "ReactSearch",
"reactive": "SearchStarted",
"description": "検索が始まるとキョロキョロする",
"phases": [
{
"duration": 1.5,
"pose": "surprised",
"flipInterval": 0.4
},
{
"duration": 0.3,
"pose": "stand"
}
]
}
カスタム行動の追加方法
data フォルダ内の stickman/ フォルダに JSON ファイルを追加するだけで、オリジナルの行動パターンを増やせます。
data/stickman/ フォルダに .json ファイルを作成します(ファイル名は自由)
- 上記のリファレンスに従って JSON を記述します(67 種のポーズ、
yOffset による高さ演出、followers による眷属、aura による後光など、すべてのフェーズ設定が利用可能)
- アプリを再起動すると自動的に読み込まれます
- 設定画面(Control Deck → Stickman)で行動の ON/OFF を切り替えられます
注意事項:
- phases 配列が空、または存在しない場合はスキップされます
- JSON の文法エラーがあってもアプリは正常に起動します(該当ファイルのみスキップ)
- name が同じ行動が複数ある場合、すべて読み込まれますが、設定画面での識別が困難になるため一意にすることを推奨します
- リアクティブ行動は同一イベントに対して最後に読み込まれたものが有効になります