こんにちは!生高橋です!

この記事は GameMaker Advent Calendar 2024 の一環として投稿しています。 前回の記事では、GameMakerでピクセルアートを綺麗に描画する方法を解説しましたが、今回はその応用編として、特殊な解像度でもフルスクリーン時にドット絵を美しく表示するテクニックをご紹介します! 前回のサンプルコードをベースにしつつ、さらに改良を加えた内容になっています。


環境


課題

例えば、ゲームの解像度をファミコンと同じ256×240に設定したとします。 この解像度を1920×1080のディスプレイでフルスクリーンにすると、拡大率が4.5倍と整数倍ではないため、ドットが崩れてしまいます。

解決策

フルスクリーン時に、解像度を整数倍で拡大できる最大値を計算し、ゲーム画面を中央に配置します。 余白部分が出ますが、これによりドットが歪むことを防ぎ、綺麗な表示を実現します。 今回の方法ではGameMakerのApplicationSurfaceを使ってこれを実現していきます。


ApplicationSurfaceの手動描画

ApplicationSurfaceはすべての描画を一時的にまとめる「キャンバス」のような役割を果たします。 通常、これに描かれた内容はGameMakerによってウィンドウや画面に自動的に配置・拡大されます。 今回の方法では、このApplicationSurfaceの描画を自動ではなく手動で行うことで、描画方法を細かく制御します。 ただし、自動的に行われた処理を自分で用意する必要があります。


事前準備

本サンプルでは例に出したファミコン解像度(256x240)で行いたいと思います。 Roomの設定は以下の通りです。

image.png