Hatena::ブログ(Diary)

RPGツクールMVアンテナ

 

2015-11-03

バグレポートのやり方が(英語サイトだから)わからない

英語の成績が赤点とるくらい酷い状態だったので、
海外の公式のサポートコミュニティにエラーレポートするのに
以下のような文章や文体でいいか添削して欲しいの

お時間あるなら、どこのスレッドに投げればいいのか?新規スレッド立てていいのかあたりのご助言をもらえると凄くたすかるの
http://forums.rpgmakerweb.com/index.php?/forum/129-rpg-maker-mv/

いくつかの m4a ファイルに設定されているループラベルが間違っている。
調査した結果、次のリストのように修正する必要があると考えます。

Is wrong looptag contained in some m4a files.
In my check the data , I think it should be fixed as shown in the following list .

03_Battle_Against_the_Demon
  LOOPLENGTH NG: 211691
  LOOPLENGTH OK: 2116691
03_Fountain_of_Solace
  LOOPLENGTH NG: 3810212
  LOOPLENGTH OK: 3910212
03_Otherworldly_Corridor
  LOOPLENGTH NG: 253598
  LOOPLENGTH OK: 2532598
03_Party_at_the_Royal_Palace
  LOOPSTART NG: (lost)
  LOOPSTART OK: 0
  LOOPLENGTH NG: (lost)
  LOOPLENGTH OK: 2848199
Field2
  LOOPSTART NG: (LOOPLENGTH bug.)
  LOOPSTART OK: 23
  LOOPLENGTH NG: 23;3175160
  LOOPLENGTH OK: 3175160
Town3
  LOOPSTART NG: 469746
  LOOPSTART OK: 769746

2015-11-02

ブログ移転準備中

本格的に記事を書こうと思うので、独自ドメインをとって専用サーバを準備しています。

プラグイン情報などある程度コンテンツが揃い次第公開します。

引き続き、こちらではプラグイン開発で判明したことなどをまとめていきます。

2015-10-31

m4a ファイルへのループ情報タグの入れ方

コマンドラインで変更できるツールはまだ見つからず

有名な音楽プレイヤーである foobar2000 の機能で確認も変更も追加も想定通りできました。

f:id:tkoolmv:20151031225815j:image

引き続き、定評があるかオススメの AACエンコーダをご存知の方は教えてください。

https://twitter.com/tkoolmv_helper

Now Loading 中は何を待っているのか?

Now Loading... で待ちが発生している部分を解析してみた

まずタイトル画面が表示されるまでに時間がかかっているのはフォント

フォントが終わるとタイトル画面が表示される

タイトル画面からゲームを始めると次はマップチップ。

マップチップのロードががおわるとゲーム開始。

戦闘が始まると、ロードが始まるのが戦闘背景(上下2枚)

それぞれがロード完了するまで、Now Loading が表示される。

ちなみにサウンドはロードが完了しなくても処理は進み、ロード完了時点で再生が始まる。


解決方法

フォントはサブセット化(使っている文字だけに限定してファイルを作り直し)と OpenType化。

BGMは再エンコでのサイズ縮小。一個前の記事参照。

