コントリビュートにご協力いただきありがとうございます!その前に、このガイドをお読みいただければと思います。
あなたがこのプロジェクトに提供したソースコードには、他のコードと同様に LICENSE ファイルに記載されるライセンスが付与されることに同意してください。
新機能の要望やバグ報告などは GitHub Issues にてお願いします。 Issue を作成する前に、重複を避けるため既に存在している同じような Issue が存在しないかどうか検索をしてください。もし存在するならば、リアクションやコメントを用いて upvote してください。
本リポジトリは、MSBuildのソリューションを用いており、複数のプロジェクトを持ちます。
- Promete
- Prometeのメインプロジェクトです
- ゲームエンジンとしての基本機能は全てこのプロジェクトにあります
- NuGetにデプロイする対象です
- Promete.Example
- Prometeの機能を試せるデモ プロジェクトです。
- Promete.ImGui
- PrometeでImGUIを利用できるプラグインのプロジェクトです
- NuGetにデプロイする対象です
- Promete.MeltySynth
- Prometeで https://github.com/sinshu/meltysynth/ を利用するデモ
- Promete.Docs
- ドキュメント
これら以外のブランチは開発途上であり、ドキュメント化していません。気になる場合はコードを読んでください。
Promete のドキュメントは、Promete.Docs プロジェクトにて作業しています。
このプロジェクトは、Astroで作成されたドキュメントを含むnode.jsプロジェクトを、MSBuild向けに.esprojファイルを追加して管理しているものです。
masterブランチへのpushをトリガーとして、https://promete.app にデプロイされます。
Promete では、 GitHub Actions を用いてデプロイの自動化を行っています。設定ファイルは .github/workflow
にあります。
基本的には C# のコーディング規則(公式) に従います。その上で、次の規約に従うこと
- インデントは4文字の空白文字を用いる。
- フィールドを
public
にしないこと。 - アクセス修飾子は必ず省略しないこと。
- クラスや構造体のメンバーは次の順番で定義すること。
- プロパティ
- フィールド
- コンストラクター
- 複数存在する場合は、仮引数の少ない順に並べること。
- メソッド
- オーバーライドされたメソッド
- ネストされたクラス, 構造体, インターフェイス
- デリゲート
- メソッドをオーバーロードする場合は連続して配置すること。
- 文字列変数は基本的に Null 非許容とし、初期値として空文字列を挿入すること。
Prometeでは、Silk.NET等のバックエンドに依存しないようAPIを設計しています。
新しくAPIを追加する場合、引数や戻り値の型として、.NET 標準ライブラリおよびPrometeが提供する型のみを使用するようにし、バックエンドが提供する型は基本的に使用しないでください。
ただ、内部的・プラグイン向けと明記している場合や、private、internalなメンバーの場合は使用しても良いです。
.NET のアップデートは、SUPPORT-POLICY.md に従ってメンテナーが行います。 そのため、.NET のアップデートに関する PR は作成しないでください。
デプロイはメイン開発者の @EbiseLutica が行います。従ってこの項目はフォークされたプロジェクトの管理者向けの情報となります。
- 最新版の変更がビルドできて、サンプルコードに不具合が発生しないことを確認する
- master に最新版をコミットする
- Promete/Promete.csproj 内のバージョン表記を書き換える
- 上記の変更をコミットする
- タグを作成する(タグの命名規則は下記)
- pushする
- 🙏
- Promete 本体(コア)の場合は、
core-<バージョン>
とする(例:core-1.0.0
) - Promete.ImGui の場合は、
imgui-<バージョン>
とする(例:imgui-1.0.0
)
TBD