Skip to content

prometeapp/Promete

Repository files navigation

Promete

Nuget

Promete Engine は、.NET 8以降を対象とする、2Dグラフィックに特化したゲームエンジンです。

シンプルなAPI、高速な動作、充実した機能、高い拡張性を持ちます。

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

特徴

シンプルなAPI

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

var app = PrometeApp.Create()
    .Use<Keyboard>()
    .Use<Mouse>()
    .Use<ConsoleLayer>()
    .BuildWithOpenGLDesktop();

app.Run<MainScene>();

public class MainScene(Keyboard keyboard)
{
    private ITexture texture1;
    private ITexture texture2;

    public override Container Setup()
    {
        texture1 = window.TextureFactory.Load("./texture1.png");
        texture2 = window.TextureFactory.Load("./texture2.png");

        return 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に特化したグラフィックシステム

ピクセルパーフェクトな2Dグラフィックを気軽に実現できるゲームエンジンはそう多くありません。 Prometeは、2Dグラフィックに特化したグラフィックシステムを提供します。

Prometeでは、Elementという描画単位を用いた階層構造で画面を構成します。

Elementの一覧:

  • スプライト - 画面上へのテクスチャ表示
  • タイルマップ - テクスチャを敷き詰めたマップ表示
  • シェイプ - シンプルな図形の描画
  • コンテナー - 描画要素を格納できるオブジェクト
  • テキスト - 文字列を描画できるオブジェクト
  • 9スライススプライト - テクスチャを9分割して、矩形状のテクスチャ−をスムーズに引き伸ばせる特殊なスプライト

各種Elementを描画する上で、エンジンに登録された ElementRenderer が用いられます。このレンダラーは特に何もしなくとも標準のものが用いられますが、拡張することも可能です。

拡張性

Prometeは、拡張性を重視して設計されています。

標準の描画機能だけでは足りない場合、独自の ElementRenderer を実装することで、OpenGLを直接用いた独自のレンダリング機能をPrometeと統合できます。

また、オーディオ機能も同様に、定期的にバッファ配列にデータを書き込む IAudioSource の実装を作成することで、標準では足りないオーディオ形式をサポートできます。

オーディオ機能

BGMから効果音まで、ゲームに欠かせないオーディオ機能を提供します。

BGMは特定のポイントを起点としたループ再生に対応しています(これがないエンジンも多い)

デフォルトではogg vorbisおよびwav形式をサポートしています。オーディオファイルの読み込みはプラグインによって拡張可能です。

プラグインシステム

Prometeは、DIコンテナを用いたプラグインシステムを採用しています。

アプリ初期化時に Use<T> メソッドでプラグインを登録することで、その機能が使えるようになります。

キーボードやマウスの入力は、例えばPCでは必要かもしれませんが、スマートフォン等では不要な機能です。 こうした環境の差異を吸収したり、不要な機能を削減して高速化を図れるのが、Prometeのプラグインシステムです。

また、ゲーム開発時にはアセットやパラメータの管理クラスを作る必要がしばしば発生します。 プラグインシステムには任意のクラスを登録することができるので、そういった管理クラスを登録し、シーンをまたいでアクセスする書き方もできます。

サポート プラットフォーム

プラットフォーム サポート状況
Windows テスト済み。開発者自身がWindows 11で動作を確認しています。
macOS 動作可能。未テスト
Linux 動作可能。未テスト
Android まだ対応していません。
iOS まだ対応していません。
Web まだ対応していません。

ビルドの仕方

git clone https://github.com/EbiseLutica/Promete
cd Promete
dotnet build

ドキュメント

WIP

コントリビュート

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

GitHub issues GitHub pull requests

ライセンス

License

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

About

Fast and Dead Simple 2D Game Engine for .NET

Resources

License

Stars

Watchers

Forks

Packages

No packages published