created: 2025-12-01

💬 GameMaker Advent Calendar 2025 に参加しています。

サーフェイスとは?

とその前にGameMakerの描画の流れ(パイプライン)を。

GameMakerは直接画面に描画せず、まず「アプリケーションサーフェイス」という名前のビルトインのサーフェイスに描画して、それを画面に描画します。この動きはGameMakerが裏で勝手にやってることです。

「へえそうなんだ。で?」って感じですね。

ここでサーフェイスという概念が出てきました。サーフェイスとは白紙のキャンバスのようなもので、ここにいろんなものを描画できます。「アプリケーションサーフェイス」はGameMakerが内部で使ってるビルトインのサーフェイスです。

ユーザーも独自にサーフェイスを作ってそこにいろんなものを描画し、ゲーム中に表示させることができます。普通は独自に作ったサーフェイスもアプリケーションサーフェイスに描画されることになります。

1枚のキャンバスのようなもの

独自にサーフェイスを作ります。これに背景、机、剣と盾、アイコン、テキストを描画します。これで1枚のサーフェイスが作られました。これを1枚の絵のように扱いゲーム中に表示できます。1枚の絵として回転、拡大縮小、シェーダーで加工したりできます。複製もできます。

サーフェイスは1度作って更新しなければフレームをまたいでずっと保持されます(静的な用途)。毎フレーム更新することもできます(動的な用途)。

独自に作ったサーフェイスに、アプリケーションサーフェイス(つまり動いてるゲーム画面そのもの)をコピーすることもできます。

使用例

1️⃣ サーフェイスにアプリケーションサーフェイスをコピーして、最前面に表示したらどうなるでしょうか? コピーすると、その瞬間のアプリケーションサーフェイスが切り取られ複製されます。つまりゲーム画面のスクショを撮ったようなものです。これを最前面に表示してキャラなどを非活性化したら、ポーズ画面になります。実際、GameMakerでポーズ機能が実装される際にはしばしばこの手法が採られます。

2️⃣ 敵を倒したら敵が血を吹き出して地面や壁に血がこびりつく。爆弾を爆発させたら焼け焦げたあとが残る。いわゆる**「デカール」表現**も実装できます。 血糊オブジェクトを作成して配置しても実装できますが、サーフェイスを利用することも多いです。 roomサイズのサーフェイスを作り、敵が死ぬたびにサーフェイスに血糊を追加描画します。このサーフェイスを背景の上に表示すれば「血糊デカール」になります。room中を歩き回ってスクロールさせてもちゃんと血糊は残っています。

3️⃣ 暗闇と明かり表現。画面全体は暗いけどプレイヤーの周りとろうそくの周りだけは明るい。そんな表現もサーフェイスで実装されることがあります。