コンテンツにスキップ

行動 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 ファイルを追加するだけで、オリジナルの行動パターンを増やせます。

  1. data/stickman/ フォルダに .json ファイルを作成します(ファイル名は自由)
  2. 上記のリファレンスに従って JSON を記述します(67 種のポーズ、yOffset による高さ演出、followers による眷属、aura による後光など、すべてのフェーズ設定が利用可能)
  3. アプリを再起動すると自動的に読み込まれます
  4. 設定画面(Control Deck → Stickman)で行動の ON/OFF を切り替えられます

注意事項: - phases 配列が空、または存在しない場合はスキップされます - JSON の文法エラーがあってもアプリは正常に起動します(該当ファイルのみスキップ) - name が同じ行動が複数ある場合、すべて読み込まれますが、設定画面での識別が困難になるため一意にすることを推奨します - リアクティブ行動は同一イベントに対して最後に読み込まれたものが有効になります