build-app について
Engine でアプリケーションを開発するためのスキルです。直接利用、React、Web Components の各方式を対象に、ライフサイクル、起動、更新、入力、UI の管理を扱います。
主な機能
- 01プロジェクトの入口と資料の確認
- 02アプリ入力とキャンバスサイズの設定
- 03更新タイミングと状態の管理
- 04アプリ状態に基づく UI 描画
- 05リソースのライフサイクル管理
活用シーン
- 01Engine アプリの初期化
- 02入力とキャンバスリサイズの設定
- 03時間に応じたアプリ処理の実装
- 04UI とリソース解放の整理
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ playcanvas/ skills --skill build-appインストール後、Claude Code で/build-appを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/direct-engine.mdreact.mdweb-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に記述してください。 - 外部イベントとリソースは、それらを作成したライフサイクル内で削除してください。
コメント
Markdown 対応