Skip to content

prometeapp/Promete

Repository files navigation

Nuget

Promete は、.NET 8以降を対象とするゲーム開発フレームワーク、ゲームエンジンです。

2Dグラフィクスに特化したシンプルなAPI、高速な動作、充実した機能、高い拡張性を持ちます。

その名は、ギリシャ神話に登場する神「プロメテウス」に由来します。プロメテウスは、土を捏ねて人間を産み出し、火を盗んで人間に与えたとされます。
そうしたプロメテウスのように、クリエイターに力を与え、作品に命を吹き込む存在でありたいという願いが、このエンジンには込められています。

ドキュメントは https://promete.app にて公開中です。

特徴

シンプルなAPI

簡潔なエントリポイントからはじめる、シンプルなAPIを提供します。

// アプリケーションの初期化
var app = PrometeApp.Create()
	.Use<Keyboard>()
	.Use<ConsoleLayer>()
	.BuildWithOpenGLDesktop();

return 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 Sprite(_texture1).Location(16, 16),
			new Sprite(_texture2).Location(16, 32),
        ];
	}

	public override void OnUpdate()
	{
		if (_keyboard.Escape.IsKeyDown)
		{
			App.Exit(0);
		}
	}

    public override void OnDestroy()
    {
        _texture1.Dispose();
        _texture2.Dispose();
    }
}

クロスプラットフォーム

Windows だけでなく、macOSやLinuxでも動作します。

2Dに特化したグラフィックシステム

3Dに対応したゲームエンジンは多いですが、ピクセルパーフェクトな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

コントリビュート

コントリビューションの手引き をご確認ください。

GitHub issues GitHub pull requests

サポート中のバージョンとポリシー

サポート状況とポリシー をご確認ください。

LLM向けの情報

コーディング支援用のLLM向けに専用のドキュメントを用意しています。 LLM向けドキュメント をプロジェクトにコピーし、ご利用ください。

ライセンス

License

Promete はいくつかのサードパーティソフトウェアに依存しています。ライセンスをご確認ください THIRD_PARTIES.md

About

Promete - Simple, Powerful and Extensible 2D Game Engine for .NET

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors 2

  •  
  •