RPGツクールと数学のブログ

RPGツクールと数学についてのブログです。

ピクチャ主体のゲーム作成ツール(基礎編6/6)(RPGツクールMZ)

ニコ生ゲーム出力

このツールを用いて作成したゲームは、ニコ生ゲームとして出力することも可能です。ニコ生ゲーム出力するには、ツールに同梱した「ニコ生ゲーム出力プロジェクト」を使用します。また、事前にAkashic Engineをインストールする必要があります。AkashicEngineのインストール方法は以下の記事に記載されていますので、インストール作業完了まで進めてください。

akashic-games.github.io

素材ファイルのコピー

ニコ生ゲームのプロジェクトは、projectフォルダをコピーして作成してください。まずは、これまで作成していたRPGツクールMZ側のプロジェクトデータから、ニコ生ゲーム側のプロジェクトデータへ、素材ファイルをコピーしてきてください。

  • audioフォルダ内のbgm, seフォルダ内のデータをそのまま全てコピー*1
  • img\picturesフォルダ内の画像をimageフォルダにそのまま全てコピー

ニコ生ゲーム設定

ニコ生ゲーム生成するためには、ニコ生ゲーム用の設定をRPGツクールMZ側に追加する必要があります。まず、ゲーム進行役の1ページ目に次のスクリプトを追加します。

// ニコ生ゲーム参加フラグ

global.joined = true;

これは、「ニコ生ゲームに参加している」ことを表すフラグです。このフラグがtrueになっている場合に、変数13番の値をスコアと見なして、ニコ生ゲームの得点とします。普段は常にtrueでいいですが、参加したくないのに得点が得られてランキングに載るのを防ぎたい場合、これがfalseになるような仕組みを入れてあげる必要があります。(最初は特に気にしなくて構いません)

そして、ニコ生ゲーム設定のイベントを新規配置します。どこでもいいので、イベントを配置してください。

このイベントは、「★ニコ生ゲーム設定」というイベント名にしてください。なぜ★を付けるかというと、ニコ生ゲームプロジェクトが参照するために必要だからです(今までエントリーポイントに設定するものを★とすると説明してきましたが、実際には違う意味があります。詳細は応用編で説明します)。

1ページ目だけを設定します。スクリプトは4つ作ります(1つにまとめてもいいです)。

// 制限時間

this.limitTime = 30;

// ゲームのメインクラス

this.mainClass = global.ゲーム進行役;

// 画像素材(ファイルパスをキーとして、[分割数(横), 分割数(縦)])

this.images = [];

this.images["sample/baysuke"] = [3, 1];

this.images["sample/feather"] = [4, 1];

this.images["sample/back"] = [1, 1];

// 音声素材(ファイルパスをキーとして、[音声タイプ("music"/"sound")])

this.audios = [];

this.audios["hiyokonokakekko"] = ["music"];

this.audios["Blow1"] = ["sound"];

制限時間をニコ生用にも設定しておきます。30秒でしたので、30としてください。次に、エントリーポイントに指定したイベントは「ゲーム進行役」でしたので、ゲームのメインクラスの部分は「ゲーム進行役」としてください。

ニコ生ゲームで使用する素材については、ここで一覧化しておく必要があります。画像素材は、画像の数だけ次の文法で登録ください。

this.images[【ファイルパス】] = [【分割数(横)】, 【分割数(縦)】];

今回使った画像はすべてsampleフォルダ内のものだったのでsample/から始まっていますが、直に置いた画像を使うときはそのままファイル名だけでいいです。また、画像の分割数もここで設定しておく必要があります。ベイ助の画像は横に3分割でしたので、[3, 1]と書きます。ハネの画像も実は横に4分割した画像だったので、[4, 1]と書きます。背景は分割がないので、そういうものは[1, 1]とします。

音楽素材は、次の文法で登録してください。

this.audios[【ファイルパス】] = [【BGMなら"music"、効果音なら"sound"】];

BGMか効果音かで、"music"または"sound"になります。

以上で設定完了です。

ニコ生ゲーム出力コードの生成

RPGツクールMZ側で、ニコ生ゲーム出力用のコードを生成します。サンプルプロジェクトには、すでにニコ生ゲーム出力の処理を組み込んでいます。

