mcpField
B
build-app

build-app

github.com/playcanvas開発31313 回インストール1 週間前に更新
リポジトリ

build-app について

Engine でアプリケーションを開発するためのスキルです。直接利用、React、Web Components の各方式を対象に、ライフサイクル、起動、更新、入力、UI の管理を扱います。

主な機能

  1. 01プロジェクトの入口と資料の確認
  2. 02アプリ入力とキャンバスサイズの設定
  3. 03更新タイミングと状態の管理
  4. 04アプリ状態に基づく UI 描画
  5. 05リソースのライフサイクル管理

活用シーン

  1. 01Engine アプリの初期化
  2. 02入力とキャンバスリサイズの設定
  3. 03時間に応じたアプリ処理の実装
  4. 04UI とリソース解放の整理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/playcanvas/skills --skill build-app

インストール後、Claude Code で/build-appを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
direct-engine.md
react.md
web-components.md

詳細

Engine アプリケーションの構築

package.json とエントリーポイントを読み、ライフサイクルを管理するサーフェスを維持し、そのリファレンスだけを読んでください:direct Engine、React、または Web Components。依存関係ではなく、インポートとマークアップに基づいて選択してください。

初期化

  • 入力はオプトインです。new Application(canvas, { ... }) に渡さない限り、app.keyboard、mouse、touch、gamepads、elementInput は null のままです。UI ボタンには new ElementInput(canvas) が必要です。
  • Engine はウィンドウのリサイズリスナーを追加しません。独自のハンドラーから app.resizeCanvas() を呼び出してください。
  • graphicsDevice.maxPixelRatio のデフォルト値は 1 です。ターゲットがフレーム予算内に収まる場合に限り、最大でも window.devicePixelRatio まで引き上げて、app.resizeCanvas() を呼び出し、canvas.width / canvas.clientWidth で確認してください。
  • Ammo が WasmModule 経由で読み込まれるまで、剛体は動作しません。find-examples で physics/falling-shapes の例からローダーをコピーしてください。
  • devtools のデフォルトは true なので、デバッグツールからアプリを検出できます(inspect-runtime)。本番ビルドで非表示にする場合に限り、false に設定してください。

更新ループ

  • dt はすでに app.maxDeltaTime(0.1 s)でクランプされています。手動でクランプするのではなく、値を調整してください。 app.timeScale でスケーリングでき、0 にするとスケーリングされた時間が一時停止します。
  • アプリの状態を明示し、一か所で管理してください。時間に依存するロジックは dt に基づいて進め、開始時と同じセットアップを使ってリセットしてください。

UI

  • UI はアプリの状態から描画し、真の情報源を DOM や UI 要素に保持しないでください。
  • DOM または React のオーバーレイを使用するか、user-interface の例を応用した Engine の screen および element コンポーネントを使用してください。
  • 使用しない要素は enabled = false で非表示にしてください。opacity が 0 の要素も描画されます。

所有権

  • アプリの作成、アセット、エンティティ、更新コールバック、ティアダウンは、一つの所有者で管理してください。
  • サーフェスの宣言的プリミティブを優先してください。エンティティ単位およびフレーム単位の動作は Engine の Script に記述してください。
  • 外部イベントとリソースは、それらを作成したライフサイクル内で削除してください。

コメント