Core Engineering
Game Engine & Graphics
DirectX 11/12による描画基盤と、
データ指向設計に基づいた独自ECSの実装。
WikiGOLF
WikiGOLFは、DirectX製の自作ゲーム基盤上でWikipedia由来の情報を扱う3Dゴルフゲームです。WikiClient、WikiShortestPath、WikiTerrainSystem、SQLite同梱データを使い、記事データの取得・経路計算・地形生成・ゴルフ物理を一つのゲームループにまとめています。
成果: DirectX製の自作基盤上で、Wikipediaデータ取得、SQLiteキャッシュ、経路計算、物理挙動、3D表示を統合したプレイ可能なゲームとしてまとめました。
Wikipediaのリンク構造を3Dコースとして再構成する
Wikipediaの膨大なリンク構造を解析し、3Dのゴルフコースとして動的生成・プレイできるゲームです。既存エンジンを使わずに描画・物理・非同期API・DBを自作ECSで一貫して扱える構造を検証することが主な目的でした。
WikiGOLF — マップ俯瞰
WikiGOLF — 通常視点
自作ECS — World / ComponentPool / Pipeline
Wikipedia APIから取得した数千のテキストノードを自作ECSへ動的に投入。キャッシュ効率を意識したメモリレイアウトにより、大量オブジェクトを遅延なく処理できる設計にした。
スピンによる揚力・空気抵抗・摩擦係数をフルスクラッチで実装。test_physics_friction.cpp 等のTDDアプローチで数値の精度を担保した。
API通信の遅延をユーザーに意識させないよう、グラフ構造をSQLiteにキャッシュ。最短経路アルゴリズムで「リンク数=難易度」をゲーム開始前に算出する。
設計の意図
既存エンジンを使わない制約を設けたのは、描画・物理・非同期API・DBという異なる関心事を、ECSという単一アーキテクチャで一貫して扱えるかを確認したかったからです。1週間という期間も意図的に設定しており、スコープの取捨選択と実装速度の両立を経験することを目的としていました。
フリップエスケイプ (Engine Foundation)
フリップエスケイプは、制限時間内に部屋を突破してゴールを目指すDirectX 11製の3Dアクションゲームです。HEW_ECS上で、チャージして弾く移動、壁衝突や死亡、加速板、スイッチ、ワープ、ステージセレクト、ルーム単位の進行管理を実装しています。
成果: 10人チームで使うゲーム本体と基盤を整備し、ECS、DebugDraw、ビルダーAPI、Clang-Format CIにより他メンバーがゲームロジック実装に集中できる環境を作りました。
10名チームの開発基盤をアーキテクトとして担当する
最大10名規模のチーム開発を支えるために構築した、拡張性の高いゲームエンジン基盤です。開発効率と最終的なプロダクトの品質(手触り)を両立させることを目標に、アーキテクトとして設計・実装・サポートを担いました。
ライティング実装
ECS / Graphics / Components 層構造とビルダーAPI
洗練されたビルダーパターンAPI
world.Create().With<Transform>().With<MeshRenderer>().Build() のような直感的なAPIを設計。他のプログラマーがDirectXの詳細を意識せず、ロジックの実装のみに集中できる環境を提供しました。
1000行近いREADMEで仕様・使い方を完全に文書化。PCHとClang-Format CIを組み合わせてコードスタイルを自動強制し、大規模開発でのコード品質の劣化を防いだ。
当たり判定やレイキャストを画面上に可視化するデバッグ描画システムをServiceLocatorパターンで実装。コードのどこからでも呼び出せる設計にし、デバッグ工数を削減した。
Gamepadの振動プロファイルやポストエフェクトのパラメータを個別に調整し、数学的な処理に体感としての応答性を持たせた。
設計の意図
自分だけが使いやすいコードではなく、チーム全員が迷わず使える設計にすることを優先しました。基盤構築に約150時間、チーム調整・演出対応に約450時間を費やしており、後半の時間の多くは他メンバーの実装を支援することに使っています。
DX_EnTT / ECS_BACE
DX_EnTTは、DirectX 11、ImGui、EnTT、Assimpを組み合わせたC++のサンプル/土台プロジェクトです。スプライト、簡易メッシュ、キューブ描画、ImGuiデバッグUIを備え、EnTTベースのECS構成を検証できます。
成果: EnTTと自作ECSの設計差を検証し、後続のDirectXゲーム基盤で採用するデータ構造と描画責務の判断材料を整理しました。
データ指向設計とECSライブラリの評価・検証
汎用ECSライブラリ「EnTT」の評価と、データ指向設計(Data-Oriented Design)の検証を目的としたR&Dプロジェクトです。ここで得た知見がフリップエスケイプの設計方針に直接つながっています。
AoS → SoA 変換によるキャッシュヒット率の改善
AoS(配列内の構造体)からSoA(構造体の配列)へメモリレイアウトを転換。CPUキャッシュのヒット率を高め、コンポーネントの反復処理を高速化した。
EnTTを使う・使わないの判断をするために、内部のメモリ管理とアーキテクチャを自分で読んで把握した。このR&Dを通じてフリップエスケイプの設計方針を固めた。
設計の意図
外部ライブラリをそのまま採用するのではなく、内部実装を理解した上で意思決定したかった。EnTTの構造を把握することで、自作ECSとの設計上のトレードオフが明確になり、フリップエスケイプに何を引き継ぐかの判断基準ができました。