🤝

【Rust】自作GameEngine ~依存関係編~

2024/10/06に公開2

はじめに

フレームワークやアプリケーションを作成する際、依存関係の解決は非常に重要です。初期段階で適切なルールや方針を決めておかないと、後々、開発の進行に支障をきたす可能性があります。

今回は、自作ゲームエンジンにおける依存関係のルールを決定し、その概要を共有します。

おおまかな依存関係

依存関係を4つのレベルに分類しました。それぞれのレベルは、以下の順序で依存関係が少なく、上位のレベルに依存できる構造です:

  1. utility
  2. core
  3. coreplugin
  4. userplugin

各レベルの概要を以下に説明します。

utility

このレベルでは、サードパーティー製ライブラリのみを利用可能とし、エンジン内の他のクレートには依存しません。数学ライブラリやエラーハンドリング、ログ出力など、汎用的な機能を提供するクレートがここに属します。

例:数学ライブラリ、エラーハンドリング、Loggerなど

core

utilityにのみ依存するレベルです。エンジンの基盤となる機能を提供し、ウィンドウ管理や物理演算、レンダリングなどの機能がこのレベルに含まれます。

例:ウィンドウ管理、物理演算、レンダリング

coreplugin

coreレベルが提供するインターフェースに依存し、プラットフォームやハードウェアの違いを吸収するレイヤーです。プラットフォーム固有の処理をこのレベルで実装し、エンジンの移植性を確保します。

例:Windowsならwin32、Linuxならx11を使用

userplugin

最上位レベルで、ユーザーがエンジンの提供する機能を使ってスクリプトや拡張機能を作成する領域です。ゲームロジックや独自の機能を追加する際に利用されます。

例:プレイヤーの挙動を制御するスクリプト、エンジンの拡張機能

まとめ

今回は、ゲームエンジンの依存関係を4つのレベルに分類し、それぞれの役割を説明しました。次回は、これらのレベルに従ってクレートの実装に着手し、その具体的な内容を紹介します。

Discussion