roblox-performance について
Roblox 開発者向けのパフォーマンス分析・調整スキルです。計測したボトルネックを基に最適化し、分析ツール、性能目標、Parallel Luau、ストリーミング、モバイル端末の検証を扱います。
主な機能
- 01スクリプト、物理、描画、メモリ、ネットワークを分析
- 02性能目標を設定し、計測した劣化を調査
- 03分析で特定した独立 CPU 処理に Actors を使用
- 04StreamingEnabled の動作と設定を把握
- 05モバイル端末の描画や UI の負荷を分析
活用シーン
- 01スクリプトや描画のボトルネックを特定
- 02継続的なメモリ増加を調査
- 03Parallel Luau に適した処理か評価
- 04低性能なモバイル端末向けに Roblox 体験を調整
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ tabooharmony/ roblox-brain --skill roblox-performanceインストール後、Claude Code で/roblox-performanceを入力して読み込まれたか確認します。
同梱ファイルreferences/full.md
詳細
Roblox のパフォーマンス
読み込むタイミング
プロファイリングとパフォーマンス予算の設定に使用します。プール化とライフサイクルのパターンについては、roblox-luau-patterns を参照してください。
クイックリファレンス
プロファイリングツール
- MicroProfiler (Ctrl+F6):スクリプト、物理演算、レンダリングのフレーム内訳を確認できます。
- Developer Console (F9):メモリ、ネットワーク、レンダリング、サーバーの統計情報を確認できます。
- Script Profiler (Ctrl+Alt+F5):スクリプトごとの CPU とヒープを確認できます。
- ラベル:
debug.profilebegin/debug.profileendで領域をマークし、debug.setmemorycategoryでメモリにラベルを付けます。計測処理はフラグで制御してください。
パフォーマンス目標
| 指標 | 初期目標 | 調査する基準 |
|---|---|---|
| サーバーのハートビート | < 16ms | > 33ms |
| クライアント FPS(デスクトップ) | 60 | < 30 |
| クライアント FPS(モバイル) | 45 | < 30 |
| メモリ | デバイスによる | 継続的な増加 |
俗説ではなく、計測したホットパスを最適化してください。計測結果に基づいてスロットリングし、リリース後に再度プロファイリングしてください。
Parallel Luau
- プロファイリングで分離可能な CPU 処理が特定された場合にのみ、Actor を使用してください。
- ワーカーで計算し、制限された DataModel への書き込みの前に同期してください。
- Actor 間でモジュールの共有状態に依存しないでください。
SendMessageはデータをコピーします。SharedTable は共有状態とアトミック更新をサポートします。
ホットループのコストモデル
- Luau はグローバルインポートを最適化します。関数の巻き上げやループのアンローリングに関する俗説に頼らないでください。環境の不純性によって最適化が無効になることがあります。CPU だけでなく、割り当てもプロファイリングしてください。GC のコストは後から発生する場合があります。
オブジェクトプール
事前にクローンを作成して再利用します。標準的なプールコード(トークンリースによる所有権管理)については、roblox-luau-patterns を参照してください。
StreamingEnabled の基本
- デフォルトで有効です。コンテナー単位で適用され、Workspace の子孫のみがストリーミングされます。
ModelStreamingBehavior = Improvedでは、BasePart 以外の子孫も親の Model とともにストリーミングされます。Legacy では BasePart のみがストリーミングされます。 - ストリーミングアウトされたオブジェクトは破棄されず、親が nil になります。ストリーミングバックされると、Luau の参照は引き続き有効です。
- 設定(Studio):目標値のデフォルトは 1024、最小値は 64 です。
StreamingIntegrityModeを設定し、データに基づいて調整してください。 - 注意点:ストリーミングアウトされている場合、
FindFirstChild("DistantPart")は nil を返します。タイムアウト付きの WaitForChild を使用してください。
モバイル
ローエンドデバイスで、ジオメトリ、テクスチャ、パーティクル、UI、シャドウをプロファイリングしてください。
コード例と API テーブルを含む完全なリファレンス:references/full.md
コメント
Markdown 対応