2026 OpenClaw 実戦:リモート Mac で Unity SpriteAtlas の書き出しディレクトリを監視し、PNG 図集の POT 適合・透過チャンネル・容量しきい値を巡検する再現手順

Unity の SpriteAtlas から吐き出した PNG 図集を、納品前にPOT(幅・高さが 2 の冪)RGBA 透過max_bytesで機械検査する手順です。リモート Mac上で OpenClaw Gateway から狭いツール面だけを開き、監視とバッチを同じ README に固定します。

ディレクトリ監視戦略 · バッチコマンドテンプレート · 失敗時のリトライとログアーカイブ · トラブルシューティング FAQ

前提の整理は スプライト納品マトリクス、ログ形は 監視・リトライ・ログ保管、圧縮の別径は pngquant/zopflipng と接続してください。

ディレクトリ監視戦略

例として、Unity プロジェクト直下に Exports/SpriteAtlas/ を切り、Editor スクリプトatlas_ui_512.png.tmp へ書き込み後に mv.png に確定させます。監視対象は ローカル NVMe の絶対パスに限定し、クラウド同期フォルダ直書きは避けます。

brew install fswatch 後、イベントは 無音窓(例:12 秒間新規イベントなし)でまとめ、ジョブ ID を JSONL に載せます。単一フライトのロックファイルで、連続ビルドでも検査ワーカーは常に一本にします。Gateway から起動する場合は インストール手順でパスとトークンを非対話シェルと揃え、許可ツリーを Exportslogs に絞ります。

バッチコマンドテンプレート

下記は「列挙→寸法とチャンネル→バイト」の順に固定した最小例です。MAX_BYTES と透過契約(require_alpha=1 なら rgba 必須)を環境変数で渡します。

#!/usr/bin/env bash
set -euo pipefail
ROOT="${ATLAS_EXPORT_ROOT:?}"
MAX_BYTES="${MAX_BYTES:-1200000}"
REQUIRE_ALPHA="${REQUIRE_ALPHA:-1}"

is_pot() { local n="$1"; [[ "$n" =~ ^[0-9]+$ ]] && (( (n > 0) && (n & (n-1)) == 0 )); }

while IFS= read -r -d '' f; do
  [[ "$f" == *.png ]] || continue
  w=$(magick identify -format '%w' "$f")
  h=$(magick identify -format '%h' "$f")
  ch=$(magick identify -format '%[channels]' "$f")
  bytes=$(stat -f%z "$f")
  ok=1
  is_pot "$w" || ok=0
  is_pot "$h" || ok=0
  [[ "$REQUIRE_ALPHA" == "1" && "$ch" != *rgba* ]] && ok=0
  (( bytes <= MAX_BYTES )) || ok=0
  printf '{"file":"%s","w":%s,"h":%s,"channels":"%s","bytes":%s,"ok":%s}\n' \
    "$f" "$w" "$h" "$ch" "$bytes" "$ok" >> "${LOG_DIR:-./logs}/atlas-scan.jsonl"
done < <(find "$ROOT" -type f -name '*.png' -print0)

ok=0 の行は quarantine/ へ移し、Slack やメールは OpenClaw 側の通知スキルに任せます。ショートカット連携の骨格は Gateway×ショートカットを参照してください。

失敗時のリトライとログアーカイブ

I/O 一時障害のみ指数バックオフ(例:2s,4s,8s 上限 60s)で再試行し、POT 不一致やチャンネル違反は自動再試行せず隔離して人が Unity プリセットを直す流れに分けます。JSONL は日次で gzip し、archive/YYYY-MM-DD/ へ移動。成功ジョブは一行サマリのみ残し、失敗は reason_codepotalphasize)を付与します。

トラブルシューティング FAQ

寸法は POT だが中身がぼやける:参照解像度と Pixels Per Unit の組合せ問題で、検査ゲートとは別レイヤです。README に期待 PPU を明記します。同一ファイルでサイズだけ日々変動:圧縮設定の揺れなので、ビルドターゲット固定と中央値ベースライン比較を YAML に追加します。夜間だけ失敗:ホストのスリープと外付けボリュームのマウント解除を疑い、launchdThrottleInterval とログローテを確認します。

目安:無音窓は 8〜20 秒、MAX_BYTES は端末別に表で固定し、逸脱は再エンコード前に余白トリム方針を見直します。

まとめ:.tmp 完了リネーム、無音窓+単一フライト、magick identifystat の二段ゲート、理由コード付き隔離と JSONL gzip。契約導線は 購入・レンタル料金接続ガイド(ログイン不要)。

公開ページのみ(ログイン不要)

SpriteAtlas 納品ゲートをリモート Mac で常時回す

監視・検査・ログを専用ホストに載せ替え、チームで同じしきい値表を共有できます。

購入・レンタルへ 料金・ノード一覧 ご利用ガイド
SpriteAtlas PNG 巡検 2026 POT・透過・容量を常時ホストへ
購入・レンタルへ