mcpField
F
fog-of-war-js-ts

fog-of-war-js-ts

github.com/pproenca開発218123 回インストール11 週間前に更新
リポジトリ

fog-of-war-js-ts について

fog-of-war-js-ts は、ゲームのフォグ・オブ・ウォーや視界システムを構築・改善するための JavaScript/TypeScript ガイドです。44 のルールで、アルゴリズム、更新制御、状態、描画、メモリ、スケーリング、幾何処理、正確性を扱います。

主な機能

  1. 01FOV アルゴリズムの指針
  2. 02可視状態の差分更新
  3. 03状態とデータ構造の選択
  4. 04フォグ描画の手法
  5. 05メモリとマップ拡張の指針
  6. 06幾何処理と正確性のルール

活用シーン

  1. 01グリッドマップの視界実装
  2. 02フォグ・オブ・ウォー表示のリファクタリング
  3. 03更新遅延や描画上の問題の調査
  4. 04多数ユニットや大規模マップへの可視性の拡張

インストール

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

$npx skills add https://github.com/pproenca/dot-skills --skill fog-of-war-js-ts

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

同梱ファイル

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

AGENTS.md
metadata.json
assets/templates/
_template.md
references/
_sections.md
correct-corner-peeking.md
correct-explored-not-overwritten.md
correct-permissiveness-model.md
correct-symmetric-walls.md
fov-dda-continuous.md
fov-octant-transforms.md
fov-radius-bounded-scan.md
fov-recursive-shadowcasting.md
fov-single-ray-los.md
fov-symmetric-shadowcasting.md
fov-visibility-polygon.md
geo-avoid-modulo-deindex.md
geo-avoid-trig-in-loop.md
geo-integer-slope-shadows.md
geo-radius-shape-choice.md
geo-squared-distance.md
mem-bitpack-explored.md
mem-clear-with-fill.md
mem-generation-stamp.md
mem-no-hot-loop-closures.md
mem-reuse-buffers.md
render-dirty-region-only.md
render-fade-alpha-lerp.md
render-imagedata-not-fillrect.md
render-lowres-soft-upscale.md
render-offscreen-fog-layer.md

詳細

dot-skills Fog of War(JavaScript/TypeScript)のベストプラクティス

JS/TS ゲームにおける戦場の霧と視界システムのパフォーマンスおよび正確性に関するガイドです。FOV に関する代表的な文献(Björn Bergström、Albert Ford、Adam Milazzo)、Red Blob Games、rot.js、MDN/WebGL のレンダリング API をもとにまとめています。8 つのカテゴリにわたる 44 のルールを影響度順に並べ、視界コードの作成、レビュー、リファクタリングに役立てることを目的としています。

適用する場面

次のような場合に、このガイドラインを参照してください。

  • グリッドマップや連続マップで視界、射線、タイルの可視性を実装する場合
  • 戦場の霧の表示(未探索/探索済み/可視のレイヤー)を作成またはリファクタリングする場合
  • 戦場の霧の処理が遅い(毎フレーム再計算する)、視覚的なアーティファクト(ちらつき、光漏れ)が発生する、または大きなマップでメモリ使用量が急増する原因を調べる場合
  • 多数のユニット(RTS)や大規模なワールド、ストリーミングされるワールドに対応する場合
  • 可視状態や探索済み状態の保存方法とレンダリング方法を選ぶ場合

優先度別のルールカテゴリ

優先度カテゴリ影響度プレフィックス
1FOV/視界アルゴリズム重大fov-
2更新スケジュールと差分再計算重大update-
3状態表現とデータ構造高state-
4戦場の霧レイヤーのレンダリング高render-
5メモリと割り当て中〜高mem-
6複数の視点とマップのスケーリング中scale-
7ジオメトリとホットループの計算中geo-
8正確性と視覚的なアーティファクト低〜中correct-

クイックリファレンス

1. FOV/視界アルゴリズム(重大)
2. 更新スケジュールと差分再計算(重大)
  • update-recompute-on-move - 視界は視点の移動時にのみ再計算する
  • update-dirty-flag - 視点ごとにダーティーフラグとマップのバージョンスタンプを管理する
  • update-refcount-visibility - 複数の視点による差分更新では、タイルごとに視点の数を数える
  • update-delta-not-clear - すべてクリアして再計算するのではなく、可視性の差分を出力する
  • update-debounce-map-edits - マップの編集をまとめ、影響を受ける視点を 1 回だけ再計算する
  • update-merge-explored - 明らかにした領域の可視状態を探索済みに統合し、探索済み状態を再構築しない
3. 状態表現とデータ構造(高)
  • state-typed-arrays - オブジェクトの配列ではなく、型付き配列に戦場の霧の状態を保存する
  • state-flat-1d-index - ネストした配列ではなく、y*width+x でフラットバッファをインデックスする
  • state-three-state-encoding - 3 つの戦場の霧の状態を、1 バイトのビットフラグとして表現する
  • state-bitset-layers - ブール値の可視レイヤーにはビットセットを使用する
  • state-row-major-iteration - バッファのメモリレイアウトに合わせ、行優先で反復処理する
  • state-no-string-keys - タイルごとの可視性に文字列キーのマップを使用しない
4. 霧レイヤーの描画(高)
5. メモリと割り当て(中〜高)
  • mem-reuse-buffers - 霧のバッファーを一度だけ割り当て、再利用します
  • mem-clear-with-fill - 再割り当てやループではなく、fill で可視バッファーをクリアします
  • mem-generation-stamp - 世代スタンプを使ってフレームごとのクリアを省略します
  • mem-bitpack-explored - メモリと保存データを節約するため、探索済みレイヤーをビットにパックします
  • mem-no-hot-loop-closures - FOV の走査ループの外に割り当てを移します
6. 複数ビューアーとマップのスケーリング(中)
7. ジオメトリとホットループの計算(中)
8. 正確性と視覚的なアーティファクト(低〜中)

使い方

詳しい説明と誤ったコード・正しいコードについては、個々のリファレンスファイルを参照してください。

  • まず fov- と update- から始めると、大きな効果が得られます。正しいアルゴリズムを使い、変更時にのみ再計算します。
  • セクションの定義 - カテゴリー構成、影響度、実行ライフサイクルの順序について説明します。
  • ルールのテンプレート - 新しいルールを追加するためのテンプレートです。

参照ファイル

ファイル説明
references/_sections.mdカテゴリの定義と影響度の順序
assets/templates/_template.md新しいルール用のテンプレート
metadata.jsonバージョンと参照情報

コメント