はじめに
Awesome Engine の構成、ソースコードから学べること、各システムの状態の読み方を紹介します。
このページの内容
内部をたどって学べる 2D エンジン
Awesome Engine は、SFML を基盤とする C++20 製のゲームエンジンです。コアはシーンと、描画、リソース、入力、音声、UI、永続化のサービスを結び付けます。リポジトリ内のゲームは、それらのサービスを C++ コードから利用する方法を示しています。
このドキュメントは コミット 5a6dfac を基準としています。そのリビジョンに含まれる機能を説明し、ローカルの作業ツリーだけで確認された変更は 開発中 と明記します。
含まれているもの
- 7 つのゲームシーン: Bounce、Clicker、MemoryCard、TicTacToe、MineSweeper、Runner、Tetris。
- 2D 描画: SFML の描画可能オブジェクト、中間テクスチャ、Bloom と Monitor のポストプロセス。
- アクションベースの入力: キーボード、マウス、コントローラー。同じアクションに複数の入力を割り当てられます。
- 共有サービス: リソース、時間、音声、パーティクル、JSON 保存、PNG スクリーンショット。
- TGUI インターフェース: ウィンドウイベントと統合されたウィジェットと一時停止オーバーレイ。
これらのシステムは EngineContext を介して接続されます。各ゲームは Scene インターフェースを実装し、独自のオブジェクトとルールを管理します。対象リビジョンには ECS アーキテクチャやビジュアルエディターはありません。
おすすめの学習順序
状態表示の意味
| 状態 | このサイトでの意味 |
|---|---|
| 実装済み | 基準リビジョンに具体的なコードがあります。すべてのプラットフォームや利用状況で動作が認証されているという意味ではありません。 |
| 開発中 | 基準コミットにまだ含まれていない実装や変更がローカルの作業ツリーにあります。 |
| 実験的 | コードは存在しますが、統合が無効になっているか、説明対象の通常の処理フローに参加していません。 |
| 計画中 | プロジェクトによる明文化された意思が必要です。その根拠なしに機能をこの状態に分類することはありません。 |
AudioGroup、SpriteAnimator、SweptAabb、クールダウン用の共有クロックは、ローカルでの作業として確認されています。基準リビジョンをクローンしても、これらの API は含まれていません。
プラットフォームの対応範囲
リポジトリには Windows、MinGW、Ninja、GDB 向けの作業設定が含まれています。今回の調査では、Linux、macOS、モバイル、ブラウザーでのビルドや実行は確認していません。利用ライブラリの対応範囲だけを根拠に、エンジン全体が対応しているとは判断できません。
エンジンのコードは MIT ライセンスです。履歴の項目名は実際のコミットに対応しており、架空のリリースバージョンではありません。
参照ソース
確認済みのソースコードに基づいています。問題を見つけましたか? →