Hydroの4年間:Vulkanの三角形からエディタまで
Hydroは2022年7月、ウィンドウとバリデーションレイヤーから始まりました。何度も中断しては再開してきた個人プロジェクトの4年間を振り返ります。
Hydroの最初のコミットは2022年7月14日です。それ以降のgit履歴は、多くの個人プロジェクトと同じように、一気に進んでは長く止まり、また一気に進むことの繰り返しです。それでも続いてきたのは、止まるたびに再開できる状態で終わっていたからです。どう育ってきたかを振り返ります。
2022年7月:画面に何かが映る
最初の1週間は土台づくりでした。premake、GLFW、GLM、ImGui、spdlogをサブモジュールとして導入し、ウィンドウの抽象化、イベント、入力を実装。そしてVulkanを地道に進めました。Khronosのバリデーションレイヤー付きのインスタンス、物理デバイスの選択、論理デバイスとグラフィックスキュー、サーフェス、イメージビュー付きのスワップチェーン、シェーダー、コマンドプール、パイプライン。
7月25日のコミットは「Got something on screen」。その後に続くのは定番の次の学びです。Vulkanを正しく終了する、複数フレームを描く、ウィンドウのリサイズでスワップチェーンを作り直す。月末には頂点バッファとインデックスバッファもできていました。
2023年:レンダラーに必要な部品
2023年の春には、ユニフォームバッファとディスクリプタセット(回るキューブのコミットメッセージは「Spin boi spin」)、メモリアロケーター、stb_imageによるテクスチャ読み込み、そして同じVulkanの定型コードを手で書かずに済むディスクリプタビルダー。5月にはドッキング対応のImGui。11月にはカメラ、DrawQuad API、シーンからの矩形のバッチ描画、そして「Simple game」というコミット。
2025年:レンダラーからエンジンへ
2025年6月、違う目標を持って戻ってきました。レンダラーは物を描くもの、エンジンには描くための世界が必要です。エディタに本物のビューポートができ、シーンはEnTTベースのECSに移り、コンポーネント、ヒエラルキーウィンドウ、シーンが揃いました。
2026年10月:すべてが一気に
2026年10月以降、Hydroはそれまでの3年間よりも速く成長しました。プロジェクトとYAMLでのシーン保存、コンソール、エンジン全体のレビュー、スプライトシート、Box2D、パーティクル、影とHDRを備えた3Dレンダラー、Jolt物理、シーンヒエラルキーと実行時UI、スタンドアロンビルド、データ駆動のコンテンツ。この開発ブログの記事の多くは、この1か月についてです。

変わったことは2つあります。何を作りたいかが明確になったこと。エンジンを証明するためのRPG「Eonlore」です。そして、ルール、ドキュメント、チェックからなるハーネスの中でAIコーディングエージェントと働き始めたこと。それによって、設計のコントロールを失わずにこの速さで進めることができました。
続けられた理由
- 小さく、名前のついたステップ。「Create vulkan surface」のようなコミットは地味ですが、1年後に戻ってきても、どこで止まったかがわかります。
- 最初からバリデーションレイヤー。Vulkanは、聞く耳さえあれば何を間違えたか教えてくれます。
- エンジンより大きな目標。「Vulkanを学ぶ」は2回止まりました。「このゲームを動かす」は止まっていません。