プラグイン制作/技術|雑談

リューイ

ユーザー
(5/13:スレッドタイトルを変更しました)

ツクールでゲーム制作に慣れてくると、
更にクオリティを高める為のプラグインは欠かせない存在です。
そこで、こんな方々に向けてスレッドを立ててみました!

*自力でプラグイン制作してみたいけど、●●が全然分からない。:uswt:
*いつもプラグインを借りているが、そろそろ自分でも作りたい。:yswt:
*既にプラグイン制作をしているが、なかなか上達しない。:rswt2:


プラグイン制作に対するモチベ向上を皆さんで目指しましょう!
入門者~プラグインマスターまで誰でも書き込みOKです:kaopride:

◆制作したプラグインはコチラで発表しよう
【素材/プラグイン交換⇒ツクールMV向け】

プラグインについてのQ&Aはコチラ
【Q&A⇒素材集/プラグイン】

◆ゲーム制作の本格的な雑談はコチラ
ゲーム制作/☆ゲーム制作*雑談☆

■お役立ちリンク集
・プラグイン編
http://tkool.jp/mv/guide/011_001.html
from.RPGツクールMV 初心者講座

・『RPGツクールMV』で、一人でも多くの人がプラグインを自作できるようになる記事
http://lucky-duet.com/archives/2273
from.ゲーム研究の弓猫チャンネル

超初心者的ツクールMVプラグインの使用方法~導入編~
http://ossangame.com/plugin_dounyuu
from.プログラミング素人がゲームを作る

超初心者的ツクールMVプラグインの使用方法~活用編~
http://ossangame.com/plugin_katuyou
from.プログラミング素人がゲームを作る

・初心者ツクラーの為のJavaScript入門
http://tomotaka.tk/tkoolmv-javascript-studybooks/

from.トミタカラボ

・ツクールMVでプラグインを作るための現実と作法

https://triacontane.blogspot.jp/2016/10/mv.html
from.Delusional Field(トリアコンタン様のサイト)
 
最後に編集:
手前味噌で恐縮ですが、こちらもリンクに加えさせてください。
なにしろ、「プラグインを作るなら、コアスクリプトの理解が必須」だからです。

https://forum.tkool.jp/index.php?threads/コアスクリプト解読で分からない部分を話し合いましょう.91/
プラグイン作成の為の、スクリプト解読の最初の一歩など、
初心者向けアドバイスもスレッドのトップに書いているため一読の価値ありです。

プラグイン作成時の、コアスクリプト関連のややこしい質問にも、可能な限りお答えできると思いますし、
こちらのスレッドではそれ以外の話題も、もちろん受け付けます。
お役に立てれば幸いです。
 
最後に編集:

ツミオ

ユーザー
プラグインを制作していると、画面に簡単な図形を描きたくなるときもあるかと思います。
そんなとき、以下のサイトの情報が非常に役に立ちました。
http://www.html5.jp/canvas/index.html

例えばimage_20170512_193223.png この画面ですが、上部の円形でくり抜く処理なんかは全て上記のサイトを参考に作りました。
わざわざ画像を用意する必要がないほど単純な図形なら、ぜひ参考にしてみてください。

(他にもっとよい図形の描き方があればぜひ教えてください)

【ここからはあまり関係のない話】
僕はコンピュータの技術に明るくないのですが、ツクールMVのBitmapクラスも内部的には上記のサイトで解説されていることと同様の処理をしているのかな? と思いました(実際、色々試したところほぼそのまま使えたので)。
どなたか詳しい方がいらっしゃいましたら、実際のところどうなっているのか教えていただけませんでしょうか?(たまたま使えただけだったりして……)。
 
>ツミオさん、こん**は。
ツクールMVのBitmapクラスも内部的には上記のサイトで解説されていることと同様の処理をしているのかな? と思いました(実際、色々試したところほぼそのまま使えたので)。
どなたか詳しい方がいらっしゃいましたら、実際のところどうなっているのか教えていただけませんでしょうか?(たまたま使えただけだったりして……)。

はい、ずばりツクールMVのBitmapクラスも、HTML5のcanvasを使って実装されています。
(※注:このあたり、rpg_core.js 以下があやふやな僕なので、
 WebGLモードの時もそうなのかは、分かりません。これは詳しい方の回答を待ちたいですね)
だから、上記サイトで出来ることは、確かに出来てしまいますね。
ただ「出来る」けれど、このあたり(DOMとかHTML5とか)がまだまだ不慣れな僕、
「それが出来ることで、どれだけ便利になるか」までは知りませんでした。
ツミオさんの紹介を拝見して、目から鱗です。動的に円グラフが描けるなんて言うのは、大変魅力的ですね!

