Mononotonka Reference Manual
Mononotonkaは、MonoGame フレームワークをベースにした、2Dゲーム開発を効率化・簡素化するためのラッパーライブラリです。(現在はPC用のみ)
Getting Started
初めての方はこちら:インストールと初期設定 (Getting Started)
主な特徴
主な特徴
- シンプルなアクセス:
Tonシングルトンクラスを通じて、描画、入力、音声などの機能へ統一的にアクセスできます。 - 2D描画 & エフェクト: 仮想解像度による自動スケーリングに加え、テクスチャなしでのプリミティブ描画(スプライン曲線、稲妻、円弧など)も強力にサポート。 レンダーターゲットやスクリーンフィルター(セピア、モノクロ、走査線など)、画面シェイク機能を標準で搭載しています。
- リソース管理: 画像、フォント、音声ファイルは文字列IDで管理され、大文字小文字を区別しません。不要リソースの自動解放機能(ゆるふわキャッシュ)も備えています。
- データ管理・UI: JSON形式のセーブデータ管理、コンフィグメニュー画面、RPG風メッセージウィンドウ、パーティクルシステムなど、ゲーム開発に必要な周辺機能を網羅しています。
- シーン管理: フェードイン・フェードアウトを伴うシーン遷移を簡単に実装できます。
- 入力システム: キーボードとゲームパッドに対応した仮想ボタン入力を提供。設定ファイルによるキーコンフィグも可能です。
- 実用的なサブシステム: メッセージウィンドウ制御、BGM/SE管理、コンフィグメニュー、簡易パーティクルなど、2Dゲームに必要な基本機能を搭載しています。
- ウィンドウ制御: アスペクト比を維持した拡大縮小(レターボックス)や、フルスクリーン切り替えに対応しています。
アーキテクチャ
Mononotonkaはシングルトンパターンを採用しており、Ton クラスのプロパティから各サブシステムへアクセスします。
Ton.Gra(TonGraphics)- 画像、フォントの読み込みと管理、スプライトの描画、画面シェイク、スクリーンフィルターなどのグラフィックス機能を提供します。
Ton.Sound(TonSound)- BGM (MP3/OGG) と SE (WAV) の再生管理、音量調節、フェード処理を行います。
Ton.Input(TonInput)- キーボード、ゲームパッド、マウスの入力状態の取得、仮想ボタンの判定、入力の消費などの制御を行います。
Ton.Scene(TonScene)- シーンのスタック管理、フェードイン・アウトを伴うシーン遷移を行います。
Ton.Game(TonGame)- ウィンドウタイトル、解像度、フルスクリーン設定、FPS制御など、ゲーム全体のシステム設定を管理します。
Ton.Msg(TonMessage)- RPGのようなメッセージウィンドウの表示、テキストの送り出し、制御タグの処理を行います。
Ton.Storage(TonStorage)- セーブデータの読み書き(JSON形式)を管理します。
Ton.Math(TonMath)- 乱数生成、補間計算などの数学ヘルパー関数を提供します。
Ton.Primitive(TonPrimitive)- 円、矩形、三角形、スプライン曲線、稲妻、リボンなど、様々な図形描画機能を提供します。パーティクルやUI演出に役立ちます。
Ton.Particle(TonParticle)- 簡易パーティクルシステムの再生と管理を行います。
Ton.Config(TonConfigMenu)- 音量設定やウィンドウサイズ変更などを行うコンフィグ画面を提供します。
Ton.Log(TonLog)- デバッグログの出力と管理を行います。
ゆるふわキャッシュシステム (Yurufuwa Cache System)
Mononotonkaは、「適当にロードして、適当にリリースする」 独自(嘘)のキャッシュシステム(通称:ゆるふわキャッシュシステム)を搭載しています。
リソースは「コンテンツグループ (Content ID)」単位で管理され、適当にロードしてもよしなに計らってくれます。
メモリの最大使用量はログ、または Ton.Gra.TotalTextureMemory / Ton.Sound.TotalSoundMemory
で確認できます。
仕組み
リソースロード時に、第3引数で contentId(グループ名)を指定します(省略時は "Default")。
指定されたグループごとに、以下のルールでメモリ管理が行われます。
- Defaultグループ (永続):
"Default"グループに属するリソースは、明示的に破棄しない限り永続的にメモリに残ります。 プレイヤーキャラ、基本UI、共通のSEなど、常に使用するリソースに適しています。 - カスタムグループ (自動解放):
"Stage1","Battle"など、任意の名前でグループ化できます。
これらのグループに所属する全てのリソースに対して、一定時間(デフォルト: 300秒 = 5分)アクセスがないと、自動的にメモリから解放(キャッシュアウト)されます。
タイムアウト時間はTon.Gra.SetCacheTimeout(seconds)/Ton.Sound.SetCacheTimeout(seconds)で変更可能です。 - 即時解放:
メモリが厳しい場合や、ステージ切り替え時などは、
Ton.Gra.Unload("Stage1")のようにグループ名を指定して即座に解放することも可能です。
使い方:
- とりあえずずっと使うやつ →
LoadTexture("path", "key")(Default) - その場面だけで使うやつ →
LoadTexture("path", "key", "SceneName") - シーン遷移時 →
Unload("SceneName")を呼ぶか、放置して自動解放を待つ