エントリーポイントの下の図の位置に、スイッチの操作命令を追加してください。スイッチ1番「ニコ生ゲーム出力中」をONにします。

これでテストプレイしてみると、このようにテキストボックスが表示されます。このテキストが、ニコ生ゲーム出力用のコードです。これをすべてコピーしてください。テキストボックス内をクリックしてCtrlキーを押しながらAを押すと全選択できるので、その後 右クリックしてコピーすればよいです。

コピーしたら、ニコ生ゲームプロジェクトのscript\module.jsをメモ帳等で開き、そこに貼り付けて保存してください。(最初は空っぽのファイルになっているはずです)

フォント作成

ニコ生ゲームで使用される文字列は、すべて画像として用意する必要があります。ただ、使われる可能性のない文字もすべて用意してしまうととても重いですから、ちょっと面倒ですけど実際に使われる可能性のある文字だけを選別して画像を作った方が良いです。

この操作は、文字列を使わないゲームでも必要です。

ニコ生ゲームプロジェクトのフォント作成というフォルダの中に、chars.txtという空ファイルがあります。そこに、使用される文字を書き並べていきます。

今回のサンプルゲームでは、制限時間・得点表示の0~9の数値と、得点表示の末尾にある「点」という文字だけですから、「0123456789点」などと書いておきます。

文字列を使わないゲームの場合でも、何か適当な文字を入力して適当なフォントを作るようにしてください。

フォントを生成するには、フォントファイル(ttf)が必要です。フォントファイルを、chars.txtが格納されているフォルダと同じところにコピーします。

フォントは何でもよいですが、サンプルゲームでは以下サイトから拝借して使用していますので、よければダウンロードください。

www.fontna.com

「07やさしさゴシックボールド.ttf」を、フォント作成フォルダの中にコピーします。

そして、フォント作成を行います。以降はコマンドプロンプトまたはPowerShellを用いて操作していきます。図のように、ニコ生ゲームプロジェクトのフォルダ直下でShiftキーを押しながら右クリックし、「PowerShellウィンドウをここで開く」を選択ください。うまくいかない場合は、別の方法でコマンドプロンプトPowerShellを起動ください。(説明はネットのどこかに書いてると思います)

PowerShellが開いたら、まずはセキュリティの実行ポリシーを変更します。以下のコマンドをコピーして、PowerShell上で右クリックをしてみてください。右クリックするだけで貼り付けられると思います。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

コマンドをコピーしたらEnterで実行です。以下の表示がされると思うので、yと押してEnterしてください。

これで、フォント作成やニコ生ゲーム生成などのコマンドが使えるようになります。次に、以下のコマンドをコピーしてEnterしてください。done!と表示されると、フォント作成フォルダにファイルが増えていると思います。

bmpfont-generator フォント作成\07やさしさゴシックボールド.ttf フォント作成\font.png -f フォント作成\chars.txt -H 144 -S '#555555' -F '#ffffff' --stroke-width 8

これは、先ほどダウンロードしたttfファイルを使ってフォント作成をするコマンドです。その他のフォントやオプションも、ここの値を色々かえることで出来るのですが、割愛です。詳細は以下を参照ください。

akashic-games.github.io

フォント作成フォルダに、「font.png」と「font_glyphs.json」という2つのファイルができていますので、「font.png」はimageフォルダ直下へ、「font_glyphs.json」はtextフォルダ直下へ移動してください。これでフォントの準備も完了です。

ニコ生ゲームの素材と設定の更新

最後に、ニコ生ゲームの素材設定をします。

PowerShell上で以下のコマンドを入力してEnterしてください。(セキュリティのエラーが出る場合はフォント作成のところに書いたように、まず「Set-ExecutionPolicy」を実行する必要があります)

akashic scan asset

このコマンドを実行すると、素材の登録が行われます。INFO: Done!と表示されたら成功です。ファイル名が被るものがあったりすると、エラーではじかれます。ファイル名は被らないようにしてください。

すると、プロジェクトフォルダ直下のgame.jsonというファイルが更新されていますので、これをメモ帳等で開いてください。登録した素材が列挙されていると思います。

