
Flow Field 最適化 — 3,000から10,000エージェントへのスケーリング
はじめに 前回の記事では、Flow Fieldパスファインディングの概念と3段階パイプラインを解説した。Flow Fieldはエージェント数に関係なく \(O(V)\) で計算されるため、パスファインディング自体はボトルネックではない。 では、3,000エージェントでフレームレートが低下する原因は何か?そして10,000エージェントまでスケールアップするには何を変える必要があるのか? ...

はじめに 前回の記事では、Flow Fieldパスファインディングの概念と3段階パイプラインを解説した。Flow Fieldはエージェント数に関係なく \(O(V)\) で計算されるため、パスファインディング自体はボトルネックではない。 では、3,000エージェントでフレームレートが低下する原因は何か?そして10,000エージェントまでスケールアップするには何を変える必要があるのか? ...

序論 前回のポストの最後でこう予告した: NativeContainerを使うべき本当の理由 — GCがゲームに与える影響 このシリーズで我々は「managedの世界を脱せよ」というメッセージを繰り返し目にしてきた。Job SystemはNativeContainerのみ許可し、Burstはmanagedタイプをコンパイルせず、SoAレイアウトはunmanagedメモリでのみ意...

序論 Job SystemポストでNativeArrayの内部構造を解剖した。C#配列とのメモリモデルの違い、Allocatorの種類、Safety Systemの基本動作まで扱った。 しかし実戦ではNativeArrayだけですべてを解決することはできない。動的サイズのリストが必要で、キーと値のペアで高速に検索する必要があり、複数のワーカースレッドが同時に結果をキューに入れなければなら...

はじめに 3,000体のゾンビがプレイヤーに向かって押し寄せてくる場面を想像してほしい。各ゾンビに個別の経路を計算するとしたら? A*一回あたり数百〜数千ノードを探索し、それを3,000回繰り返さなければならない。フレームレートはあっという間に崩壊する。 Flow Field パスファインディングはこの問題に根本的に異なるアプローチで挑む。個々のエージェントに経路を与える代わりに、空間全...

序論 2018年、Aras PranckevičiusはToyPathTracerベンチマークで驚くべき結果を発表した。C# BurstがC++より速いケースが存在するということだ — PCでBurst 140 Mray/s vs C++ 136 Mray/s。 Aras Pranckevičius, “Pathtracer 16: Burst & SIMD Optimiz...

はじめに 前回のポストでClaude Codeのアーキテクチャ設計原理を分析した。今回の記事ではさらに一段深く入り、ハーネスエンジニアリング(Harness Engineering) — すなわちAIエージェントのオーケストレーション層がどのような設計原理で構築されるかを解剖する。 「ハーネス」という用語はもともとテストハーネス(test harness)に由来し、実行対象をラップして入...

はじめに Claude CodeはAnthropicが開発したCLIベースのAIコーディングエージェントである。ターミナルから直接コードを読み、修正し、ビルドし、テストまで実行するエージェント型ツールで、2025年以降急速に発展してきた。 この記事では、Claude Codeを長期間使用しながら観察した動作パターン、公式ドキュメント、そして公開された技術スタック(TypeScript、B...

はじめに 前回のポストではUnity Job SystemとBurst Compilerの原理を扱った。Part 4でキャッシュ階層、AoS vs SoAの基本概念、メモリアラインメントとSIMDの関係を見てきたが — SoAが速いことは確認できた。 しかし、いくつかの疑問が残っている: なぜ速いのか?キャッシュライン単位の動作を数学的に分析できるのか? 既存のOOPコードをど...

序論 Unityで数千体のエージェントを60fpsで動かすには、メインスレッド1本では不可能だ。経路探索、分離ステアリング、距離計算、行列変換 — これらすべての演算を毎フレーム処理しなければならないが、Update()で順次実行すると3,000体のエージェントでフレームあたり数十msを要する。 C# Job SystemとBurst Compilerはこの問題を解決するUnity公式の...

はじめに マルチスレッドプログラミングはゲーム開発において避けられないテーマだ。CPUが毎年クロック速度ではなくコア数を増やす方向に進化する中、シングルスレッドではハードウェアの性能を十分に活用できなくなった。 しかしマルチスレッドは難しいことで悪名高い。競合状態(Race Condition)、デッドロック(Deadlock)、スタベーション(Starvation)— OSの授業で学ん...