C++20 · SFML · オープンソース

小さな部品。
可能性が動き出す。

Awesome Engine はシーンで構成された 2D エンジンです。共有コンテキストにより、入力から最終フレームまで各ゲームが利用するシステムをまとめています。

確認済みのコードを見る ↗
プロジェクトについて

仕組みを
理解できる基盤。

Carlos Cortina が開発した Awesome Engine は、C++ のゲームロジックと SFML 上の再利用可能なサービスを組み合わせています。付属の 7 つのシーンは、小さく完結したゲームでグラフィックス、入力、音声、UI をつなぐ方法を示します。

設計はコンポジションを重視しています。シーンは EngineContext を受け取り、責務の明確なマネージャーを利用します。MIT ライセンスのコードなので、この基盤を学び、変更し、拡張できます。

リポジトリでは、制作の経緯や正式な目標はまだ公開されていません。ここではコードから読み取れる設計と確認済みの機能を説明します。

全体アーキテクチャ

1 つのコンテキスト。
つながるシステム。

マネージャーは EngineContext の値メンバーです。SceneFactory は unique_ptr でシーンを構築し、所有します。

エントリーポイントmain() → EngineProcessEvent → Update → Render
共有コンテキスト

EngineContext

RenderResource音声InputParticleTimeSceneGuiCursorSaveRandomScreenshotClipboard
ライフサイクル

SceneFactory → Scene

Bounce · Clicker · MemoryCard · TicTacToe · MineSweeper · Runner · Tetris

StartUpdateRenderOnEventOnPauseOnCleanup
実装コードの概念図 · 参照と責務を見る ↗

1 フレームの旅

01シーンScene::Render()
02RenderTextureオフスクリーン描画
03Bloom + MonitorGLSL ポストプロセス
04ウィンドウGUI + カーソル + display

インターフェースとカーソルはシーンのポストプロセス後に描画されます。Glitch と色反転のコードは存在しますが、確認済みのチェーンでは無効です。

エンジンの技術構成

具体的なツール。
明確なバージョン。

CMakeLists.txt を見る ↗
C++20

エンジンとゲームシーンの実装言語。

標準の草案
SFML3.1.0

ウィンドウ、イベント、2D グラフィックス、入力、音声。

リポジトリを見る
TGUI1.13.0

SFML_GRAPHICS バックエンドによるグラフィカルインターフェース。

リポジトリを見る
CMake3.28+

FetchContent による構成、ビルド、依存関係のダウンロード。

リポジトリを見る
nlohmann/json3.12.0

JSON ファイルによる設定と永続化。

リポジトリを見る
spdlog1.16.0

イベントログと診断。

リポジトリを見る
magic_enum0.9.8

C++ 列挙型のリフレクション用ユーティリティ。

リポジトリを見る
GLSLシェーダー

Bloom、Glitch、色反転、Monitor のエフェクト。

仕様
現在の対応範囲

大切なのは
限界も知ること。

確認された開発設定は Windows、MinGW、Ninja、GDB です。Linux と macOS は未検証で、確認が必要なパスの大文字・小文字の差異があります。

エンジンにはビジュアルエディター、ECS、汎用物理エンジン、スクリプティング、Web・モバイル出力はありません。ゲームの衝突や物理処理は各シーン固有です。

既知の制限: オーバーレイが要求する「Menu」シーンは登録されていません。このケースや、ほかの確認済みの問題はドキュメントで詳しく説明しています。
制限と解決方法を見る →