このプロジェクトについて
Permafrost Engineは、C言語で書かれたOpenGL 3.3のリアルタイムストラテジーゲームエンジンです。古典的なRTSゲームをエミュレートしつつ、現代的なアイデアを取り入れることを目的としています。このエンジンは、Steamで配信されている旗艦RTSゲームEVERGLORYの基盤であり、無料デモには学習や改変のためのすべてのゲームプレイスクリプトが含まれています。
主な機能は以下の通りです:
- OpenGL 3.3のプログラマブルパイプライン(利用可能な場合は最新の拡張機能も使用)
- ツール間の相互運用のための独自テキストモデル形式と、実行時の高速読み込みのためのバイナリ形式
- GPUスキニングによるスケルタルアニメーション。アニメーションポーズデータをテクスチャにバッチ処理し、多数のアニメーションエンティティを効率的にレンダリング
- マテリアルを用いたPhong反射モデル、ディレクショナルライトのシャドウマッピング、バンプ/ノーマル/パララックスマッピング
- 地形テクスチャスプラッティング、スカイボックス、距離ベースのメッシュLODレンダリング、動的バッチによるバッチレンダリング、リングバッファベースのGPUストリーミング
- RTSおよびFPSカメラ、独自ファイル形式によるタイルベースのマップレンダリング
- 反射、屈折、ソフトエッジ効果を備えた水面レンダリング
- Image Quiltingを用いたプログラムによるテクスチャ合成、Wang Tilingを用いた非周期的タイリング
- Python 2.7に公開されたエンジン内部、組み込みの対話型Pythonコンソール、イベントシステム、NuklearベースのUIフレームワーク
- 効率的なレイキャスティング、マップ/シーンエディタ、一時停止/再開システム、巨大マップの高速レンダリング
- マップナビゲーショングラフ/グリッド生成、ボイドのステアリング/フロッキング、階層的フローフィールド経路探索、動的障害物処理
- Hybrid Reciprocal Velocity ObstaclesとClearPathアルゴリズムを用いた動的な衝突回避、フォーメーションベースのユニット移動、ハンガリアンアルゴリズムを用いた最適なフォーメーション再編成
- ナビゲーションレイヤーを用いた異なるユニットタイプ/サイズの経路探索、陸/水/空ユニット、並列化された移動と経路探索計算
- コンピュートシェーダーによるGPUベースの群衆シミュレーション、SIMD加速されたビットマップグリッド空間インデックス、動的な空間領域へのエンティティ所属のリアルタイム追跡
- 位置効果と複数のグローバルエフェクトチャンネルを備えたオーディオシステム
- RTS機能:ミニマップ、ユニット選択、戦闘、フォグオブウォー、基地建設、ワーカー/生産の自動化、資源採集/輸送、駐屯/輸送メカニクス、投射物物理シミュレーションを伴う遠距離戦闘
- 異なる解像度とアスペクト比のサポート、設定可能なグラフィックス設定
- Pythonインタプリタ状態全体のシリアライズ/デシリアライズ、Pythonで定義された状態を含む任意のエンジンセッションの保存/復元
- 2段階パイプラインでのマルチスレッドシミュレーションとレンダリング、高度なデバッグ可視化とプロファイリング計測、軽量なメモリ会計
- ユーザー空間でスケジュールされる軽量タスク用のファイバーシステム、協調的マルチタスクのためのファイバーベースのPythonタスク、ページレベルのCopy-on-Writeセマンティクスを用いたゼロコピーフォーク
- クロスプラットフォーム(LinuxおよびWindows)、エラー時に自動でミニダンプとログを取得するWindowsランチャー
依存関係にはSDL2、GLEW、Python 2.7、OpenAL Soft、mi-malloc、stb_image、khash、nuklearが含まれます。これらはすべてソースからビルドし、ゲームバイナリと共に配布できます。
ビルド手順はLinuxおよびWindows(mingw-w64またはMSYS2を使用、Visual Studio 2022ソリューションも利用可能)向けに提供されています。エンジンは特別なリンク例外付きのGPLv3でライセンスされており、代替ライセンスがケースバイケースで付与される場合があります。
開発は、Pythonインタプリタの保存、グループ経路探索、フォグオブウォー、パフォーマンス最適化、ファイバー、基地建設などを扱う一連のYouTube開発ログで文書化されています。このプロジェクトには議論用の活発なDiscordコミュニティがあります。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.