ツクールMVの可能性をさらにさらに感じさせてくれてくれますね!
 

ツミオ

ユーザー
神無月サスケさん。
お返事ありがとうございます。
やっぱり二つは同一のものだったのですね。

「ステータスを表示するときに円グラフで~」なんてのもできそうで、ちょっぴり面白そうですよね(もうプラグインでありそうですが!)。
もう少し早くcanvasを知っていたらスコア画面なんかで活躍できたのになあと残念でなりません。
 

ツキミ

ユーザー
>ツミオさん、こん**は。


はい、ずばりツクールMVのBitmapクラスも、HTML5のcanvasを使って実装されています。
(※注:このあたり、rpg_core.js 以下があやふやな僕なので、
 WebGLモードの時もそうなのかは、分かりません。これは詳しい方の回答を待ちたいですね)
だから、上記サイトで出来ることは、確かに出来てしまいますね。
ただ「出来る」けれど、このあたり(DOMとかHTML5とか)がまだまだ不慣れな僕、
「それが出来ることで、どれだけ便利になるか」までは知りませんでした。
ツミオさんの紹介を拝見して、目から鱗です。動的に円グラフが描けるなんて言うのは、大変魅力的ですね!

ツクールMVの可能性をさらにさらに感じさせてくれてくれますね!

神無月サスケさん、こんにちは。

このスレの本来の趣旨とは離れたことになりそうですが……

Bitmapの中はcanvasの他、_baseTextureというオブジェクトがあり、生成時に引数としてcanvasを受け取るということになっています。そしてこの_baseTextureこそ本当に描画されるオブジェクトです。
この時、canvasの役割は画像のピクセルデータを保存するコンテナになり、実際描画される時に
renderer↔_baseTexture↔canvas
と_baseTextureが仲介役になっているので、rendererがwebGLモードであろうと2Dモードであろうと使用されるものはcanvasになるのです。

つまりまとめますと、WebGLモードでもcanvasが使われてるのです!(上手く説明できなくて話が長くなってすみません><)

この機能がありますから、PIXIは2Dゲーム描画に強いです~
 
最後に編集:
>ツキミさん、こん**は。
神無月サスケさん、こんにちは。
つまりまとめますと、WebGLモードでもcanvasが使われてるのです!
この機能がありますから、PIXIは2Dゲーム描画に強いです~
非常に有益な情報ありがとうございます!
丁度僕の苦手分野だったところを、助けてくれてありがとうございます!

これまでいろんなプラグインを作ってきましたが、ほとんどrpg_core.js 以下には手を付けずに来ました。
Bitmap の中身を解析していたら、知らない関数が出てきて、調べたらHTML5の関数だったとか、
他にもPIXI.jsのものと思しきものもあり、概要を見て諦めておりました。

さすがにPIXI.js は、バージョンアップごとにサイズが大きくなっていて、細かい解析は諦めてますが、
せめて、DOMとHTML5(主にCanvas)くらいはもう少しマスターして置かないと、
太刀打ちできなくなるかも……と思っているので、可能な限り、そのあたり勉強します。

そう思っていた矢先に、繰り返しになりますが、有益な情報、ありがとうございます!
 
最後に編集:

しんぞ

ユーザー
CSSのfont-familyで規定値として扱われている"sans-serif"と"serif"は
ツクールでも有効なんでしょうか?

HTML + CSSという組み合わせでフォントを変更する際は、
上記の二つをfont-familyに指定すると
ブラウザが、端末に内蔵されているゴシック体やセリフ体から
一つ選択して表示させてくれるのですが、
同様の挙動がツクールでも使えると
「作中で1箇所だけsans-serif体を使いたい、プレイヤーの端末にあるものでよいから」
という時に容量を削減できて助かるのですが…

とりあえずsans-serifで試してみたらgamefontとは別のサンセリフ体で表示されたのですが、
これ、単に「該当のフォントがないのでフォールバックとしてありもののフォント使いました」ってことだとしたら…?
 

しぐれん

ユーザー
MV内のDataフォルダに格納されるデータに対して、ゲームを実行しながら編集してそれを保存することは可能ですか?
配布するゲーム中でデータベースなどを編集したいのではなく、ビルド前処理として行ってみたいということです。
 

しんぞ

ユーザー
指定したフォントはBitmapクラス内でcontext.fontプロパティとして使用されます。

参考
http://www.htmq.com/canvas/font.shtml