画像は OptiPNG などの最適化(使わない情報を抜く、時間をかけて圧縮を最適化
……の予定があまり効果がなかった。
マップチップ画像はスプライトシートなので、使われない部分を削るとゴリゴリ縮小できそう。
データの解析必要だけど、いずれこれも作らなきゃ。

みたいな感じです。

Oggファイルの再エンコード

RPG MAKER MV に同梱されている Ogg 形式のファイルはビットレートが 512kbps という普通ありえないパラメータに設定されてる。
本来は 128kbps でほぼ音質劣化の聞き分けができないとされているので、再エンコードすることで単純にファイルサイズが25%まで縮小される。
但しツクール用素材の各 Ogg ファイルの内部にはループ制御用のタグが格納されているので、その情報の書き戻しをする必要がある。

使うツール

Oggデコーダ (Ogg形式をWAV形式に変換)
http://www.rarewares.org/ogg-oggdec.php#oggdec
Oggエンコーダ (WAV形式をOgg形式に変換。aoTuVは特に音質が良いとパラメータ調整されているバージョン)
http://www.rarewares.org/ogg-oggenc.php#oggenc-aotuv
Oggの内部情報を読み書きするツール
http://www.rarewares.org/ogg-tools.php#vorbiscomment

処理するする内容

・例として、デプロイされた配布パッケージの中の audio\bgm\Battle2.ogg の音源ファイルを変換する。
・変換プログラムは audio フォルダ以下にコピーして、コマンドプロンプトで当該フォルダに移動してから以下を実行すればよい。
中間ファイルとして作成する temp.wav と temp.txt は、変換が終わったら削除してもよい。

ループ制御タグのデータをファイルに書き出す

vorbiscomment.exe -l bgm\Battle2.ogg -c temp.txt

Ogg形式からWAVE形式に変換(ファイルサイズは約2.5倍)

oggdec.exe bgm\Battle2.ogg -w temp.wav

WAVE形式を改めてOgg形式に変換(いわゆる再エンコ

oggenc.exe temp.wav -o bgm\Battle2.ogg

Oggファイルにループ制御情報を書き戻す

vorbiscomment.exe -w bgm\Battle2.ogg -c temp.txt

開発時はなるべくオリジナルで調整するべきなので、デプロイメントされたファイルを実際に配布する前に変換することを推奨。
効果音ファイル(se)などは元々データが小さい上に実データがシンプルなため、高ビットレートで圧縮しても実ビットレートは非常に小くなっているものがほとんどなので変換しなくても問題はない。

そのうち一括変換するツール作る予定。
m4a形式については改めて調査します。誰かオススメのAACエンコーダ教えて下さい。

https://twitter.com/tkoolmv_helper

2015-10-29

シーン管理方法

マップ画面から戦闘画面に入る。
戦闘終了からマップ画面に戻る。
マップ画面からメニューを呼び出す。

諸々の処理の仕方がわかってきました。

ボタンを追加する方法をおぼえた!

var QuickMode = false;
var createUpper = Spriteset_Battle.prototype.createUpperLayer;
Spriteset_Battle.prototype.createUpperLayer = function() {
	createUpper.apply(this, arguments);

	var button = new Sprite_Button();
	button.bitmap = ImageManager.loadSystem('Balloon');
	button.x = 10;
	button.y = 10;
	button.visible = true;
	this.addChild(button);

	var animCount = 1;
	button.updateFrame = function() {
		if (QuickMode) {
			if (++animCount >= 8) {
				animCount = 1;
			}
			button.setFrame(animCount * 48, 2 * 48, 48, 48);
		}
	}
	button.setFrame(1 * 48, 2 * 48, 48, 48);

	button.setClickHandler(function () {
		QuickMode = !QuickMode;
		if (QuickMode == false) {
			button.setFrame(1 * 48, 2 * 48, 48, 48);
		}
	});
}

var launchBattle = Scene_Map.prototype.launchBattle;
Scene_Map.prototype.launchBattle = function() {
	launchBattle.apply(this, arguments);
	QuickMode = false;
}

2015-10-28

プラグインパラメータの書き方

/*
 * @param int Key Name
 * @desc パラメータの説明
 * @default 1
 *
 * @param bool Key Name
 * @desc パラメータの説明
 * @default false
 *
 * @param str Key Name
 * @desc パラメータの説明
 * @default initial string
 */

var parameters = PluginManager.parameters('__FILE__');
var intValue  = Number(parameters['int Key Name'] || 0);
var boolValue = Boolean(parameters['bool Key Name'] === 'true' || false);
var strValue  = String(parameters['str Key Name']);
 
Connection: close