LoginSignup
4
5

More than 1 year has passed since last update.

レトロゲーム風ゲーム画面設定

Last updated at Posted at 2020-03-17

レトロゲーム調は、作ろうとすると、以下の問題が起きます。

●ウィンドウ画面で実行させると画面が小さすぎて分かりにくい。デバッグチェックが厳しい
●フルスクリーンにすると目立ちますが、中間色でドット絵がぼけて表現できない
●画面更新が 60FPS,120FPS などPCのスペックにより変わってしまう

これらの点をクリアする必要があります。

上記3点をクリアしたソースコード

main.cpp

# include <Siv3D.hpp> // OpenSiv3D v0.4.2
void Main()
{
    Graphics::SetTargetFrameRateHz(60);   // 60FPS固定
    Size genesis(320,224);  // MegaDrive(海外だとGenesis)の幅と高さのピクセル
    Window::SetTitle(U"Retro game");  // ウィンドウタイトル(フルスクリーンでは表示されない)
    // ウィンドウの枠を非表示にする
    //Window::SetStyle(WindowStyle::Frameless);   // ウィンドウ枠を消す

    Window::Resize(genesis*2); // ウィンドウ画面にしたとき、小さすぎて見えないので2倍にした
    Scene::SetBackground(ColorF(0.8, 0.9, 1.0));
    Window::SetFullscreen(true);
    Scene::Resize(genesis);
    //
    // シーンをウィンドウに転送する際の拡大縮小フィルタを「補間なし」に
    Scene::SetTextureFilter(TextureFilter::Nearest);

    // 背景を水色にする

    // 大きさ 60 のフォントを用意
    const Font font(60);

    // 320*224のテクスチャを用意(メガドライブと同じ画素数)
    const Texture genesisScreen(U"sonic3tails.gif");

    bool fullscreen = true;

    while (System::Update())
    {
        if (KeySpace.down())
        {
            fullscreen = ! fullscreen;
            Window::SetFullscreen(fullscreen);  // Windowかフルスクリーン切り替え
            Scene::Resize(genesis);
        }
        if (KeyN.down()) // 補間なし
        {
            Scene::SetTextureFilter(TextureFilter::Nearest);
        }
        if (KeyL.down()) // 補間あり
        {
            Scene::SetTextureFilter(TextureFilter::Linear);
        }
        genesisScreen.draw();
    }
}

//https://siv3d.github.io/ja-jp/tutorial/window/

操作キー

● スペース   Window画面、フルスクリーン切り替え
● N      補間なし、ドットがくっきり見える
● L      補完あり、境目の色の中間色で埋める、ぼやけた感じになる

動作はうまくいっている。

使用した画像:レトロゲーム画像、画素数同じ

sonic3tails.gif で保存して OpenSiv3Dプロジェクトの Appフォルダ に入れる
sonic3tails.gif

この画面がフルスクリーンで表示されます。

レトロゲームが好きな人はこれで昔のゲーム機と同じドット絵でのフルスクリーン画面表示可能になります。

画面切り替えを1命令で簡単にできるようにしました。
ブロックをコピペして簡単に使用できます。

続きの記事はこちらです。
https://qiita.com/loppta/items/76aeaa29cd850cf9ad81

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5