Joël van der Werf
記事一覧

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か月についてです。

「神社の森」を開いたOxygenエディタ:ヒエラルキー、エディタとゲームのビューポート、レンダー設定、コンソール
現在のOxygen:ヒエラルキー、実行中のゲームの隣の自由なエディタカメラ、レンダー設定、コンソール。Eonloreの「神社の森」を開いています。

変わったことは2つあります。何を作りたいかが明確になったこと。エンジンを証明するためのRPG「Eonlore」です。そして、ルール、ドキュメント、チェックからなるハーネスの中でAIコーディングエージェントと働き始めたこと。それによって、設計のコントロールを失わずにこの速さで進めることができました。

続けられた理由

  • 小さく、名前のついたステップ。「Create vulkan surface」のようなコミットは地味ですが、1年後に戻ってきても、どこで止まったかがわかります。
  • 最初からバリデーションレイヤー。Vulkanは、聞く耳さえあれば何を間違えたか教えてくれます。
  • エンジンより大きな目標。「Vulkanを学ぶ」は2回止まりました。「このゲームを動かす」は止まっていません。
次の記事:56件の問題:エンジン全体のレビューで見つかったこと

お仕事のご相談はお気軽にどうぞ

東京在住です。Unity・C++・ゲームエンジン関連のポジション、C#・.NETのソフトウェア開発のポジション、そしてAIエージェントを活用した開発体制づくりに関心があります。英語・オランダ語・日本語(勉強中)で対応できます。