三万行超のコードを闇に葬った話

初めに

DirectX学習用のフレームワークをクローズした話。
一人で一年以上を掛けていたのもあって愛着があるので墓標代わりに記事を書きます。

f:id:himatyu:20170929114220p:plain

そもそもなんでフレームワーク作ってたの?

コンテストの作品はエンジンを使用したものが並び、
就活現場ではWord・Excelの如く使えるのが当たり前な大エンジン時代です。※1

周りを見れば殆どがC#やBlueprintで開発し、
DirectXOpenGLを叩いている人は絶滅危惧種です。
私自身もUnityやUE4での制作経験があります。

そんな中でフレームワークを作っていた理由は、
エンジンオペレータになるのが嫌だからです。

大エンジン時代では複数のエンジンを扱えることは特に価値をなさないと考えています。
ただエンジンを使えるだけでなく、その一歩上をゆくために制作していました。

私自身が技術好きというのも一つの理由ですがw

どんなフレームワーク

特筆することでも無いのですが、
レンダリング・UI・衝突判定・リソース管理などを エンティティ・コンポーネント・システムで利用出来るフレームワークです。

空間分割を活用したレンダリングパイプラインや、 アドレスに意味をもたせた8分木など色々工夫をしましたがマルチスレッド対応を前にクローズしました。

なぜクローズしたのか

規模が大きくなりすぎたためです。
三万行を超えたこのプロジェクトを一人で保守できなくなりました。

制作して得たもの

エンジンの中身を想像できるようになったのが一番の収穫です。
後は設計やテスト、ドメインの重要性を身をもって理解できたのが大きかったです。

今後

真っ先にドメイン毎に分離して保守できるようにしますw。
今後もDirectXC++と言ったゲームエンジン以外の勉強を続けていきます。
とりあえずは作りかけの非同期やDODを組み込んで行こうかと思ってます。

葬ったプロジェクト

github.com

注釈

※1 このエントリではゲームを一本作れる程度に使えると言う意味で”使える”という表現をしています。