Core Engineering

Game Engine & Graphics

DirectX 11/12による描画基盤と、
データ指向設計に基づいた独自ECSの実装。

1

WikiGOLF

View on GitHub ↗

WikiGOLFは、DirectX製の自作ゲーム基盤上でWikipedia由来の情報を扱う3Dゴルフゲームです。WikiClientWikiShortestPathWikiTerrainSystem、SQLite同梱データを使い、記事データの取得・経路計算・地形生成・ゴルフ物理を一つのゲームループにまとめています。

成果: DirectX製の自作基盤上で、Wikipediaデータ取得、SQLiteキャッシュ、経路計算、物理挙動、3D表示を統合したプレイ可能なゲームとしてまとめました。

1ヶ月
作成期間
1w
スコープ期間
ECS
自作アーキテクチャ
TDD
開発手法
C++ DirectX 11 SQLite Wikipedia API Original ECS

Wikipediaのリンク構造を3Dコースとして再構成する

Wikipediaの膨大なリンク構造を解析し、3Dのゴルフコースとして動的生成・プレイできるゲームです。既存エンジンを使わずに描画・物理・非同期API・DBを自作ECSで一貫して扱える構造を検証することが主な目的でした。

APIの動的エンティティ化 (ECS)

Wikipedia APIから取得した数千のテキストノードを自作ECSへ動的に投入。キャッシュ効率を意識したメモリレイアウトにより、大量オブジェクトを遅延なく処理できる設計にした。

物理演算のスクラッチ実装

スピンによる揚力・空気抵抗・摩擦係数をフルスクラッチで実装。test_physics_friction.cpp 等のTDDアプローチで数値の精度を担保した。

SQLiteによるグラフキャッシュ

API通信の遅延をユーザーに意識させないよう、グラフ構造をSQLiteにキャッシュ。最短経路アルゴリズムで「リンク数=難易度」をゲーム開始前に算出する。

設計の意図

既存エンジンを使わない制約を設けたのは、描画・物理・非同期API・DBという異なる関心事を、ECSという単一アーキテクチャで一貫して扱えるかを確認したかったからです。1週間という期間も意図的に設定しており、スコープの取捨選択と実装速度の両立を経験することを目的としていました。


2

フリップエスケイプ (Engine Foundation)

View on GitHub ↗

フリップエスケイプは、制限時間内に部屋を突破してゴールを目指すDirectX 11製の3Dアクションゲームです。HEW_ECS上で、チャージして弾く移動、壁衝突や死亡、加速板、スイッチ、ワープ、ステージセレクト、ルーム単位の進行管理を実装しています。

成果: 10人チームで使うゲーム本体と基盤を整備し、ECS、DebugDraw、ビルダーAPI、Clang-Format CIにより他メンバーがゲームロジック実装に集中できる環境を作りました。

約5ヶ月
作成期間
1,089
コミット数
10名
チーム規模
CI
Clang-Format導入
C++ DirectX 11 Effekseer XAudio2 Team Dev

10名チームの開発基盤をアーキテクトとして担当する

最大10名規模のチーム開発を支えるために構築した、拡張性の高いゲームエンジン基盤です。開発効率と最終的なプロダクトの品質(手触り)を両立させることを目標に、アーキテクトとして設計・実装・サポートを担いました。

洗練されたビルダーパターンAPI

world.Create().With<Transform>().With<MeshRenderer>().Build() のような直感的なAPIを設計。他のプログラマーがDirectXの詳細を意識せず、ロジックの実装のみに集中できる環境を提供しました。

ドキュメントとCIによるコード規律

1000行近いREADMEで仕様・使い方を完全に文書化。PCHとClang-Format CIを組み合わせてコードスタイルを自動強制し、大規模開発でのコード品質の劣化を防いだ。

DebugDraw の内製

当たり判定やレイキャストを画面上に可視化するデバッグ描画システムをServiceLocatorパターンで実装。コードのどこからでも呼び出せる設計にし、デバッグ工数を削減した。

演出パラメータの詰め

Gamepadの振動プロファイルやポストエフェクトのパラメータを個別に調整し、数学的な処理に体感としての応答性を持たせた。

設計の意図

自分だけが使いやすいコードではなく、チーム全員が迷わず使える設計にすることを優先しました。基盤構築に約150時間、チーム調整・演出対応に約450時間を費やしており、後半の時間の多くは他メンバーの実装を支援することに使っています。


3

DX_EnTT / ECS_BACE

View on GitHub ↗

DX_EnTTは、DirectX 11、ImGui、EnTT、Assimpを組み合わせたC++のサンプル/土台プロジェクトです。スプライト、簡易メッシュ、キューブ描画、ImGuiデバッグUIを備え、EnTTベースのECS構成を検証できます。

成果: EnTTと自作ECSの設計差を検証し、後続のDirectXゲーム基盤で採用するデータ構造と描画責務の判断材料を整理しました。

約1ヶ月
作成期間
DOD
データ指向設計
SoA
メモリレイアウト
R&D
プロジェクト区分
C++ EnTT Data-Oriented Design Memory Layout

データ指向設計とECSライブラリの評価・検証

汎用ECSライブラリ「EnTT」の評価と、データ指向設計(Data-Oriented Design)の検証を目的としたR&Dプロジェクトです。ここで得た知見がフリップエスケイプの設計方針に直接つながっています。

AoS → SoA によるキャッシュ効率の改善

AoS(配列内の構造体)からSoA(構造体の配列)へメモリレイアウトを転換。CPUキャッシュのヒット率を高め、コンポーネントの反復処理を高速化した。

外部ライブラリの内部構造を読んで評価する

EnTTを使う・使わないの判断をするために、内部のメモリ管理とアーキテクチャを自分で読んで把握した。このR&Dを通じてフリップエスケイプの設計方針を固めた。

設計の意図

外部ライブラリをそのまま採用するのではなく、内部実装を理解した上で意思決定したかった。EnTTの構造を把握することで、自作ECSとの設計上のトレードオフが明確になり、フリップエスケイプに何を引き継ぐかの判断基準ができました。