ここで、BGM素材は"sound"→"music"に変更します。これは手作業しないといけないので注意してください。

また、game.jsonの末尾にトータルの起動時間を入力するところがありますので、そこの値を入力しておく必要があります。これは、ニコ生ゲームが起動している最大時間の目安です。制限時間30秒のゲームですが、実際にはラグなどで少し遅れる可能性もあるので、30秒より大きい値を入力してください。+15で45秒としておくのがいいでしょう。"totalTimeLimit"の横の数値を変えます。

以上で設定完了です。

ニコ生ゲームのシミュレーション

ニコ生ゲームの動作を、手元の環境でシミュレーションすることができます。

PowerShell上で以下のコマンドを実行してください。

akashic-sandbox

これは、シミュレーション可能状態になったことを意味します。解除するときは、Ctrlキーを押しながらCを押します。

シミュレーション可能状態になっているときに、インターネットブラウザを開いてURLに以下を入力すると、シミュレーションが開始します。

http://localhost:3000/game/

正しく設定されていると、シミュレーション画面が開きます。

ここできちんと動作するようであれば、ニコ生ゲームとしても正しく動作すると思います(得点がランキングに反映されるかどうかだけは分からないので、この先の検証が必要)。

ニコ生ゲームの公開

ニコ生ゲームを完成版にして、公開までしていきましょう。なお、サンプルで使われている画像素材についてはフェルミウム湾が作成したものですが、使ってそのまま公開頂いて構いません。ただ、著作者を偽ることだけは避けてください。

PowerShell上で以下のコマンドを実行します。

akashic export html --output output --atsumaru

ただ、フォルダパスが長かったり日本語名が含まれていると、失敗することもあるようです。何回か試していただくか、別のフォルダにコピーして再トライしてみてください。

成功すると、INFO: Done!と表示され、outputフォルダが生成されています。このoutputフォルダをzipフォルダに圧縮すれば、これがニコ生ゲーム公開用ファイルになります。

ニコ生ゲームを投稿するには、ニコニコ動画のサービスにアカウント登録して、以下のサイトから投稿をしてください。画面に従ってzipファイルをアップロードすればよいです。

https://namagame.coe.nicovideo.jp/

動作確認をしたい場合は、非公開に設定してください。また、ニコニコ生放送の放送ネタとして選択しないと実行できないので、ニコニコ生放送のリンクから非公開の放送を開始してください。

ニコ生ゲームを作成されるという方であれば、ニコ生のことはある程度ご存じかと思うのですが、放送するためには何らかのコミュニティを作っておき、そのコミュニティ上で放送、という仕組みをとらないといけません。そのため、初めて放送される方は、まずはコミュニティを作成してください(テスト用の非公開コミュニティももちろん作成可能です)。

com.nicovideo.jp

コミュニティを作成したら、「このコミュニティで生放送をする」を選択できるので、そこから生放送を開始してください。コミュニティ限定で放送と設定しておけば、誰も入ってこないので、テストが可能です。

放送ネタの追加で、「自作ゲーム」タブから自分のゲームを探してください。非公開の放送ネタは、放送者が自分の場合に限り、自分のゲームを起動できます。

自分のゲームがニコ生で遊べるようになると、やはり楽しいものです。

得点がランキングに反映されていることを確認してください。反映されていない場合は、変数13番にスコアを代入する処理が抜けているか、global.joined = true; が漏れているかのどちらかかと思います。

以上で基礎編は終わりです。長らくお付き合いいただきありがとうございました。これで最低限一通りのことは出来るようになるかと思いますので、色々試してみてください。また、「ベイ助のミニゲームコレクション」はサンプルゲームですので、自由に加工していただいて問題なく、加工したものをゲームとして公開頂いても構いません。

次から応用編を書いていきます。基礎編ではとりあえず出来ることについてやり方の説明を書いていきましたが、応用編は、このツールがサポートしている機能について説明し、より便利な使い方をしていきます。

 

次の記事へ(まだ記事ができていません)

前の記事へ

TOPに戻る

*1:ただしbgsの扱いだけ不十分であり、使用非推奨です。使用する場合は、「ベイ助の日帰り温泉」を参照ください。