今回はアドベンチャーゲームやノベルゲームを制作できるソフト、ラノゲツクールMV で作成したゲームを WordPress に埋め込んでフルスクリーン表示することができたので紹介したいと思います。
前回の記事では、ラノゲツクールMV で制作したプロジェクトをブラウザゲーム用にビルドして出力されたファイル一式をそのままサーバーにアップロード。WordPress の記事に iframe 要素を使って 埋め込んでいるのですが、そのままではどうも画面が小さく、文字を読むゲームをプレイするにはちょっとしんどい感じです。
これを YouTube の動画のように、フルスクリーンボタンで画面を切り替えたい!ということで手順を見ていきましょう。
まずはラノゲツクールMV でブラウザゲーム用にビルドしたゲームファイル構造はこのようになっています。
index.html ファイルをそのままエディターで開くとこのようにhead要素に外部スクリプト読み込みがたくさん書かれていて body要素には空っぽですが…
<!DOCTYPE html> <html> <head> <title></title> <meta name="viewport" content="user-scalable=0, initial-scale=1.0"> <meta charset="utf-8"> <!--{PLATFORM_LIBS}--> <script type="text/javascript" src="data/lib/glMatrix.js"></script> <script type="text/javascript" src="data/lib/pathfinding-browser.min.js"></script> <script type="text/javascript" src="data/lib/hammer.min.js"></script> <script type="text/javascript" src="data/lib/linq.min.js"></script> <script type="text/javascript" src="data/lib/jszip.min.js"></script> <script type="text/javascript" src="data/lib/live2d.min.js"></script> <script type="text/javascript" src="data/lib/Live2DFramework.js"></script> <script type="text/javascript" src="data/lib/sprintf.js"></script> <script type="text/javascript" src="data/lib/jQuery.js"></script> <script type="text/javascript" src="data/lib/jQuery.mousewheel.min.js"></script> <script type="text/javascript" src="data/lib/webfont.js"></script> <script type="text/javascript" src="data/ENGINE.js"></script> <script type="text/javascript" src="data/lib/boot.js"></script> <script type="text/javascript" src="data/SCRIPTS.js"></script> </head> <body style="background-color: black;"> </body> </html>
実際にブラウザで表示した際のソースコードを確認すると、body 要素内に canvas 要素が追加され、ゲームが描画される形になっています。
<body style="background-color: black; cursor: default;"> <canvas style="background-color: rgb(0, 0, 0); position: absolute; left: 0px; top: 0px; transform: scale(1);" width="1280" height="720"></canvas> </body>
そこで Web ページ内の任意の要素をフルスクリーン表示可能にする Fullscreen API を利用して、この canvas 要素をフルスクリーン表示すればOKということになります。
フルスクリーンモードを使用する – ウェブデベロッパーガイド _ MDN
Fullscreen API を使ってフルスクリーン化したい要素は ID で指定するようなのですが、ラノゲツクールMV でビルドしたindex.htmlのソースを見ると JavaScript から生成される canvas 要素には ID が付いていません。この canvas要素にIDを指定する方法を色々調べたところ、新しくJavascript を使って次のような処理を行うことにしました。
ここでつまづいたのが getElementsByTagName で取得するのは配列ということ。変数に格納された要素を呼び出すには変数名にインデックス番号を付けないといけないのですが、これに気付くまで大分時間が掛かりました。
そして、完成した JavaScript のコードがこちら。index.html の head 要素にこのように書きました。
<script> // HTMLの読み込みが完了してから実行 window.onload = function() { // 変数 element に canvas 要素を格納 var element = document.getElementsByTagName("canvas"); // 変数 element の最初の格納値"[0]"にID"content"を設定 // ( getElementsByTagName で取得した要素は配列なのでインデックスを指定) element[0].setAttribute("id", "gamecontent"); } </script>
ちなみに、getElementsByTagName で要素を取得する際に、そのままインデックス番号を指定して、このように書いても大丈夫でした。
var element = document.getElementsByTagName("canvas")[0]; element.setAttribute("id", "gamecontent");
index.html を Webブラウザで開いてソースコードを確認すると、ちゃんと canvas 要素に ID “gamecontent”が設定されています。
<body style="background-color: black; cursor: default;"> <canvas style="background-color: rgb(0, 0, 0); position: absolute; left: 0px; top: 0px; transform: scale(1);" width="1280" height="720" id="gamecontent"></canvas> </body>
canvas要素に ID の設定ができたので、次は Fullscreen API を使ってゲーム画面をフルスクリーン表示する処理を行います。
フルスクリーン表示を実行するための JavaScriptのコードについては今回はこちらのWebサイトを参考にさせていただきました。
特定の要素を全画面(フルスクリーン)にするFullscreen API
という問題があるのですが、今回はとりあえず、処理を行う JavaScript は埋め込み元の index.html に書いて、フルスクリーンを行うボタンは埋め込み先のWordPress記事に設置することにしました。
Webサイトで紹介されているコードを参考にこのようなコードを index.html に追加しました。コード内に書かれている gamecontent が先の手順で canvas 要素に設定した ID になります。
<script> function fullscreen() { //Chrome15 以上, Safari5.1 以上、Opera15 以上の場合 if (gamecontent.webkitRequestFullscreen) { gamecontent.webkitRequestFullscreen(); //Firefox10 以上の場合 } else if (gamecontent.mozRequestFullScreen) { gamecontent.mozRequestFullScreen(); //Internet Explorer11 以上の場合 } else if (gamecontent.msRequestFullscreen) { gamecontent.msRequestFullscreen(); // HTML5 Fullscreen API 仕様の場合 } else if (gamecontent.requestFullscreen) { gamecontent.requestFullscreen(); } else { // 上記以外の場合 alert("ご利用のブラウザはフルスクリーン操作に対応していません"); return; } } </script>
ひとまず埋め込み元のファイルの設定はできたので、次は埋め込み先の WordPress の設定になります。
WordPressの記事に埋め込んで表示する HTML の要素についてレイアウトと ID 名を決めておきます。今回はゲーム画面の下にラノゲツクールMV のロゴ、ゲームタイトル、フルスクリーン表示をボタンを配置することにしました。
実際に使用する要素の ID 名は次の通りです。
/*ゲーム画面 */ #lng-container{ margin: 0 auto; width: 600px; height: 338px; } /* ゲーム画面:iframe要素 */ #lng-iframe{ width: 100%; height: 100%; } /* ゲーム画面のフッター */ #lng-footer { padding: 2px; margin: 0 auto; width: 596px; height: 36px; background-color: whitesmoke; } /* フッター:ラノゲツクールMVロゴ */ #lng-footer-logo { position: relative; width: 80px; height: 36px; float: left; background-image: url(wp-content/uploads/visual-novel/TemplateData/lng-logo.png); background-repeat: no-repeat; } /* フッター:ラノゲツクールMV ロゴのリンク */ /* (背景画像をURLリンクとして使用)*/ #lng-footer-logo a { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } /* フッター:ゲームタイトル */ #lng-footer-title { padding-left: 10px; font-size: 18px; font-weight: bold; line-height: 2.3em; float: left; } /* フッター:フルスクリーン切替え表示ボタン */ #lng-fullscreen-btn { width: 36px; height: 36px; float: right; background-image: url(wp-content/uploads/visual-novel/TemplateData/lng-fullscreen-btn.png); background-repeat: no-repeat; } /* フッター:フルスクリーン切替え表示ボタン*/ /*(マウスオーバー時)*/ #lng-fullscreen-btn:hover{ cursor : pointer; background-image: url(wp-content/uploads/visual-novel/TemplateData/lng-fullscreen-btn-hover.png); background-repeat: no-repeat; }
埋め込み先の WordPress 記事にフルスクリーン表示を実行する JavaScript を用意するのですが、記事の中に直接コードを書くとスッキリしないので JavaScript を外部ファイルとして読み込む形式にしました。
外部読み込みの JavaScript ファイルのコードはこのようになりました。
// ID "lng-fullscreen-btn"の要素をクリックしたときの処理 document.getElementById("lng-fullscreen-btn").onclick = function () { // ID "lng-iframe"の要素(iframe)内の関数 fullscreen() を実行 document.getElementById("lng-iframe").contentWindow.fullscreen(); }
コードが完成したら編集用のファイルとは別にして、改行とコメントと改行をすべて削除してからファイル名”lng-fullscreen.js”で保存。実際使用しているコードはこのように1行になっています。
document.getElementById("lng-fullscreen-btn").onclick = function () {document.getElementById("lng-iframe").contentWindow.fullscreen();}
いよいよ仕上げです。WordPress の記事内に書く内容は次の通り。iframe 要素の属性にはフルスクリーン表示を許可する allowfullscreen を書いておく必要があります。フルスクリーン表示を解除するとゲーム画面サイズがおかしくなるのを防ぐために scrolling=”no” の属性も追加しています。
とうわけで、長々と手順を紹介してきましたが、完成したのがこちら。
ゲーム画面右下のアイコンでフルスクリーン表示に切り替え、Escキーでフルスクリーン表示の解除。左下にあるラノゲツクールMVのロゴをクリックすると公式ページが開きます。
プレイ時間は1分程度。サウンドありです。
別ウィンドウでプレイする場合はこちら
今回はタイトル画面のロゴ作成に、とある櫻花の画像生成(ジェネレーター)- とある風画像を自動生成 を使用させていただきました。
前回の記事で紹介したゲームもフルスクリーン表示対応に変更しました。