ASCIIアートフィルターを試す

すごい用途に困るフィルターを見つけた。これ。よく見て欲しいんだけど、全部ASCIIアートになる。

導入方法はまず、Githubのpixi.jsにあるpixi-filtersレポジトリからfilters.jsをダウンロードする。
下記URLのbin/filter.js がそうです。
https://github.com/pixijs/pixi-filters/tree/publish
これをMVのプラグインフォルダに放り込む。
そして、スクリプトコマンドから下記を実行すれば実現する。

1
2
var filter = new PIXI.filters.AsciiFilter();
SceneManager._scene.filters = [filter];

まあ、ここまではネタなんだけど、まじめな話、フィルターはいろいろあって使えそうなのもある。
ここここで試せるフィルターは実装すれば使えるはず。
特に今、必要としてないから試さないけど・・・。

全てのアイテムを取得するプラグイン

デバッグ用で、ゲーム開始時に全てのアイテム、武器、防具を取得済みの状態で始めたかった。
探せばあるような気がするんだけど、探しても見つからなかったのでプラグインを制作した。

下記からダウンロードできます。
https://raw.githubusercontent.com/kido0617/rpgmakerMV-plugin/master/GetAlIItems/GetAllItems.js

プラグインコマンドで以下のようにして使う。
それぞれ全アイテムを99個獲得、全武器を1個獲得、全防具を10個獲得の意味。

1
2
3
GetAllItems item 99
GetAllItems weapon 1
GetAllItems armor 10

こんな感じにゲーム開始時にそれぞれ取得するように書いておけば、全所持状態から開始できる。

ライセンス

MIT
自由にご利用ください。

TweenプラグインのTorigoya_Tween.jsが便利

ウィンドウをアニメーションさせたく、updateメソッド内でちまちま動かしていた。
しかし、さすがに汎用性に欠けるし、コードが複雑になりすぎる。
jQueryのanimateメソッドみたいな、UnityでいうiTweenみたいなプラグインないかなと思っていたら、まさにそのとおりのがあった。
鳥小屋.txtさんのTorigoya_Tween.jsだ。

例えば、以下のようなスクリプトでこんな感じのアニメーションができる。

1
2
3
4
5
6
7
8
9
10
11
var height = 200;
var window = new Window_Base(0, Graphics.height, Graphics.width, height);
window.opacity = 0;
SceneManager._scene.addWindow(window);
var toY = Graphics.height - height;
Torigoya.Tween.create(window)
.to({y: toY - 20, opacity: 255}, 15, Torigoya.Tween.Easing.easeOutSine)
.to({y: toY}, 5, Torigoya.Tween.Easing.easeInSine)
.wait(60)
.to({opacity: 0}, 60, Torigoya.Tween.Easing.linear)
.start();

超便利。すばらしー。

easingがどんなのかわからないときは、ここが参考になる。

マップの表示順を替える

これを見て欲しい。

開発途中までやって、「あ、オープニングのマップ作らなきゃ」と思い、追加した図である。
なんていうか、オープニングなんだから管理的に上の方にあったほうが自然だ。順番を変えようーと思い、ドラッグしても変更できない。
正確には最後尾に持ってくることはできるが、思い通りの位置に挿入とかはできない。
あきらめかけたけど、この順番、実はjsonファイルに記載されている。
data/MapInfos.json を開くと、それぞれのマップ名(name)とかが記載されているが、そこにorderがあるのが見える。
この値の小さい順に並んでいるのだ。なので、このorderの値をいじればマップの表示順を変えることができる。
変えたあとは、ツクールを再起動しなおす必要がある。
注意しないといけないのは、再起動するとき、「ゲームへの変更を保存しますか?」で「はい」を選択すると、変える前の値でMapInfos.jsonが上書きされてしまう。
なので、一度ツクールプロジェクトを保存してから、MapInfos.jsonのorderをいじって、ツクールを再起動しなければならない。

MapInfos.jsonだが、ちゃんとjson形式のファイルになっていないと、「MapInfos.jsonが読み込めません」と起動できなくなるのでそこだけは気をつけてほしい。
自信がなければいじらないほうが良い。

独自のデータをセーブする

はじめに

ツクールMVのセーブデータはjson。正確には以下のコードのようにLZStringライブラリを使って、Base64にしつつ圧縮している。

1
LZString.compressToBase64(json);

自分の好きなデータを保存したい場合、既にある$gameSystemとか$gameVariablesといった変数に付け足す方法がある。
デフォルトで入っているアイテム図鑑プラグインのItemBook.jsは$gameSystemを拡張して、アイテムの取得済みかどうかを保存している。以下のようにGame_System($gameSystem)に_itemBookFlagsを追加している。

1
2
3
Game_System.prototype.clearItemBook = function() {
this._ItemBookFlags = [[], [], []];
};

この方法でも問題ないが、がっつり独自のセーブデータを作った方がいいケースもある。その方法を解説する。

DataManagerを拡張

ツクールのセーブする変数は$gameで始まるのでそれにのっとる。今回は、$gameMyというのを作る。
必要なのは、初期化、セーブ、ロード、の3つ。
以下のような感じになる。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(function(){
window.$gameMy = {};
var _createGameObjects = DataManager.createGameObjects;
DataManager.createGameObjects = function() {
_createGameObjects.call(this);
$gameMy = new Game_My();
};
var _makeSaveContents = DataManager.makeSaveContents;
DataManager.makeSaveContents = function() {
var contents = _makeSaveContents.call(this);
contents.gameMy = $gameMy;
return contents;
};
var _extractSaveContents = DataManager.extractSaveContents;
DataManager.extractSaveContents = function(contents) {
_extractSaveContents.call(this, contents);
$gameMy = contents.gameMy;
};
function Game_My(){
this.saveSomething = "aaa"; //自由にデータを追加できる
}
})();

これでGame_My($gameMy)を通して自由にデータを追加して保存できる。