なので、sans-serif指定はツクールでも有効です。
ありがとうございます! これでスッキリしました。
serifはスマホでは内蔵されてないことも多いので使いづらいですが、
sans-serifはいけそうですね!
 

トリアコンタン

モデレーター
スタッフ
モデレーター
MV内のDataフォルダに格納されるデータに対して、ゲームを実行しながら編集してそれを保存することは可能ですか?
配布するゲーム中でデータベースなどを編集したいのではなく、ビルド前処理として行ってみたいということです。

ローカル実行中であれば可能です。
StorageManager.saveToLocalFileなどを流用して保存メソッド作成するのがいいかと思います。ただし以下について留意する必要があります。
  1. Base64エンコーディング(LZString.compressToBase64)を行わない。
  2. 保存先のパスが異なる。
また、編集に失敗するとデータベースが壊れる可能性があるのでバックアップは必須となります。
 

枢おとめ

ユーザー
【制作依頼】
スレッドを建てるかどうが少し迷いましたが、一度ここに書かせて頂きます。
必要があれば新規スレッドを建てて移行致します。


■概要

自作ステータスの確認画面についてです。
デフォルトのステータスではなく、変数にATK等を格納してステータスとして使っています。

現在トリアコンタンさんの動的ピクチャ生成プラグインを使って無理やり表示させているのですが、
一度表示する為にピクチャを40~50枚くらい使ってしまう上に、読み込みにより動作も重くなるため、
どうにかしてプラグインでウィンドウとして表示させるものを用意したいです。
説明不足な部分もあると思いますので、必要な部分があれば公開させて頂きます。

自分で仕様等を理解して制作するのが一番なのでしょうが、まだまだ自分のJS技術が未熟故、
全く手のつけられない状態なので、今回は制作依頼とさせていただきます。
ゲームデータの一時受け渡しも可能です。どなたかご助力頂けると幸いです。


■謝礼について
可能なことはゲームのテストプレイやイラストの制作くらいですが、
できる限りのことをしたいと思っています。
もちろん必要ない場合でも構いません。


image_20170506_091719.png

添付画像はウィンドウがついていますが、ただそういう画像を用意して表示しているだけです……。
 

しぐれん

ユーザー
私も調べている最中ですが、ウィンドウ内の文字表示はWindow_base.drawTextExで処理されているようです。
イベントコマンドの「メッセージの表示」はこの関数を呼び出しており、これの内部で色を付けたり改行したりしているようです。
なので、これを調整すれば行けそうですね。
また、Window_baseにdrawActorとかがあった気がします。
 

尾角つの

ユーザー
プログラミングあまり上手くないので質問させてください。

ふと思ったことなのですが、Rubyの書き方に比べると、MVの書き方って
(クラス名).prototype.(関数) = function() { (内容) };
という感じに、prototypeの度に同じクラス(?)名を何度も読み出すようになってるのですが、Rubyに慣れていたせいで、少し違和感感じてます。
なので自作のクラスを作るときに、

ClassName = function(_super) {

// クラスの作成
function _class() {
this.initialize.apply(this, arguments);
}

// クラスの継承
_class.prototype = Object.create(_super.prototype);
_class.prototype.constructor = _class;

// クラスの初期化
_class.prototype.initialize = function () {
_super.prototype.initialize.call(this);
~~~;
};

// 関数A
_class.prototype.functionA = function() {
~~~;
};

~~~;

return _class;
}(SuperClass);

の様な感じに、_class (と 親クラス:_super)でまとめちゃったほうが良いかなと思ったのですが、この書き方ってなにかやばかったりするんでしょうか?
書式は個人の好き好きだと思うのですが、同じ関数名を再定義したいときとかに、コピペしてクラス名変更し忘れしたりとかないかなと思ったのですが、どうでしょうか?

追記:またコードミスが……(汗)ちょっと修正
prototypeを記述も面倒なので
var _def = _class.prototype;
var _superDef = _super.prototype;
もクラス継承の後に入れようかとも考えたりもしてます。

もしかして、この書式だと、ModuleXXX.ClassAAA みたいなクラスの作り方もできたりします?
 
最後に編集:

枢おとめ

ユーザー
>枢おとめさん

こういう汎用的にステータス画面を改造するプラグインを作っています。
「アクターのステータス欄の表示を変更する」

もう少し詳細な仕様を教えていただければ、専用にカスタムすることはできます。

カスタムパラメータのほうで変数を使用できるようですね!
拡張プラグインのFTKR_CSS_DetailedStatusも併せて使用させて頂ければ
考えているものにかなり近いものが実装できそうなので、試してみたいと思います。
ご助力感謝いたします!
またどこかで詰まったら来ます……。
 
トップ