Edited at

解像度やフルスクリーン設定の話とオレオレBP関数を作ってみた話

More than 3 years have passed since last update.

※本記事は、「Unreal Engine 4 (UE4) 其の弐 Advent Calendar 2015」の22日目記事①です。


「Unreal Engine 4 (UE4) 其の弐 Advent Calendar 2015」の22日目記事に同時公開した他の記事については以下となります。

全てプラグイン開発ネタなのでマニアック向けです。

・②記事:UE4でのPlugin開発記録メモ(PluginBrowserのTemplate作成機能を使って簡単にpluginを作るよ)

・③記事:UE4でのPlugin開発記録メモ(FMessageDialogでダイアログ表示編)

・④記事:UE4でのPlugin開発記録メモ(バイナリ配布前に確認するべきこと)


今年の下期は某イカに進捗を取られた私がいます。

気が付くと某イカの練度がかなり上がったがUE4の練度は一向に上がらなかったのはなぜなのか・・・。


BPから解像度設定するよ

さてくだらない前置きは置いておいて

今回は、初心に戻ってBPを使って解像度やフルスクリーン設定についてです。

といっても、私個人の理解なので誤りがあるかもしれませんので注意。

今回改めて記事を書いた理由は、コミケ等でもUE4作品も増えてきたけどそろそろコンフィグ周りがデフォルトで搭載されて欲しいなーという個人的な思いがあるからです。


解像度のサイズを変更するよ

UE4ベテラン勢の方にしてみれば今更何をな展開ですね。。。

解像度変更するには、「実行中にBPで動的変更」、「実行Exeの引数かコンフィグに指定し起動する」の2パターンがあると思います。

Exe起動時に設定する場合は、コマンドライン引数に追加するだけ。


hogehoge.exe -ResX=1920-ResY=1080

hogehoge.exe -fullscrean


もしくは、コンフィグファイルに記載して起動する手もあります。

また、BPから設定する解像度の変更自体は簡単で以下の文字列をコマンド入力すればOKです。


r.SetRes 1920x1080w



参考①:UE4でウィンドウの解像度を変更する方法のメモ(menononさん)

参考②:UE4 Document@com04/BP-解像度変更(com04さん)

参考③:【UE4】パッケージ化した後のexeの解像度を指定する方法【備忘録】(かーずさん)

参考④:Unreal Engine 4 Console Variables and Commands

「で、解像度を変更できるのはわかったけど、やっぱし動的にフルスクリーンとかウインドウモード指定で変えたいのだけど・・・。」

と、普通なら思うはずです。


ウインドウモード

先ほどのコマンドは横x縦の後ろに[w]がついていましたが、その[w]がウインドウモード指定意味になります。

したがって、1920x1080の解像度でウインドウモードにしたい場合は以下でOKです。


r.SetRes 1920x1080w



フルスクリーン

ウインドウモードと同じ理論でフルスクリーン指定もできます。

[w]を[f]に変更すればOKです。簡単でしょ。


r.SetRes 1920x1080f



番外1:ウインドウモードのフルスクリーン化?(VR用のAlt+Enterで変わるアレ)

記事を書くために調査していた所、[w]と[f]をあわせることで[Alt+Enter]の画面最大化っぽいフルスクリーンの動作になることが判明(多分)。

ただし、画面解像度はディスプレイの最大に設定されてそう?に見えます。

一応、低解像度にすると画面サイズは変わらないが若干荒い?ような気がします(個人的感想)。

なので、あまり使わない方が良いかと思います。

デュアルディスプレイ環境でパネルの解像度が異なるとおかしく見えますし。。


r.SetRes 1920x1080wf



番外2:ミラーモード?

どうやら[m]をつけるとミラーモードにもなるらしい?です。私は未確認。

->参考④:Unreal Engine 4 Console Variables and Commands

普通の環境で実行したけどなにも起らなかった・・・?

もしかしたらDK2などVRデバイスが有効な状態でなければ反応しないかも?しれません。

やはり謎です。


r.SetRes 1920x1080wm



解像度設定できたけど、ゲーム内でユーザ環境の画面解像度をどうやって知ればいいの?

「Get Supported Fullscreen Resolutions」BPを使えばOKです。

公式APIリファレンスのリンク→「Get Supported Fullscreen Resolutions」

上記BP-APIは配列で実行可能な改造と組み合わせを構造体で返してくれます。

ちなみに、Ramaさんの「VictoryPlugin」でも解像度を知ることができます。

参考:Get Screen Resolutions & Combine String


「コマンドも忘れるし面倒だ、BP関数でラッピングされたアセットはないのか?」

この日のためにサクッと作りました。

今回はプラグインではなく、プロジェクト配置するAsset形式にしています。

特にライセンスとかも設けません。このBPをもっと発展させるプルリクエストもお待ちしております。独自のBPを作成していただいても構いませんので。


Asset公開先リポジトリ

「修羅場アセット」

https://github.com/bm9/UE4_ShurabaAssets.git

上記タイトルに深い意味はありませんので~。


提供BPのリファレンス仕様


Set Client Resolution BP-API

ラッパーBP:

中身:

概要:

Inパラに指定された解像度およびフルスクリーン有無を元に設定を変更するBP。

関数内部はExecuteConsoleCommndをラッパーしているだけのカスタムBP。

特に制限事項はない。

一応、事前に設定可能な値かを「Check Supported Fullscreen Resolution」BPで確認するのが望ましい。

INパラ:


変数名
指定範囲
備考

int
Width
0~
解像度(横)

int
Height
0~
解像度(縦)

bool
FullscreanFlag
True/false
フルスクリーン有効フラグ

Outパラ:

なし


Check Supported Fullscreen Resolution BP-API

ラッパーBP:

中身:

概要:

Inパラに指定した解像度設定がクライアント環境の解像度候補と比較し、対応している解像度組み合わせであればTrueを返し、対応していない組み合わせの場合Falseを返すBP-API.

INパラ:


変数名
指定範囲
備考

int
Width
0~
解像度(横)

int
Height
0~
解像度(縦)

Outパラ:


変数名
指定範囲
備考

bool
result
True/False
解像度パラメータ対応可否


Print Supported Fullscreen Resolutions BP-API

ラッパーBP:

中身:

概要:

実行環境で設定可能な解像度組み合わせ一覧をPrintStringで全て表示するだけの開発環境用DbgBP。

INパラ:

なし

Outパラ:

なし


使い方:リファレンス

設定可能な場合だけ解像度設定を更新する組み合わせ処理例。

こんな感じですかね。

下記画像にすれば1920x1080が実行できる環境の場合のみ、その解像度を設定できる様になります。


アドカレ2015も残すところあと3日。

明日はWassyPGさんです。ネタ悩み中とのことですが一体どんな内容になるか気になります。

以上です