【解決】PCでのゲーム表示サイズをブラウザサイズ依存にしたい

返信する
論理イヌ
記事: 205
登録日時: 2020年3月13日(金) 13:05

【解決】PCでのゲーム表示サイズをブラウザサイズ依存にしたい

投稿記事 by 論理イヌ »

ゲーム画面をWebページに埋め込みたいため、横816・縦612で作ったゲームを、iframeを使って縦横600サイズで表示させたいと考えています。

スマホで表示するとブラウザサイズに合わせてゲーム表示サイズを表示してくれますが、
PCで表示するとゲーム表示サイズが横816・縦612に固定され、ブラウザサイズを拡大・縮小してもゲーム表示サイズが変わってくれません。

PCの場合でも、スマホと同じようにブラウザサイズに依存した大きさにしたいと考えています。

ChromeのデベロッパーツールでUserAgentをスマホにすると理想の表示になります。
PC表示であってもUserAgentをスマホにすることってできるんでしょうか?
(core.jpあたりをいじる?)

素人なりに、jsのresizeイベントでリサイズするのはどうかと思ってやってみたのですが、id="GameCanvas"など指定してサイズ変更をやってみましたがうまくいきませんでした。

アドバイスいただけますと嬉しいです。よろしくお願いします。
最後に編集したユーザー 論理イヌ [ 2023年8月15日(火) 14:20 ], 累計 1 回
論理イヌ
記事: 205
登録日時: 2020年3月13日(金) 13:05

Re: PCでのゲーム表示サイズをブラウザサイズ依存にしたい

投稿記事 by 論理イヌ »

質問した論理イヌです。
現在の調査状況を共有します。

テストプレイ時のNW.jsはブラウザサイズ依存になっているので、そのあたりを調べたところ
rpg_core.jsにある「requestFullScreen」が実行されると、希望のゲーム画面になるんじゃないかと思いました。
(F4でフルスクリーンになるアレです)

しかし肝心の、「requestFullScreen」を実行する方法がわからず詰んでいます……。
(そもそもこの関数を実行すれば解決するのか不明)

引き続き調査しますが、何かお気づきの点がありましたらアドバイスいただけると嬉しいです。

ーーーー
解決しました。のちほど、解決方法を載せます。(2023/8/15)
論理イヌ
記事: 205
登録日時: 2020年3月13日(金) 13:05

Re: 【解決】PCでのゲーム表示サイズをブラウザサイズ依存にしたい

投稿記事 by 論理イヌ »

解決しました。

ブラウザサイズ依存になっているゲームのコードをコピペしただけですので、正解かわかっていません。
また、rpg_core.jsをいじっているので、場合によってはゲーム自体起動できなくなるかもしれないので、試す場合はバックアップを必ず取ってください。

rpg_core.js v1.6.2


<修正前>

コード: 全て選択

/**
 * @static
 * @method _defaultStretchMode
 * @private
 */
Graphics._defaultStretchMode = function() {
    return Utils.isNwjs() || Utils.isMobileDevice();
};
<修正後>

コード: 全て選択

/**
 * @static
 * @method _defaultStretchMode
 * @private
 */
Graphics._defaultStretchMode = function() {
    return true;
};

<修正前>

コード: 全て選択

/**
 * @static
 * @method _switchFullScreen
 * @private
 */
Graphics._switchFullScreen = function() {
    if (this._isFullScreen()) {
        this._requestFullScreen();
    } else {
        this._cancelFullScreen();
    }
};
<修正後>

コード: 全て選択

/**
 * @static
 * @method _switchFullScreen
 * @private
 */
Graphics._switchFullScreen = function() {
    if (this._isFullScreen()) {
        this._cancelFullScreen();
    } else {
        this._requestFullScreen();
    }
};

<修正前>

コード: 全て選択

/**
 * @static
 * @method _isFullScreen
 * @return {Boolean}
 * @private
 */
Graphics._isFullScreen = function() {
    return ((document.fullScreenElement && document.fullScreenElement !== null) ||
            (!document.mozFullScreen && !document.webkitFullscreenElement &&
             !document.msFullscreenElement));
};
<修正後>

コード: 全て選択

/**
 * @static
 * @method _isFullScreen
 * @return {Boolean}
 * @private
 */
Graphics._isFullScreen = function() {
    return document.fullScreenElement ||
           document.mozFullScreen || 
           document.webkitFullscreenElement ||
           document.msFullscreenElement;
};
返信する

“MV:質問”に戻る