Warning
Prometeは現在、ベータ版です。
プロダクション用途でもご利用いただけますが、意図しない不具合が起こる可能性があります。
実際のアプリケーション開発に利用する場合は、バグにご注意ください。
最新のサポート ポリシーもご確認ください。
Promete は、.NET 8以降を対象とするゲーム開発フレームワーク、ゲームエンジンです。
2Dグラフィクスに特化したシンプルなAPI、高速な動作、充実した機能、高い拡張性を持ちます。
その名は、ギリシャ神話に登場する神「プロメテウス」に由来します。プロメテウスは、土を捏ねて人間を産み出し、火を盗んで人間に与えたとされます。
そうしたプロメテウスのように、クリエイターに力を与え、作品に命を吹き込む存在でありたいという願いが、このエンジンには込められています。
簡潔なエントリポイントからはじめる、シンプルなAPIを提供します。
var app = PrometeApp.Create()
.Use<Keyboard>()
.Use<Mouse>()
.Use<ConsoleLayer>()
.BuildWithOpenGLDesktop();
app.Run<MainScene>();
public class MainScene
{
private readonly Keyboard _keyboard;
private readonly ITexture _texture1;
private readonly ITexture _texture2;
public MainScene(Keyboard keyboard)
{
_keyboard = keyboard;
texture1 = window.TextureFactory.Load("./texture1.png");
texture2 = window.TextureFactory.Load("./texture2.png");
Root = new Container
{
new Sprite(texture1, location: (16, 16)),
new Sprite(texture2, location: (16, 32)),
};
}
public override void OnUpdate()
{
if (_keyboard.Escape.IsKeyDown)
{
Window.Close();
}
}
}
Windows だけでなく、macOSやLinuxでも動作します。 また、将来的にはAndroidやiOS、Webでも動作する予定です。
デフォルトの描画バックエンドはOpenGLを使用していますが、将来的にはVulkanやMetalなどのAPIをサポートし、より高速な描画を実現する予定です。
ピクセルパーフェクトな2Dグラフィックを気軽に実現できるゲームエンジンはそう多くありません。 Prometeは、2Dグラフィックに特化したグラフィックシステムを提供します。
Prometeでは、ノードという描画単位を用いた階層構造で画面を構成します。
ノードの一覧:
- スプライト - 画面上へのテクスチャ表示
- タイルマップ - テクスチャを敷き詰めたマップ表示
- シェイプ - シンプルな図形の描画
- コンテナー - 描画要素を格納できるオブジェクト
- テキスト - 文字列を描画できるオブジェクト
- 9スライススプライト - テクスチャを9分割して、矩形状のテクスチャ−をスムーズに引き伸ばせる特殊なスプライト
各種ノードを描画する上で、エンジンに登録された NodeRenderer
が用いられます。このレンダラーは特に何もしなくとも標準のものが用いられますが、拡張することも可能です。
Prometeは、拡張性を重視して設計されています。
標準の描画機能だけでは足りない場合、独自の NodeRenderer
を実装することで、OpenGLを直接用いた独自のレンダリング機能をPrometeと統合できます。
また、オーディオ機能も同様に、定期的にバッファ配列にデータを書き込む IAudioSource
の実装を作成することで、標準では足りないオーディオ形式をサポートできます。
BGMから効果音まで、ゲームに欠かせないオーディオ機能を提供します。
BGMは特定のポイントを起点としたループ再生に対応しています(これがないエンジンも多い)
デフォルトではogg vorbisおよびwav形式をサポートしています。オーディオファイルの読み込みはプラグインによって拡張可能です。
Prometeは、DIコンテナを用いたプラグインシステムを採用しています。
アプリ初期化時に Use<T>
メソッドでプラグインを登録することで、その機能が使えるようになります。
キーボードやマウスの入力は、例えばPCでは必要かもしれませんが、スマートフォン等では不要な機能です。 こうした環境の差異を吸収したり、不要な機能を削減して高速化を図れるのが、Prometeのプラグインシステムです。
また、ゲーム開発時にはアセットやパラメータの管理クラスを作る必要がしばしば発生します。 プラグインシステムには任意のクラスを登録することができるので、そういった管理クラスを登録し、シーンをまたいでアクセスする書き方もできます。
プラットフォーム | サポート状況 |
---|---|
Windows | テスト済み。開発者自身がWindows 11で動作を確認しています。 |
macOS | テスト済み。開発者自身がmacOS Sequoiaで動作を確認しています。 |
Linux | 動作可能。未テスト |
Android | まだ対応していません。 |
iOS | まだ対応していません。 |
Web | まだ対応していません。 |
git clone https://github.com/prometeapp/Promete
cd Promete
dotnet build
https://promete.app (WIP) 現在、精力的にドキュメントを作成中です。
コントリビューションの手引き をご確認ください。
サポート ポリシー をご確認ください。
Promete はいくつかのサードパーティソフトウェアに依存しています。ライセンスをご確認ください THIRD_PARTIES.md